设计应用

基于优化DA算法滤波器的设计及其FPGA实现

作者: 朱效效,蔡 俊,陆 伟
发布日期:2015-08-04
来源:2015年电子技术应用第2期

  

0 引言

  FIR滤波器具有严格的线性相频特性,同时又可保证任意幅频特性。而这个特点使FIR滤波器在数据传输、图像处理和识别、语音处理和通信系统中具有广泛的应用。除此之外,FIR滤波器除0以外没有其他的极点,所以整个滤波系统是相对稳定的,不存在不稳定的问题,这是FIR区别于IIR的本质原因,而FIR在传输数据时存在色散。

  本文只讨论FIR滤波器的设计方法。基于DA算法的滤波器有效解决了MAC结构的不足,但是随着滤波器的阶数增加,查找表的规模呈指数增加,再设计高阶滤波器时普通DA算法甚至难以实现。本文提出了一种优化的DA算法来克服一般DA算法在设计高阶滤波器时的缺陷,并用Verilog HDL语言在FPGA上实现[1]。

1 线性相位FIR滤波器的结构

  如果FIR中的h(n)为实数,并符合下列条件其中的一种:

  偶对称:h(n)=h(N-1-n)

  奇对称:h(n)=-h(N-1-n)

  称其具有线性相位结构。

  当N为奇数时,其系统函数为[2]:

  1.png

  其直接型结构如图1所示。

001.jpg

  当N为偶数时,其系统函数为:

  2.png

  其直接型结构如图2所示。

002.jpg

2 分布式算法

  2.1 分布式算法基础

  DA算法是基于查找表结构的,其详细公式解析如下[3]:

  SX{GIT%V6@AVXE~Q}8D(IRS.png

  重新分配求和的顺序,其结果如下:

  y=c[0]( xB-1[0]2B-1+ xB-2[0]2B-2+…+ x0[0]20)

  +c[1]( xB-1[1]2B-1+ xB-2[1]2B-2+…+ x0[1]20)+…

  +c[N-1](xB-1[N-1]2B-1+xB-2[N-1]2B-2+…+x0[N-1]20)

  =(c[0] xB-1[0]+c[1] xB-1[1]+…+c[N-1]xB-1[N-1])2B-1

  +c[0] xB-2[0]+c[1] xB-2[1]+…+c[N-1]xB-2[N-1])2B-2

  +…+(c[0] x0[0]+c[1] x0[1]+…+c[N-1] x0[N-1])20

  (6)

  2.2 分布式算法的优化

  假如N的数量增加,一个单一的LUT无法执行全字,就能够利用部分表并先将结果相加。其原理为:假定长度为LN的内积)QHPKUPTM[O}9P~7[$45ZQM.png,那么可以用一个DA体系结构实现它:

  7.png

  表的规模从一个24N B的LUT减少4个2N B表。优化的DA算法的结构图如图3所示。

003.jpg

3 基于FPGA的FIR低通滤波器的设计

  3.1 基于FPGA的FIR设计流程

  本文设计的FIR滤波器的流程如图4所示,主要分为系数提取和FPGA完成[4]。

004.jpg

  3.2 FIR滤波器的MATLAB设计

  本文设计滤波器主要参数为阻带最小衰减为30 dB,通带波纹小于0.5 dB,截止频率为0.4。为此设计了18阶的FIR线性相位低通滤波器,采用窗函数中的凯泽窗来设计。根据凯泽窗参数?对滤波器的性能的影响,来满足条件。由这些技术指标可通过MATLAB提供的滤波器设计工具箱FDAtool来仿真设计滤波器,从而提取滤波器的系数[5]。

  由于提取出来的系数是浮点型,而FPGA只能处理定点型数据,所以需要把提取出来的系数进行量化,在该设计方案中将系数扩大1 024倍,即210。再通过编码转化为二进制形式。通过FDAtool工具提取出的数据及其量化结果如下:

  h(0)=h(17)=-0.014 361 548 558 709 025,

  h(1)=h(16)

  =0.000 000 000 000 000 007 952 163 344 493 980 7,

  h(2)=h(15)=0.028 618 979 697 780 135,

  h(3)=h(14)=0.024 250 698 402 580 449,

  h(4)=h(13)=-0.033 323 873 349 896 04,

  h(5)=h(12)= -0.075 849 033 020 568 446,

  h(6)=h(11)

  =0.000 000 000 000 000 014 598 689 803 221 391,

  h(7)=h(10)=0.197 209 967 107 277 67,

  h(8)=h(9)=0.373 454 809 721 535 27。

  其量化结果分别为:-15,0,29,25,-34,-78,0,202,

  382。十六进制补码分别为fff1,0000,001d,0019,ffde,ffb2,0000,00ca,017e。

  3.3 线性相位FIR滤波器的FPGA实现

  本文采用模块化思想,由一个主时钟控制各个子时钟,全部模块分别为并串转换、延时与预求和、移位累加、查找表采用3个分割查表结构和求部分和的模块[6]。

  为了验证电路能否连续正确运行,本文连续随机输入序列0、127、100、57、26、5、20、26、79、8、12、49、35、102、99、125、63、82在Modelsim工具上进行仿真,其结果如图5所示。

005.jpg

  仿真结果与MATLAB工具计算的理论值相比较,其Modelsim部分仿真结果如下:0、-2、-1、3、6、0、-11、-9、

  19、19、66。MATLAB理论计算结果对应为:0、-1.823 9、-1.436 2、2.816 0、5.568 3、-0.247 6、-11.1261、-9.084 2、

  19.414 9、66.125 3。通过仿真与MATLAB计算理论结果进行比较,理论值与仿真结果存在误差但是误差在允许的范围内,误差主要是因为量化时产生的。

4 结束语

  本文提出的优化DA算法本质是提出对查找表的优化,事实证明滤波器阶数越高,此优化算法的作用越明显,而且可以节省内部逻辑资源。最后通过硬件实现,结果与理论值相比较,设计符合预期。

参考文献

  [1] 程佩青.数字信号处理[M].北京:清华大学出版社,2001.

  [2] Meyer-Baese U(美).数字信号处理的FPGA实现[M].北京:清华大学出版社,2011.

  [3] 杜勇.数字滤波器的MATLAB与FPGA实现[M].北京:电子工业出版社,2012.

  [4] 高耀红.基于FPGA的FIR低通滤波器[D].长沙:湖南大学,2012.

  [5] 刘朋全.基于FPGA的FIR数字滤波器的设计和实现[D].西安:西北工业大学,2006.

  [6] 夏宇闻.数字系统设计教程[M].北京:北京航空航天大学出版社,2008.


此内容为AET网站原创,未经授权禁止转载。
MAC 优化DA算法 线性相位 FPGA