您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案 正文
基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案

基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案

点击数:7183 次   录入时间:03-04 11:57:49   整理:http://www.55dianzi.com   DSP/FPGA技术

    本文简要介绍了FIR数字滤波器的结构特点和基本原理,提出基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案。在Mat lab/Simulink环境下,采用DSP Builder模块搭建FIR模型,根据FDATool工具对FIR滤波器进行了设计,然后进行系统级仿真和ModelSim功能仿真,其仿真结果表明其数字滤波器的滤波效果良好。通过SignalCompiler把模型转换成VHDL语言加入到FPGA的硬件设计中,从QUARTusⅡ软件中的虚拟逻辑分析工具SignalTapⅡ中得到数字滤波器实时的结果波形图,结果符合预期。

    在信息信号处理过程中,数字滤波器是信号处理中使用最广泛的一种方法。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而实现时域或频域中信号属性的改变。常用的数字滤波器可分为有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器两种。其中FIR数字滤波器具有严格的线性相位,而且非递归结构也保证了运算的稳定性。在实时性要求比较高的应用场合,采用可编程芯片FPGA加以实现,相比于DSP芯片或专用芯片的实现方法,具有高速、高精度、高灵活性的优点。本文在采取了一种基于FPGA和DSP Builder的方法设计FIR数字滤波器时,采用了层次化、模块化的设计思想,遵循DSP Builder的设计开发流程,在Matlab/Simulink中建立模型并进行系统级仿真,再进行Verilog语言转换,ModelSim仿真验证无误后实现了FIR数字滤波器的实时测试。

1 FIR数字滤波器的基本原理及结构
   
对于一个FIR滤波器系统,它的冲击响应总是有限长的,其系统函数可以记为:
    a.JPG
    式中:x(n)是输入采样序列;h(i)是滤波器系数;k是滤波器阶数;y(n)表示滤波器的输出序列。

34
    图1为k阶FIR数字滤波器的结构框图。

2 FIR数字滤波器的设计流程
   
该设计流程主要涉及到Matlab/Simulink、DSPBuilder和QuartusⅡ等工具软件的开发设计。整个设计流程,包括从系统描述直至硬件实现,可以在一个完整的设计环境中完成,如图2所示。

45

    (1)Matlab/Simulink中设计输入,即在Matlab的Simulink环境中建立一个扩展名为mdl的模型文件,用图形方式调用ALTEra DSP Build er和其他Simulink库中的图形模块(BLOCk),构成系统级或算法级设计框图(或称Simulink设计模型)。
    (2)利用Simulink的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真,也叫系统级仿真。
    (3)DSP Builder设计实现的关键一步,通过SignalCompiler把Simulink的模型文件转化成通用的硬件描述语言Verilog文件。
    (4)转换好的Verilog源代码用ModelSim软件进行功能仿真,验证Verilog文件的正确性。接下来的几个步骤是对以上设计产生的Verilog的RTL代码和仿真文件在QuartusⅡ工具软件中进行综合、编译适配,生成扩展名为.SOF的文件加载到FPGA硬件系统中。



www.55dianzi.com

3 FIR数字滤波器的详细设计
3.1 FIR数字滤波器模块设计与系统级仿真
    根据FIR数字滤波器的原理,在Simulink环境下搭建16阶的FIR数字滤波器结构,如图3所示。

c.JPG

   
    在模型的搭建过程中,使用了两个8位的Shift Taps移位寄存器模块对输入信号进行分解,然后根据数字滤波器的原理进行算法计算。
    模型搭建好之后,需要确定16阶FIR数字滤波器的系数,在这使用Matlab中的FDATool滤波器设计工具来确定。确定好滤波器的指标:
    (1)设计一个16阶的FIR滤波器;
    (2)低通滤波器;
    (3)采样频率fs为16 384 Hz,截频点频率fs为533 Hz;
    (4)输入序列位宽为16位。
    在设计滤波器界面中,如图4所示,进行下列选择:

d.JPG

   
    (1)滤波器类型(FiLTEr Type)为低通(Lowpass);
    (2)设计方法(Design Method)为FIR,采用窗口法(Window);
    (3)滤波器阶数(Filter Order)定制为15(设置为15阶而不是16阶,是由于设计的16阶FIR滤波器的常系数项h(0)=0);
    (4)滤波器窗口类型为Kaiser,Beta为0.5。



www.55dianzi.com


    所有的选项确定好后,在FDATool滤波器设计界面中点击“Design FiLTEr”,Matlab就会计算滤波器系数并作相关分析。图5所示为滤波器的幅频响应,图6所示为滤波器的阶跃响应。

e.JPG

   
    由于所有的模块都在同一个Simulink图中,这时的Simulink设计图显得很复杂,不利于阅读和排错,因此把FIR数字滤波器模型做成一个子系统在设计图中显示出来,如图7所示,这就是Matlab中的层次化设计,在顶层设计图中,滤波器作为名称是SubFIR_533_16js的一个模块出现。同时,图7中还设置了其他模块,包括仿真信号输入模块、Signal TapⅡ信号实时监测模块、Signal Compiler模块、硬件开发板模块、TestBench模块。

f1.jpg

   
    这样整个滤波器的Simulink电路设计模型就完成了,然后要对该模型进行系统级仿真,查看其仿真结果,在频率为533 Hz的波形输入上加入了频率为3 600 Hz的扰动波形,其Simulink仿真结果如图8所示。

f.JPG

   
    图中,上面的波形是533 Hz的输出,中间的波形是533 Hz加上3 600 Hz高频干扰后的输出,下面的波形是经过滤波后的输出。
3.2 从模型文件到Verilog代码的RTL级转换和编译适配
   
利用Signal Compiler模块将电路模型文件即Simulink模块文件(.mdl)转换成RTL级的Verilog代码表述和Tcl(工具命令语言)脚本。这种转换是用来对数字滤波器Simulink模型进行结构化分析的。获得转换好的VHDL描述后就可以调用Verilog综合器,这里我们选用QUARTus Ⅱ,用来生成底层网表文件,同时也就可以得到其网表文件对应的RTL电路图。如图9所示。

g.JPG

   
3.3 数字滤波器的ModelSim功能仿真
    ModelSim软件可支持VHDL和Verilog混合仿真,无论是FPGA设计的RTL级和门级电路仿真,还是系统的功能仿真都可以用ModelSim来实现。由Signal Compiler生成的Verilog硬件描述语言模块,在ModelSim中可以直接对Verilog代码进行仿真,检测源代码是否符合功能要求。图10所示的16阶FIR数字滤波器的功能仿真结果图。与图8的Simulink仿真结果图的波形一致,表明经过转换的Verilog源代码可以实现正常的滤波功能。

h.JPG

   



www.55dianzi.com


3.4 FIR数字滤波器的FPGA硬件实现
   

[1] [2]  下一页


本文关键字:滤波器  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术