利用FPGA设计IIR多相滤波器

利用FPGA设计IIR多相滤波器

首先抱歉的是,最近一直在忙毕业和工作的事情,博客一直没有更新,所以就耽搁下来了,今天更新,新的一版的IIR多想滤波器设计。

前一篇已经大概描述了利用IIR滤波器的大概需求,这里对本设计的重点进行描述,以便让大家在设计的时候,尽量避免一些走入一些坑。

首先,说说为什么要设计多相滤波器吧。对于一些设计来说,信号的速率过高,比如有些信号的采样速率已经超过1GHz,需要进行实时处理,对于DSP和ARM来说,这是mission impossible. 因为DSP和ARM的实时处理速度还不能突破器件的理论极限。如果直接采用FPGA进行处理,那仍然不能够满足要求。众所周知,现在最好的FPGA的工作始终也不超过1GHz。但是是不是就真的没办法处理了呢?当然是可以处理的,这就需要用到多相滤波器。

FIR的多相滤波器主要是利用FIR滤波器进行多项滤波器的设计,比较简单,之需要将滤波器的抽头系数进行分组,然后在不同的输出相位把每个组进行不同的组合,即可得到相应的FIR多相滤波器。这是FPGA典型的利用面积换取资源的方式。如果你想把处理时钟降低几倍,这里就要增加几倍的硬件资源进行运算。(具体细节可以参考杨小牛的软件无线电原理与应用)

但是采用FIR滤波器本身就存在一些问题,而这主要的问题就是FIR滤波器占用资源较多。本身采用一个FIR滤波器的话,完成一个Q值在20左右的滤波器设计,想要满足通道和阻带的要求,滤波器抽头系数少则几十阶,多则几百阶。而FPGA内部的乘法器资源是相当珍贵的。以常用的xc6slx100来说,dsp48的个数也不超过200个。所以大多数的设计都是不能够满足要求的。当然,这里也不是说FIR滤波器就一无是处了,最起码它是线性相位的,可以满足对并行数据的苛刻要求(线性相位)。

而在一般的设计场合,我们发现,利用IIR滤波器进行谁家,就可以大大节省滤波器的乘法器消耗。所以我就在琢磨,如果利用IIR滤波器进行多相滤波器设计,能不能够成功呢?(答案是肯定的,因为我已经做出来了)但是IIR滤波器在设计多相滤波器的时候,要注意它的一些苛刻要求。这里首先给出对于一个普通的IIR滤波器的设计应该注意的问题。

FPGA设计有个很大的特点,当你的程序运行在40M时钟一下的时候,所有的乘法器资源都没有问题,都可以在一个时钟就能够输出运算结果。但是当你需要一个更高的时钟使你的程序运行的更快的时候,麻烦就来了,这个时候乘法器不能够在一个时钟输出相应的运算结果,而IIR滤波器存在一个很大的问题,就死它有反馈,而这个反馈要求它必须在当前反馈计算结束以后,才能够叠加,从而输出滤波结果。这里我们先看一个典型的IIR滤波器

h(z)=n=1Nb(n)zn1+m=1Ma(m)zm

Created with Raphaël 2.1.0

而其中坟墓中的系数a(m)就是相应的反馈支路。当乘法器不能够在当前时钟运算出输入的数据和系数a(m)的乘法结果的时候,怎么办?那么IIR滤波器就要设计失败了。这里可以通过将滤波器进行延迟输出,分子和分母都乘以分母的共轭,则可以将当前的反馈进行延时,让IIR滤波器可以工作在较高的时钟下。

对于多相IIR滤波器,则需要对该滤波器进行分解,示例如下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值