龙源期刊网 http://www.qikan.com.cn
基于FPGA的FIR数字滤波器设计与实现
作者:单文军 周雪纯 李文华
来源:《现代电子技术》2013年第14期
摘要: 简要介绍了FIR数字滤波器的结构特点和基本原理,提出基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案。在Matlab/Simulink环境下,采用DSP Builder模块搭建FIR模型,根据FDATool工具对FIR滤波器进行了设计,然后进行系统级仿真和ModelSim功能仿真,其仿真结果表明其数字滤波器的滤波效果良好。通过
SignalCompiler把模型转换成VHDL语言加入到FPGA的硬件设计中,从QuartusⅡ软件中的虚拟逻辑分析工具SignalTapⅡ中得到数字滤波器实时的结果波形图,结果符合预期。 关键词: FPGA; DSP Builder; FIR数字滤波器; ModelSim功能仿真
中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2013)14?0123?04 Design and implementation of FIR digital filter based on FPGA SHAN Wen?jun, ZHOU Xue?chun, LI Wen?hua (China Flight Test Establishment, Xi’an 710089, China)
Abstract: The structure feature and the basic principle of FIR digital filter is introduced briefly. The basic design process and implementation scheme of the FIR digital filter based on FPGA and DSP Builder is proposed in this paper. FIR model is structured with DSP Builder module in the Matlab/Simulink environment. The FIR digital filter is designed according to the FDATool. The system level simulation and ModelSim function simulation were completed. The simulation results show that the filter has excellent effect. The model is converted to VHDL language through
SingalCompiler and added to FPGA hardware design. The real?time waveform graph of the FIR digital filter was received by the virtual logic analysis tool SignalTapⅡ in QuartusⅡ. The results conform to the expected requirement.
Keywords: FPGA; DSP Builder; FIR digital filter; ModelSim function simulation 在信息信号处理过程中,数字滤波器是信号处理中使用最广泛的一种方法。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而实现时域或频域中信号属性的改变[1]。常用的数字滤波器可分为有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器两种。其中,FIR数字滤波器具有严格的线性相位[2],而且非递归结构也保证了运算的稳定性。在实时性要求比较高的应用场合,采用可编程芯片FPGA加以实现,相比于DSP芯片或专用芯片的实现方法,具有高速、高精度、高灵活性的优点[3]。本文在采取了一种基于FPGA和DSP Builder的方法设计FIR数字滤波器时,采用了层次化、模块化的设计思想,遵循DSP
龙源期刊网 http://www.qikan.com.cn
Builder的设计开发流程,在Matlab/Simulink中建立模型并进行系统级仿真,再进行Verilog语言转换,ModelSim仿真验证无误后实现了FIR数字滤波器的实时测试。 1 FIR数字滤波器的基本原理及结构
对于一个FIR滤波器系统,它的冲击响应总是有限长的,其系统函数可以记为: (1)
该数学表达式可用差分方程来表示: (2)
式中:是输入采样序列;是滤波器系数;是滤波器阶数;表示滤波器的输出序列。 图1为阶FIR数字滤波器的结构框图。 2 FIR数字滤波器的设计流程
该设计流程主要涉及到Matlab/Simulink、DSP Builder和Quartus Ⅱ等工具软件的开发设计。整个设计流程,包括从系统描述直至硬件实现,可以在一个完整的设计环境中完成[4],如图2所示。
图1 FIR数字滤波器的结构框图
图2 DSP Builder设计流程图
(1)Matlab/Simulink中设计输入,即在Matlab的Simulink环境中建立一个扩展名为mdl的模型文件,用图形方式调用Altera DSP Builder和其他Simulink库中的图形模块(Block),构成系统级或算法级设计框图(或称Simulink设计模型)。
(2)利用Simulink的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真,也叫系统级仿真。
(3)DSP Builder设计实现的关键一步,通过SignalCompiler把Simulink的模型文件转化成通用的硬件描述语言Verilog文件。
龙源期刊网 http://www.qikan.com.cn
(4)转换好的Verilog源代码用ModelSim软件进行功能仿真,验证Verilog文件的正确性。接下来的几个步骤是对以上设计产生的Verilog的RTL代码和仿真文件在Quartus Ⅱ工具软件中进行综合、编译适配,生成扩展名为.sof的文件加载到FPGA硬件系统中。 3 FIR数字滤波器的详细设计
3.1 FIR数字滤波器模块设计与系统级仿真
根据FIR数字滤波器的原理,在Simulink环境下搭建16阶的FIR数字滤波器结构,如图3所示。
在模型的搭建过程中,使用了两个8位的Shift Taps移位寄存器模块对输入信号进行分解,然后根据数字滤波器的原理进行算法计算。
图3 FIR数字滤波器的Simulink结构图
模型搭建好之后,需要确定16阶FIR数字滤波器的系数,在这使用Matlab中的FDATool滤波器设计工具来确定。确定好滤波器的指标: (1)设计一个16阶的FIR 滤波器; (2)低通滤波器;
(3)采样频率fs为16 384 Hz,截频点频率fs为533 Hz; (4)输入序列位宽为16位。
在设计滤波器界面中,如图4所示,进行下列选择: (1)滤波器类型(Filter Type)为低通(Lowpass);
(2)设计方法(Design Method)为FIR,采用窗口法(Window);
(3)滤波器阶数(Filter Order)定制为15(设置为15阶而不是16阶,是由于设计的16阶FIR滤波器的常系数项);
(4)滤波器窗口类型为Kaiser,Beta为0.5。
所有的选项确定好后,在FDATool滤波器设计界面中点击“Design Filter”,Matlab就会计算滤波器系数并作相关分析。图5所示为滤波器的幅频响应,图6所示为滤波器的阶跃响应。