使用FPGA构建的数字滤波器设计方案

在matlab/simulink环境下,采用dsp builder模块搭建fir模型,根据fdatool工具对fir滤波器进行了设计,然后进行系统级仿真和modelsim功能仿真,其仿真结果表明其数字滤波器的滤波效果良好。通过signalcompiler把模型转换成vhdl语言加入到fpga的硬件设计中,从quartusⅱ软件中的虚拟逻辑分析工具signaltapⅱ中得到数字滤波器实时的结果波形图,结果符合预期。
0 引言
在信息信号处理过程中,数字滤波器是信号处理中使用最广泛的一种方法。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而实现时域或频域中信号属性的改变。常用的数字滤波器可分为有限脉冲响应(fir)滤波器和无限脉冲响应(iir)滤波器两种。其中,fir数字滤波器具有严格的线性相位,而且非递归结构也保证了运算的稳定性。在实时性要求比较高的应用场合,采用可编程芯片fpga加以实现,相比于dsp芯片或专用芯片的实现方法,具有高速、高精度、高灵活性的优点。本文在采取了一种基于fpga和dsp builder的方法设计fir数字滤波器时,采用了层次化、模块化的设计思想,遵循dsp builder的设计开发流程,在matlab/simulink 中建立模型并进行系统级仿真,再进行verilog语言转换,modelsim仿真验证无误后实现了fir数字滤波器的实时测试。
1 fir 数字滤波器的基本原理及结构
对于一个fir滤波器系统,它的冲击响应总是有限长的,其系统函数可以记为:
式中:x(n) 是输入采样序列;h(i) 是滤波器系数;k 是滤波器阶数;y(n) 表示滤波器的输出序列。
图1为k 阶fir数字滤波器的结构框图。
2 fir 数字滤波器的设计流程
该设计流程主要涉及到matlab/simulink、dspbuilder和quartus ⅱ等工具软件的开发设计。整个设计流程,包括从系统描述直至硬件实现,可以在一个完整的设计环境中完成,如图2所示。
(1)matlab/simulink 中设计输入,即在matlab 的simulink环境中建立一个扩展名为mdl的模型文件,用图形方式调用altera dsp builder 和其他simulink库中的图形模块(block),构成系统级或算法级设计框图(或称simulink设计模型)。
(2)利用simulink的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真,也叫系统级仿真。
(3)dsp builder设计实现的关键一步,通过signal-compiler把simulink的模型文件转化成通用的硬件描述语言verilog文件。
(4)转换好的verilog源代码用modelsim软件进行功能仿真,验证verilog文件的正确性。接下来的几个步骤是对以上设计产生的verilog的rtl代码和仿真文件在quartus ⅱ工具软件中进行综合、编译适配,生成扩展名为。sof的文件加载到fpga硬件系统中。
3 fir 数字滤波器的详细设计
3.1 fir数字滤波器模块设计与系统级仿真
根据fir数字滤波器的原理,在simulink环境下搭建16阶的fir数字滤波器结构,如图3所示。
在模型的搭建过程中,使用了两个8位的shift taps移位寄存器模块对输入信号进行分解,然后根据数字滤波器的原理进行算法计算。
模型搭建好之后,需要确定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滤波器的常系数项h(0)=0);
(4)滤波器窗口类型为kaiser,beta为0.5.
所有的选项确定好后,在fdatool滤波器设计界面中点击“design filter”,matlab就会计算滤波器系数并作相关分析。图5所示为滤波器的幅频响应,图6所示为滤波器的阶跃响应。
由于所有的模块都在同一个simulink图中,这时的simulink设计图显得很复杂,不利于阅读和排错,因此把fir数字滤波器模型做成一个子系统在设计图中显示出来,如图7所示,这就是matlab中的层次化设计,在顶层设计图中,滤波器作为名称是subfir_533_16js的一个模块出现。同时,图7中还设置了其他模块,包括仿真信号输入模块、signal tap ⅱ信号实时监测模块、signal compiler模块、硬件开发板模块、testbench模块。
这样整个滤波器的simulink电路设计模型就完成了,然后要对该模型进行系统级仿真,查看其仿真结果,在频率为533 hz的波形输入上加入了频率为3 600 hz的扰动波形,其simulink仿真结果如图8所示。
图中,上面的波形是533 hz的输出,中间的波形是533 hz加上3 600 hz高频干扰后的输出,下面的波形是经过滤波后的输出。
3.2 从模型文件到verilog代码的rtl级转换和编译适配
利用signal compiler模块将电路模型文件即simu-link 模块文件(。mdl)转换成rtl 级的verilog 代码表述和tcl(工具命令语言)脚本。这种转换是用来对数字滤波器simulink模型进行结构化分析的[5]。获得转换好的vhdl描述后就可以调用 verilog综合器,这里我们选用quartus ⅱ,用来生成底层网表文件,同时也就可以得到其网表文件对应的rtl电路图。如图9所示。
3.3 数字滤波器的modelsim功能仿真
modelsim软件可支持vhdl和verilog混合仿真,无论是fpga设计的rtl级和门级电路仿真,还是系统的功能仿真都可以用modelsim来实现[4-5]。由signal com-piler生成的verilog硬件描述语言模块,在modelsim中可以直接对verilog代码进行仿真,检测源代码是否符合功能要求。图 10所示的16阶fir数字滤波器的功能仿真结果图。与图8的simulink仿真结果图的波形一致,表明经过转换的verilog源代码可以实现正常的滤波功能。
3.4 fir数字滤波器的fpga硬件实现
fir数字滤波器一般是嵌入在采集器的采集板卡中进行工作的,把由数字滤波器的verilog源代码生成的模块嵌入到采集板卡的fpga逻辑中,如图11所示。
在quartus ⅱ环境下,数字滤波器的内部逻辑经过编译适配之后,以。sof文件的形式直接加载到fpga中。
4 fir 数字滤波器的fpga 实时测试
进行实时测试的电路是应用fpga和usb的数据采集电路,如图12所示。
测试时把信号发生器设置好的输入信号输入到a/d,采样得到的数据经过fpga,再通过usb与pc机相连,应用quartusⅱ中的signaltapⅱ工具进行实时检测,结果如图13所示,其中,上面的波形为输入波形,频率为200 hz,下面的波形为输出波形,由于200 hz在低通的带通内,所以两者的波形相差不大。当输入波形为频率533 hz时,由于是在截频点,其输出波形的幅值约为输入波形幅值的71%,如图13和14所示。
5 结束
fir数字滤波器在数字信号处理领域有着广泛的使用,本文通过仿真和实时验证两种方式实现了一种基于fpga和dsp builder的fir数字滤波器。先根据fir滤波器的基本原理和结构框图搭建了滤波器的模型,再根据滤波器的性能指标通过fdatool工具对其进行设计,并通过系统级仿真和modelsim功能仿真进行了简要的可行性分析,最后通过quartusⅱ软件对fir数字滤波器进行实时验证,表明本方案所设计的fir 滤波器功能正确,性能良好。

汽车电子改装案例:奥迪SQ5改装专用氛围灯、激光大灯
研讨会 | 如何应用 AMD-Xilinx MPSoCs 进行视觉项目的开发
元器件的装配方式与布局
一种新的轨道角动量天线设计
如何选择合适的室内空气质量检测仪
使用FPGA构建的数字滤波器设计方案
基于NCP1351B脑电采集仪的电源设计
全球工业机器人事业部前负责人出任史陶比尔新任首席执行官
Vivo X60系列将首推5nm Exynos 1080芯片组
Leader智能空调 Home一键掌控温度
Wrike在其用户大会上宣布了其平台的重大更新
苹果“iPhone 电池门”集体诉讼 ,索赔6000万欧元
SERDES应用场景以及对应的复位设计
工业互联网的三大要素是什么_工业互联网的作用
Intel正实现从14nm向10nm的过渡
造纸通用仪表选型详解
土壤养分速测仪在农业施肥中有什么作用?
信号链基础:时钟抖动解秘——高速链路时钟抖动规范基础知识分享
锂电池厂数量急速飙升,全球有26个“超级电池工厂”正在计划建设
为什么要计算电容器寿命?