EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) FIR数字滤波器的FPGA实现研究

电子设计工程 刘庆良 卢荣军 李建清?? 2010年04月26日 ?? 收藏0

  如今,FPGA已成为数字信号处理系统的核心器件,尤其在数字通信、网络、视频和图像处理等领域。现在的FPGA不仅包含查找表、寄存器、多路复用器、分布式块存储器,而且还嵌入专用的快速加法器、乘法器和输入,输出设备。FPGA具有实现高速并行运算的能力,因而成为高性能数字信号处理的理想器件。此外,与专用集成电路(ASIC)相比,FPGA具有可重复编程的优点。

  根据单位脉冲响应的不同,数字滤波器主要分为有限脉冲响应(FIR)和无限脉冲响应(IIR)2大类。在同样的设计要求下,IIR方式计算工作量较小。但难以得到线性相位响应,且系统不易稳定;FIR方式的计算工作量稍大,但在设计任意幅频特性时,能保证严格的线性相位特性;由于其实现结构主要是非递归的,FlR滤波器可以稳定工作。FIR数字滤波器是数字多普勒接收机的重要组成部分,因此,研究FIR数字滤波器的实现技术具有重要意义。随着FPGA技术的不断发展,FPGA逐渐成为信号处理的主流器件。而在FPGA中,数字滤波器不同的实现方法所消耗的FPGA资源是不同的,且对滤波器的性能影响也有较大差异。

  1 FIR滤波器的原理及结构

  FIR滤波器存在N个抽头的h(n),N称为滤波器的阶数,其数学表达式为:

公式

  式中,x(k)为第k时刻的采样值,y(n)为滤波器输出。h(k)为FIR滤波器的第k级抽头系数。

  通过对h(k)进行Z变换得到FIR的传递函数H(Z),其在Z域内的形式如下:

公式

  因此,根据传递函数H(Z)和FIR滤波器系数的对称性,可得FIR滤波器的一般实现结构,如图1所示。

FIR滤波器的一般实现结构

  从串行结构中可以看出,FIR滤波过程就是一个信号逐级延迟的过程,将各级延迟输出加权累加,得到滤波输出,其中最主要的运算是乘累加运算。FIR每完成一次滤波过程需要进行N次乘法和(N-1)次加法运算,N为滤波器的阶数。所以,滤波器的运算量完全取决于N的大小,当N很大时,延迟将非常长,无法实现高速信号处理。

  根据FIR数字滤波器的对称特性,可以先进行加法运算,然后对加法运算的结果进行串行乘累加运算,从而得到改进的串行结构。与串行结构相比,改进的滤波器完成一次滤波的时钟周期减半,乘累加次数减半,提高了处理速度,但同时要消耗更多的硬件资源。图1(b)为Ⅳ位偶数时改进的串行结构。与串行结构相似,滤波器的运算量完全取决于N的大小,当N很大时,延迟将非常长,无法实现高速信号处理。

  将串行结构展开,根据滤波器的信号流图用多个乘法器和加法器并行实现,得到FIR滤波器的并行实现结构,如图1(c)所示。并行滤波器的滤波速度快,一个时钟周期内完成一次滤波,但消耗大量的FPGA资源,如乘累加器,且器件的延迟较大,工作频率不宜太高。

  FPGA具有规整的内部逻辑阵列和丰富的连线资源,特别适合用于数字信号处理。但以前FPGA一般用于系统逻辑或时序控制,很少应用在信号处理方面。其原因主要是FPGA中缺乏实现乘法运算的有效结构。随着FPGA技术的不断发展,查找表(LUT)技术的应用有效地解决了这个问题,使FPGA在数字信号处理方面得到了广泛应用。

  2 基于分布式算法的FIR滤波器的实现

  2.1 分布式算法原理

  上世纪70年代Croisie提出了分布式算法DA(Distributed Arithmetic),但由于其特别适合用FPGA实现,所以直到Xilinx公司在FPGA中使用查找表(LUT)后,DA才被广泛应用在FPGA求乘积和中。

  FIR的滤波输出y可以表示为输入x和系数h的内积:

公式

  由上述推导可知,分布式算法是一种以实现乘加运算为目的的运算方法。它与传统实现乘加运算的先后顺序不同。分布式算法在完成乘加功能时,是通过将各输入数据每一对应位产生的部分积预先进行相加形成相应部分积,然后在对各部分积预先进行累加形成最终结果;而传统算法是等到所有乘积产生之后再进行相加来完成乘加运算。

  2.2 分布式FIR的实现结构

  图2为分布式FIR滤波器的直接实现结构。对于小位宽的数据,DA算法不仅速度快,而且所占用的芯片资源少。

分布式FIR滤波器的直接实现结构

  2.3 性能优化方法

  1)流水线结构法 在滤波器中间增加适当的寄存器,构成流水线结构。在并行结构实现中添加流水线结构,可以提高滤波器速度,使其工作在更高的工作频率。对于速度固定的数据,可以通过多次复用乘累加器来节省资源。

  2)查找表分隔法 在用LUT实现分布式算法时,由于LUT的规模随着N的增加呈现指数增长,如果滤波器系数N过大,则查找表的规模十分庞大。为了减小规模,可以利用部分表计算。由于FIR滤波器是线性滤波器,因此低阶滤波器输出可以相加,由此定义一个高阶滤波器的输出。例如,把16输入的查找表分割成4个并行的查找表。

  查找表的分隔技术和流水线技术可以大大减小设计规模,同时并不会降低滤波速度。使用DA算法实现的FlR滤波器与传统的算法相比,DA算法可以极大地减少硬件电路规模,很容易实现流水线处理,提高电路的执行速度。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FIR? 滤波器? FPGA? ModelSim?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈