《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于优化DA算法滤波器的设计及其FPGA实现
基于优化DA算法滤波器的设计及其FPGA实现
2015年电子技术应用第2期
朱效效,蔡 俊,陆 伟
安徽理工大学 电气与信息工程学院,安徽 淮南232001
摘要: 由于传统MAC方法在设计数字滤波器时频繁使用乘法器,导致整个系统运行速率下降,而一般DA算法在设计高阶滤波器时存在查找表规模过大以至于难以实现的问题。提出一种优化的DA算法来克服这一缺陷,为此设计了一个18阶的线性相位结构的FIR低通滤波器,并用Verilog HDL语言在FPGA上实现,在第三方仿真平台Modelsim工具上仿真。仿真结果与MATLAB计算的理论值进行对比,验证了此优化算法的正确性。
中图分类号: TN713
文献标识码: A
文章编号: 0258-7998(2015)02-0059-02
Implementation of digital filter with optimal distributed arithmetic based on FPGA
Zhu Xiaoxiao,Cai Jun,Lu Wei
School of Electrical and Information Engineering,Anhui University of Science and Technology,Huainan 232001,China
Abstract: Due to traditional MAC method used multiplier frequently in design of the digital filter,which led to decrease the speed of the whole system,while the general DA algorithm in the design of high order filter existed the problem of that the scale of look-up table was too large to achieve.This papper proposes an optimized DA algorithm to overcome this defect,to verify the algorithm the thesis design a 18 order linear phase structure of FIR low pass filter. Finally,this algorithm is brought out that is used Verilog HDL in FPGA,and simulated in Modelsim tool. The simulation outcome is contrasted with that the MATLAB calculated theoretical values,which verifies the correctness of optimization algorithm.
Key words : MAC;optimization of DA algorithm;linear phase;FPGA

  

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网站原创,未经授权禁止转载。