在信息信号处理过程中,如对信号的过滤、检测、预测等,都要使用到滤波器,数字滤波器是数字信号处理中使用最广泛的一种方法,常用的数字滤波器有无限长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器两种[1]。对于应用设计者,由于开发速度和效率的要求很高,短期内不可能全面了解数字滤波器相关的优化技术,需要花费很大的精力才能使设计出的滤波器在速度、资源利用、性能上趋于较优。而采用调试好的IP核需要向Altera公司购买。本文采用了一种基于DSP Builder的FPGA设计方法,以一个低通的16阶FIR滤波器的实现为例,通过生成的滤波器顶层模块文件与A/D模块文件设计,在联星科技的NC-EDA-2000C实验箱上验证了利用该方法设计的数字滤波器电路工作正确可靠,能满足设计要求。
1 FIR滤波器的参数设计
1.1 设计要求
数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,它的设计步骤为先根据需要确定其性能指标,设计一个系统函数H(z)逼近所需要的技术指标,最后采用有限精度算法实现。本系统的设计指标为:设计一个16阶的低通FIR滤波器,对模拟信号的采样频率Fs为48KHz,要求信号的截止频率Fc=10.8kHz,输入序列为宽为9位(最宽位为符号位)。
1.2 FIR滤波器的参数选取
设计频率选择性数字滤波器时,通常希望能有近似恒定的频响幅度,并尽量减小通带内的相位失真,斜率为整数的线性相位对应于时域中简单的延时,他在频域中可将相位失真降低到最小的程度[2],用Matlab提供的滤波器设计的专门工具箱--FDAtool仿真设计滤波器,满足要求的FIR滤波器幅频特性,如图1所示。
2 数字滤波器的DSP Builder设计
2.1 DSP Builder介绍
DSP Builer是Altera推出的一个数字信号处理(DSP)开发工具,他在Quartus II FPGA设计环境中集成了Mathworks的Matlab和Simulink DSP开发软件[3]。对DSP Builder而言,包括DSP系统的建模,系统级仿真、设计模型向VHDL硬件描述语言代码的转换、RTL(Register Transfer Level,逻辑综合)级功能仿真测试、编译适配和布局布线、时序实时仿真直至对DSP目标器件的编程配置,整个开发流程几乎可以在顶层的开发工具Matlab/Simulink同一环境中完成。
2.2 FIR 滤波器算法模型建立
根据FIR滤波器原理,可以利用FPGA来实现FIR滤波电路,DSP Builder设计流程的第一步是在Matlab/Simulink中进行设计输入,即Matlab的Simulink环境中建立一个MDL模型文件,用图形方式调用Altera DSP Builder和其他的Simulink库中的图形模块,构成系统级或算法级设计框图(或称Simulink建模)。