草庐IT

FPGA信号处理--多相滤波器(一)

秀逗了少年 2023-04-12 原文

多相滤波器(一)

文章目录


多相抽取器

Figure 3-26 显示了多相抽取滤波器选项,它实现了计算高效的 M 对 1 多相抽取滤波器

一组 N 个原型滤波器系数a0、a1…a(N-1)映射到 M 个多相子滤波器h0(n)、h1(n)…h(M-1)根据公式 3-1:

通过使用输入换向器将输入样本 x(n) 传递到它们的输入来访问多相段,该输入换向器从段索引 i = M - 1开始并递减到索引 0。在换向器执行一个周期并将 M 个输入样本传送到滤波器后,单个输出被视为多相段输出的总和。输出采样率 f1 为 f1 = f/M 其中 f 是输入数据流的采样率。

观察到每个多相段都在低输出采样率 f1 下运行(与高输入采样率 f 相比),每个输出点总共执行 N 次操作。

多相插值器(多相内插器)

Figure 3-27 显示了多相内插滤波器选项,它实现了计算效率高的1对P内插滤波器。

一组 N 个原型滤波器系数a0、a1…a(N-1)映射到 P 个多相子滤波器h0(n)、h1(n)…h(P-1)根据公式 3-1,如在抽取的情况下一样。

每个新的输入样本 x(n) 并行参与所有多相段。对于传递到滤波器的每个输入样本,P 个输出样本(每个段一个)被传递到滤波器输出端口,如图 3-27 中的换向器所示。

输出样本f1速率为 f1 = f*P ,其中 f 是输入数据流(n),n = 0、1、2…的采样率,观察以低输入采样率 f 运行的每个多相段(与高输出采样率 f1 相比) ) 并且每个输出点总共执行 N 次操作。

利用对称性的多相插值器

当从对称滤波器系数生成P个多相子滤波器时,并不是所有的子滤波器都包含一组本身对称的系数。相加和相减两个相应的非对称相位会产生两个包含对称系数的新相位。以下示例演示了此技术用于 15 抽头插值 3 的滤波器。滤波器系数 a、b、c、d、e、f、g、h、g、f、e、d、c、b、a 产生以下子滤波器:

子滤波器 h0 和 h2 不是对称的。产生以下子滤波器系数:

个人感觉官方文档的h0有问题,应该是h0 = a+c,d+f,g+g,f+d,c+a

现在 h0 和 h2 都是对称的,而 h2 是负对称的。现在可以利用对称性来实现滤波器,从而节省相关的资源。子滤波器 h0 和 h2 的输出必须相加和相减,然后按 0.5 倍缩放以产生原始滤波器输出。图 3-28 显示了生成的结构。

对于某些配置,需要额外的 DSP Slice 来实现相位的重组。
当使用奇数个对称系数进行 2 内插时,不需要该技术,因为生成的多相子滤波器是对称的。

系数填充

与一般的对称滤波器情况一样,如果滤波器抽头的速率和数量的组合导致子滤波器没有完全填充系数,则滤波器系数的重组会导致滤波器的相位响应发生变化。结果,脉冲响应移动了几个输出样本。在 14 抽头,插值 4 的情况下,将需要在系数响应的前面填充零系数以对齐相位,以便可以利用对称性,从而实现更小资源的实现,但这会导致不同的相位响应滤波器。避免这种响应变化的方法,如果你的应用系统不能适应这种变化,也类似于一般的对称情况;您可以强制实现非对称结构,也可以使用结构中可以支持的额外系数。图 3-29 显示了几个示例案例,并且可以扩展到更大的滤波器。

总结

本文是对xilinx fir IP相关章节的翻译及理解,最近到处找资料学习多相滤波器。

有关FPGA信号处理--多相滤波器(一)的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  4. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  5. ruby - 如何使用 Ruby HTTP::Net 处理 404 错误? - 2

    我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。

  6. ruby-on-rails - 使用 Ruby 正确处理 Stripe 错误和异常以实现一次性收费 - 2

    我查看了Stripedocumentationonerrors,但我仍然无法正确处理/重定向这些错误。基本上无论发生什么,我都希望他们返回到edit操作(通过edit_profile_path)并向他们显示一条消息(无论成功与否)。我在edit操作上有一个表单,它可以POST到update操作。使用有效的信用卡可以正常工作(费用在Stripe仪表板中)。我正在使用Stripe.js。classExtrasController5000,#amountincents:currency=>"usd",:card=>token,:description=>current_user.email)

  7. ruby-on-rails - Rails 处理 .Erb 与 Nils - 2

    当profile为nil时,总是让我感到悲伤...我该怎么办? 最佳答案 在View中使用变量之前,始终检查变量是否为nil。我确信这个问题有更优雅的解决方案,但这应该能让您入门。 关于ruby-on-rails-Rails处理.Erb与Nils,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2709605/

  8. Verilog使用inout信号的方法 - 2

    目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法  实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电

  9. ruby-on-rails - 如何在多个环境中处理 OmniAuth 回调? - 2

    我有一个应用程序专门使用Facebook作为身份验证提供程序,并正确设置了生产模式的回调。为了让它工作,您需要为您的Facebook应用程序提供一个站点URL和一个用于回调的站点域,在我的例子中是http://appname.heroku.com和appname。heroku.com分别。问题是我的Controller设置为只允许经过身份验证的session,所以我无法在开发模式下查看我的应用程序,因为Facebook应用程序的域显然没有设置为本地主机。如何在不更改Facebook设置的情况下解决这个问题? 最佳答案 创建另一个域l

  10. python - 请在 Perl 或 Ruby 中引入多处理库 - 2

    在python中,我们可以使用多处理模块。如果Perl和Ruby中有类似的库,你会教它吗?如果您能附上一个简短的示例,我将不胜感激。 最佳答案 ruby:WorkingwithmultipleprocessesinRubyConcurrencyisaMythinRubyPerl:HarnessingthepowerofmulticoreWhyPerlIsaGreatLanguageforConcurrentProgramming此外,Perl的线程是native操作系统线程,因此您可以使用它们来利用多核。

随机推荐