基于FPGA的数字滤波器的设计
2015-05-30祝美英彭江英辜润秋刘海琴伍芷娴
祝美英 彭江英 辜润秋 刘海琴 伍芷娴
摘 要:数字信号系统在数字电子电路等许多领域中的應用十分广泛,设计FIR滤波器时虽然需要的阶数较高,成本高,但它具有很好的线性相位特性,稳定性好,而且信号延迟可以容易调节。文章以FIR数字滤波器的原理结构为基础,先对FIR数字滤波器进行系数设置,进一步借助Quartus II,将整个FIR数字滤波器分为:寄存器、加法器、减法器、乘法器四个模块。在对各个模块进行仿真得出的结果符合设计要求的前提下,再对FIR数字滤波器的整体电路进行仿真。
关键词:FIR数字滤波器;现场可编程门阵列(FPGA);Quartus II;硬件描述语言(VHDL)
1 概述
数字滤波器具有很好的幅度和线性相位特性,在幅度和线性上对信号处理有严格的要求,因此数字滤波器可以做到模拟滤波器所无法克服的温度漂移、电压漂移和噪声等问题[1],利用数字滤波器处理信号时就能做得更完美。比如可以降低信号的噪声、提高信噪比以及可以对信号得频谱进行分析等。
硬件实现的设计方法有以下三种:(1)使用单片通用数字滤波器集成电路实现(2)采用 DSP 器件实现(3)采用可编程逻辑器件(如DSP、ASIC、FPGA 等)实现。DSP 因为要按顺序依次执行所涉及的各个部分,而降低它的设计速度;用ASIC 方法设计时需要的成本又较高;基于FPGA的设计能较好地避免DSP和ASIC设计的缺点;并且利用 FPGA设计DSP 系统时,同时具备 DSP 芯片的灵活性和实时性,此外,FPGA 在许多数字信号处理领域中获得了成功的应用[2]。所以用FPGA 实现数字滤波是一个较好的选择。利用硬件描述语言(VHDL)采用自顶向下的数字系统设计方法,分别给出滤波器的各模块结构,并对各模块扮演的功能以及数字滤波器的关键部分进行了描述。最后在Altera公司推出的QuartusII8.0软件平台上,利用Cyclone系列器件对设计进行综合和仿真,并得出相应的结果。
2 FIR数字滤波器的原理结构
数字滤波器主要是完成数字信号滤波处理的功能,用有限精度算法实现的离散时间线性非时变系统[3]。数字滤波器的滤波功能是通过选定特定频率范围来实现的,其他范围外的频率信号(如噪声)将被滤除,所以可以通过数字滤波器减少对有用信号的干扰。
FIR数字滤波器由于具有线性相位响应的特性,所以在处理信号时可以避免相位失真的负面的影响,保持信号的完整性,从而得到较好的波形输出。而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的[4]。所以,FIR滤波器的线性相位特性在数字信号处理过程中带来了很大的好处。
FIR数字滤波器是一个线性时不变系统(LTI),N阶FIR数字滤波器可以用传输函数H(z)来描述[5]:
(1)
时域中,输入输出关系表示为:
(2)
其中,x(n)和y(n)分别是输入和输出序列。
在设计FIR数字滤波器时,乘法运算次数较多。在电路实现中,要用到较多的乘法器。当一个FIR 滤波器具有线性相位响应时,它的脉冲响应具有某种对称条件,在这种情况下,这种对称关系可以把FIR数字滤波器设计时相乘运算的次数减少二分之一,从而减少乘法器的个数[6]。为了突出线性相位滤波器的优点,先来看一下直接型的FIR数字滤波器的结构。(图1)
当冲击响应满足下列条件时: (3)
对n阶滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。N阶线性相位的因果FIR数字滤波器的单位冲激响应可用对称冲激响应
(4)
或者反对称冲激响应
(5)
进行描述。
3 FIR滤波器的设计分析
文章在QuartusⅡ下用VHDL编写滤波器的设计程序,这种方法的优点在于比较灵活、易于修改。设计好之后还可以再利用,只需对它的系数、阶数等参数进行修改即可成为任意阶的滤波器[7]。滤波器的系数通过MATLAB得到。因此,可以采用以下方法,先在MATLAB中用Filter Design计算出系数,再进行VHDL语言编程设计FIR数字滤波器。所以在用硬件描述语言对其进行描述时,先根据所要设计的滤波器阶数的要求,选择 MATLAB 中的窗函数——比较常用的是矩形窗,Bartlet窗,Hanning窗,Hamming窗,Kaiser窗——来求得滤波器的系数,并编写相应的程序来检验所求得的系数是否符合最终的要求,以此来缩短设计周期,减少工作量,提高设计成功率。
3.1 FIR滤波器参数设置
FIR滤波器参数设置采用窗函数法(window)并在filter order中填入16,窗口类型为Kaiser,beta为0.5,Fs为48kHz,Fc为10.8kHz。
FIR滤波器幅频与相频特性的比较如图2所示。
图2 FIR滤波器幅频与相频响应
3.2 分析得出滤波器系数
采用MATLAB中的FDATool分析得出为17阶FIR滤波器的系数,以FDATool分析计算出来的数据是有符号的小数。所以,要进行量化处理,以使FIR数字滤波器的系数为整数。对FIR滤波器的系数进行量化调整,整数化后的系数如下:为[-12 -18 13 29 -13 -52 14 162 242 162 14 -52 -13 29 13 -18 -12]。
4 数字滤波器的设计及仿真
4.1 FIR数字滤波器的各模块设计与仿真分析
设计的FIR滤波器模块电路设计包括寄存器、加法器、减法器、乘法器四个模块[8]。
四个模块在Quartus II平台上进行仿真无误后,再将各个模块按照FIR滤波器的原理将各模块连接起来。得到FIR滤波器的整体电路如图3所示,其整体电路基本与其原理图类似。
4.2 FIR滤波器整体电路(图3)
4.3 FIR滤波器整体电路仿真结果
4.3.1 输出信号仿真值
任意设定输入信号为:X=[54,0,0,0,22,0,0,0,54,0,0,0,22,0,
0,0,54,0,0,0,22,0,0,0,54,0,0,0,22,0,0,0]。仿真结果如图4所示。
4.3.2 输出信号理论值
,由此式可得输出信号的理论值。
图4 FIR滤波器整体电路仿真结果
当仿真通过并符合性能要求后,将程序下载到外围硬件中,完成FIR数字滤波器的设计。
4.4 仿真值与理论值的结果比较
图4 FIR滤波器整体电路仿真结果可以读出结果,其结果见表1。通过比较可知,仿真结果与输出信号理论值基本相吻合,符合设计要求。
5 结束语
文章主要通过系统地介绍数字滤波器,而核心部件FPGA选用高密度、灵活性好的AIXERA公司生产的Cyclone系列EP1C20F400
C8芯片,编程设计仿真无误后将程序下载到芯片中,完成对数字滤波器的设计。文章采用MATLAB中的FDATool以窗函数(window)的Kaiser窗来设置FIR滤波器的系数。最后使用QuartusII的VHDL语言分别对寄存器、加法器、减法器、乘法器四个模块进行编程设计、仿真。再对FIR滤波器仿真分析,得到表1仿真值与理论值的比较得结果,说明文章设计的FIR滤波器功能正确,性能良好。
参考文献
[1]刘畅,孙晶华.基于DSP的FIR数字滤波器研究微型机与应用[J].科技致富向导,2011(15):107+90.
[2]Lee Hanbo,Sobelman Gerad. Performance Evaluation and Optimal Design for FPGA-Based Digit-Serial DSP Functions. Computers and Electrical Engineering,2003,29(2):357-377.
[3]丁玉美,高西全.數字信号处理[M].西安:西安电子科技大学出版社,2004:70-76.
[4]舒麒畅,曹成伯,娄晓光.基于DSP平台的激光二极管控制系统[J].计算机测量与控制,2008(1):80-82.
[5]姚利锋.一种基于FPGA并行流水线的FIR滤波器设计方案[J].电子技术杂志,2009(1).
[6]陈静媛.激光陀螺捷联惯导系统数据采集电路的分析与实现[D].兰州:兰州职业技术学院,2008.
[7]张猛.基于MATLAB的FIR数字滤波器设计[J].长春大学学报,2009(2):47-49.
[8]王学梅.基于FPGA的有限冲击响应数字滤波器的研究及实现[D].中南大学,2005.