基于DSP Builder的16阶FIR滤波器实现

2010-05-13 09:17范寒柏,司加祯
现代电子技术 2009年20期
关键词:滤波器

范寒柏,司加祯

摘 要:现场可编程门阵列(FPGA)器件广泛用于数字信号处理领域,而使用VHDL或VerilogHDL语言进行设计的难度较大。提出一种采用DSP Builder实现FIR滤波器的设计方案,按照Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ的设计流程,设计一个16阶的FIR低通滤波器,并完成了软硬件的仿真与验证。结果表明,该方法简单易行,可满足设计要求,它验证了采用DSP Builder实现滤波器设计的独特优势。

关键词:FIR 滤波器;Simulink;DSP Builder;Quartus Ⅱ

中图分类号:TN713文献标识码:A

文章编号:1004-373X(2009)20-193-03

Design of 16-taps FIR Filter Based on DSP Builder

FAN Hanbai,SI Jiazhen

(North China Electric Power University,Baoding,071003,China)

Abstract:Field Programmable Gate Array(FPGA)devices is widely used in the field of digital signal processing,it is difficult to design using VHDL or VerilogHDL.A model development technology of DSP Builder is adopted to design FIR filter,according to the flow of Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ,a 16-taps low-pass FIR filter is designed,which is simulated and verified in the digital signal process circuit,the results show that the method is simple,feasible and the advantage of designing digital filter by the use of DSP builder are verified.

Keywords:FIR filter;Simulink;DSP Builder;Quartus Ⅱ

FIR数字滤波器在数字信号处理的各种应用中发挥着十分重要的作用,它能够提供理想的线性相位响应,在整个频带上获得常数群时延,从而得到零失真输出信号,同时它可以采用十分简单的算法予以实现。这些优点使FIR滤波器成为设计工程师的首选。在采用VHDL或VerilogHDL等硬件描述语言设计数字滤波器时,由于程序的编写往往不能达到良好优化而使滤波器性能表现一般,而采用调试好的IP Core需要向Altera公司购买。在此,采用一种基于DSP Builder的FPGA设计方法,使FIR滤波器设计较为简单易行,并能满足设计要求[1]。

1 FIR滤波器介绍

1.1 FIR滤波器原理[2,3]

对于一个FIR滤波器系统,它的冲激响应总是有限长的,最具体的FIR滤波器可用下式表示[4]:

y(n)=∑Mr=1b(r)x(n-r)

式中:r是FIR滤波器的抽头数;x(n-r)是延时r个抽头的输入信号;b(r)是第r级抽头数(单位脉冲响应);M是滤波器的阶数;y(n)表示滤波器的输出序列。

滤波器就是寻求一个可实现的系统函数H(z),使其频率响应H(ejω)满足所希望得到的频域信号,也可以用卷积的形式来表示:

y(n)=x(n)*h(n)

典型的直接I型FIR滤波器如图1表示,其输出序列y(n)满足下式[5]:

y(n)=h(0)x(n)+h(1)x(n-1)+

h(2)x(n-2)+…+h(15)x(n-15)

图1 直接I型FIR滤波器

1.2 设计要求

数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统。它的设计步骤是先根据需要确定其性能指标,设计一个系统函数h(n)逼近所需要的性能指标,滤波器的系数计算可以借助Matlab强大的计算功能和现成滤波器设计工具来完成,最后采用有限的精度算法实现[5]。该系统的设计指标为:设计一个16阶的低通滤波器,选模拟信号的采样频率Fs为5 kHz,要求信号的截止频率Fc=1 kHz,输入序列的位宽为9位(最宽位为符号位)。激励源为幅值为27,频率为800 Hz与1 600 Hz两个信号的混频信号。

2 基于DSP Builder设计FIR滤波器

2.1 DSP Builder介绍

DSP Builder是美国Altera公司推出的一个面向DSP开发的系统级设计工具,它在Quartus Ⅱ设计环境中集成了Matlab和Simulink DSP开发软件。

以往使用的Matlab工具仅仅作为DSP算法的建模和基于纯数学的仿真,其数学模型无法为硬件DSP应用系统直接产生实用的程序代码,仿真测试的结果也往往是基于数学的算法结果。而以往的FPGA所需要的传统基于硬件描述语言的设计因考虑了FPGA硬件的延时与VHDL递归算法的衔接,以及补码运算和乘积结果截取等问题,所以相当繁琐。

而对于DSP Builder而言,它作为Matlab的一个Simulink工具箱,使得用FPGA设计的DSP系统完全可以通过Simulink的图形化界面进行建模、系统级仿真。设计模型可直接向VHDL硬件描述语言转换,并自动调用QuartusⅡ等EDA设计软件,完成综合、网表生成以及器件适配乃至FPGA

的配置下载,使得系统描述与硬件实现有机地融合,充分体现了现代电子技术自动化开发的特点与优势[6]。

2.2 FIR滤波器的设计

2.2.1 FIR滤波器参数选取

采用Matlab提供的滤波器专用设计工具FDAtool仿真设计的滤波器[7],可满足要求的FIR滤波器幅频特性,由于浮点小数在FPGA中实现得比较困难,且代价太大,因而需要将滤波器的系数和输入数据转化为整数,其中量化后的系统可以在Matlab主窗口中直接转化,对于输入数据,乘以28的增益用Altbus控制位宽转化为整数输入。

2.2.2 FIR滤波器模型的建立

根据FIR滤波器原理,可以利用FPGA来实现FIR滤波电路。DSP Builder设计流程的第一步是在Matlab/Simulink中进行设计输入的,即在Matlab的Simulink环境中建立一个MDL模型文件,用图形方式调用DSP Builder和其他Simulink库中的图形模块,构成系统级或算法级设计框图[6],如图2所示。

图2 FIR滤波器模型

2.2.3 在Simulink中的仿真并生成VHDL代码[8]

完成模型设计之后,可以先在Simulink中对模型进行仿真,可以通过Simulink中的示波器模块查看各个步骤的中间结果。输入信号采用800 Hz和1 600 Hz,幅值相同的两个正弦信号的叠加。仿真结果如图3所示。从仿真波形可以看出,通过滤波器之后,1 600 Hz的信号能够被很好地滤除[9]。

图3 Simulink中的仿真波形

双击Signal Compiler可对以上的设计模型进行分析,选择相应的芯片,将以上设计模块图文件“翻译”成VHDL语言。

2.2.4 Modelsim的RTL仿真[10]

在Simulink中进行的仿真属于系统验证性质的,是对mdl文件进行的仿真,并没有对生成的VHDL代码进行仿真。事实上,生成VHDL描述的是RTL级的,是针对具体的硬件结构,而在Matlab的Simulink中的模型仿真是算法级的,两者之间有可能存在软件理解上的差异,转化后的VHDL代码实现可能与mdl模型描述的情况不完全相符。这就需要针对生成的RTL级VHDL代码进行功能仿真,仿真结果如图4所示。

图4 Modelsim进行RTL仿真的波形

仿真结果说明,在Modelsim中仿真结果和Simulink里的仿真结果基本一致,该滤波器有较好的滤波效果。可以看出,输入正弦波经过数字化过程以后,能够在Modelsim中还原出模拟波形,符合设计的要求,可以在Quartus Ⅱ的环境下进行硬件设计[1]。

2.2.5 滤波器在FPGA上的实现[1]

在Quartus Ⅱ环境中,打开DSP Builder建立的Quartus Ⅱ项目文件,在Quartus Ⅱ中再进行一次仿真,由此可以看到符合要求的时序波形,然后指定器件引脚,并进行编译,最后下载到FPGA器件中,就可以对硬件进行测试,加上clok信号和使能信号,用信号发生器产生所要求的两个不同频率的正弦信号,就可以在示波器上看到滤波后的结果。需要设计不同的滤波器电路是仅修改FIR滤波器模型文件就可以实现,这样不仅避免了繁琐的VHDL语言编程,而且便于进行调整。

3 结 语

在利用FPGA进行数字滤波器开发时,采用DSP Builder作为设计工具,能加快进度。当然,在实际应用中,受精度、速度和器件选择方面的影响,可能对其转化的VHDL进行进一步的优化。

参考文献

[1]杨丽杰,崔葛瑾.基于FPGA的FIR滤波器设计方法的研究[J].东北大学学报,2006,32(6):93-96.

[2]程佩清.数字信号处理教程[M].北京:清华大学出版社,1995.

[3]胡广书.数字信号处理理论、算法与实现[M].北京:清华大学出版社,2002.

[4]田东生,王鹏.基于FPGA的FIR滤波器的设计与实现[J].电子测量,2007(10):54-57.

[5]张淼,伏云昌.基于DSP Builder的14阶FIR滤波器的设计[J].现代电子技术,2007,30(21):185-186.

[6]潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003.

[7]张志恒,王卫芳.基于Matlab信号处理工具箱的数字滤波器设计与仿真[J].电力学报,2007,22(1):54-56.

[8]王紫婷,郭海丽.基于Matlab/Simulink的数字滤波器IP核的设计与实现[J].兰州交通大学学报,2008,27(3):111-113.

[9]杨守良.Matlab/Simulink在FPGA设计中的应用[J].微计算机信息,2005,21(16):98-100.

[10]袁博,宋万杰,吴顺君.基于FPGA的Matlab与Quartus Ⅱ联合设计技术研究[J].电子工程师,2007,33(1):6-8.

猜你喜欢
滤波器
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
基于Canny振荡抑制准则的改进匹配滤波器
基于SystemView的匹配滤波器设计与仿真
基于TMS320C6678的SAR方位向预滤波器的并行实现
LCL滤波器在6kV级联STATCOM中的应用