FIR数字滤波的FPGA实现
扫描二维码
随时随地手机看文章
摘要: 随着数字技术的发展,数字滤波器的功能越来越受到人们的注意和广泛应用,它有精度高、灵活性大等突出特点。FIR数字滤波具有稳定性高,严格的线性相位,能用FFT算法实现等特点。通过FPGA实现FIR数字滤波具有实时性高、处理速度快、精度高的特点。文章先通过Matlab DSP Builder 设计出FIR滤波器模型,然后利用Simulink进行模型仿真,再用ModelSim进行功能仿真,最后用Quartus II进行时序仿真。仿真结束后下载到选定的FPGA上,在FGPA上实现FIR数字滤波。
关键词:数字滤波;FIR滤波器;FPGA; Matlab
0 引言
随着科技的发展,数字信号处理在通信、自动控制、雷达、军事、航空航天、医疗、家用电器等众多领域得到了广泛的应用。而在数字信号处理的应用中,数字滤波器是相当重要的一部分。其中无限冲击响应(IIR)数字滤波器和有限冲击响应(FIR)数字滤波器是目前人们使用较多的两种。与IIR数字滤波器相比较,FIR数字滤波器具有稳定性高,速度快的特点。
FIR数字滤波器可以通过软件或者硬件来实现。所谓软件实现就是利用通用计算机实现。而硬件实现就是设计专门的数字滤波硬件,有以下几种实现方法,1)使用单片通用数字滤波器集成电路;2)采用DSP器件实现;3)采用可编程逻辑器件实现[4]。比较普遍的有DSP、ASIC、FPGA等。与FPGA相比较,DSP的顺序执行使得其速度较慢,而ASIC的设计成本又比较高,所以用FPGA实现FIR数字滤波,具有实时性强、灵活性高、处理速度快以及小批量生产成本低等特点。
1 FIR数字滤波器设计要求与结构选择
FIR滤波器实现的基本结构有:直接型、级联型、频率抽样型、快速卷积型结构几种[3],这里以直接型为例。设计一个16阶的FIR低通滤波器(h(0)=0),采样频率Fs=200Hz,滤波器截止频率Fc=40Hz,输入序列位宽为9位(最高位为符号位)。
2 FPGA的选择
考虑到价格以及芯片内部嵌入式乘法器对数字信号处理的支持性,这里选用的是Altera公司出品的低端FPGA芯片Cyclone II EP2C35F672C6,它主要由逻辑阵列、M4K存储器块、数字[1]锁相环、嵌入式乘法器几部分组成。
3 FIR设计软件平台
3.1 基于Matlab和DSP Builder的模型设计
3.1.1 Matlab
Matlab可以进行科学计算、图像处理、声音处理等,有良好的用户界面和帮助功能。其中的Simulink软件包可以对动态系统进行建模、仿真和分析,支持连续、离散及混合的线性、非线性系统,同时支持具有多种采样频率的系统。在Simulink环境中,在模型窗口中可以用鼠标直观地“画”出系统模型,然后直接进行仿真。采用Scope模块和其它的画图模块,还可以在进行仿真的同时看到仿真结果[1]。
3.1.2 DSP Builder
DSP Builder 是一种系统级的专门设计DSP处理器及系统的工具,它架构在多个软件工具如Matlab、QuartusII、Synplify之上,把系统级和RTL级的设计工具连接起来,最大程度地发挥多种工具的优势。DSP Builder可以帮助设计者完成基于FPGA的DSP系统设计,它以Matlab中Simulink 的工具箱出现,可以在Simulink 中进行图形化设计和仿真,同时通过Signal Compiler可以把设计文件转成相应的硬件描述语言设计文件,以及用于控制综合与编译的TCL脚本[1]。
3.1.3 基于Matlab、DSP Builder的FIR数字滤波器设计
利用直接型滤波器可以级联的特性,我们可以调用4个4阶FIR滤波器来实现一个16阶的低通滤波器。如图1所示,其中每个firtap都是一个4阶FIR滤波器。
图1 直接I型16阶FIR滤波器
Fig.1 16-step Direct I Type FIR Digital Filter
利用Matlab里的滤波器设计工具获得各种滤波器设计参数,选择滤波器类型为低通FIR,设计方法为窗口法,15阶,Kaiser窗,Beta=0.5,FS为200Hz,FC为40Hz。利用FDATool分析所设计出的滤波器的幅频、相频特性,冲激、阶跃响应,零极点等,导出滤波器系数并对其进行量化及优化,得到整型的滤波器参数并分别填入到FIR滤波器模型中,完成设计。
3.2 模型仿真调试
3.2.1 Simulink 模型仿真
模型设计好后,即可在Simulink中进行算法级、系统级仿真验证。在模型的输入端加入一个叠加信号,验证FIR低通滤波器模型设计的正确性。如图2所示,自上而下四个波形分别是58Hz、30Hz输入波形,二者的混合波形,输出波形。可见滤波器模型正确。
图2 模型仿真结果
Fig.2 the Result of Model Compilation
3.2.2将模型转成VHDL文件
Simulink仿真完成后就可以在硬件上实现设计,以获得针对特定FPGA芯片的VHDL代码。
用SignalCompiler对模型进行分析,检查其正确性。选择对应的器件系列并对SignalCompiler 进行相应的设置,把MDL文件转换成VHDL文件。
3.2.2 ModelSim功能仿真
Simulink算法级、系统级仿真后还要用ModelSim对生成的RTL级VHDL代码进行功能仿真。仿真波形见图3。
图3 ModelSim仿真波形
Fig.3 Simulation wave shape of ModelSim
3.2.3 QuartusII时序仿真
RTL级仿真完成后还要进行门级时序仿真。SignalCompiler已将Matlab上的仿真信息转变为可用与QuartusII 进行时序仿真的激励信息及相关的仿真文件,因此可以很容易地完成此项仿真任务[2]。
QuartusII仿真编译结果 显示了仿真编译的各项参数,由图4可得FPGA的器件型号、逻辑元件及引脚的使用数目和占用资源百分比等情况。
图4 QuartusII仿真编译结果
Fig.4 the Result of Compilation & Simulation
4 硬件实现
经过Matlab、ModelSim、QuartusII联合仿真验证后,最后把VHDL烧写到基于Cyclone II EP2C35F672C6 FPGA 芯片的开发板中,完成FIR滤波器在FPGA上的硬件实现。
5 结论
本文通过利用DSP Builder设计建模电子模块来代替编写VHDL 程序,设计效率大为提高。然后通过Matlab的Simulink环境的图形化仿真验证功能配合ModelSim RTL级仿真与QuartusII门级时序仿真功能对设计的程序功能进行全面验证,确保功能正确。通过SignalCompiler转换为VHDL语言实现,还可以在不同公司的FPGA器件之间移植,给设计带来很大的灵活性。同时,参数化结构设计,可根据情况调整设计规模在FPGA上实现FIR数字滤波。
FIR滤波器以其优越的性能在数字信号处理领域中占有很重要的地位。利用FPGA实现FIR数字滤波器,具有实时性、灵活性以及执行速度快等特点,大大提高了滤波器设计、计算、调试的速度。
本文作者创新点,抛弃传统的通用数字滤波集成电路,选用FPGA来实现FIR数字滤波。用FPGA实现数字滤波具有灵活性强、精度高、处理速度快、成本低等多种特点,提高了工作效率,降低了生产成本,有一定的市场前景。