基于FPGA技术的FIR数字滤波器的设计
摘要:在数字化技术在各个领域得到广泛运用的今天,数字滤波器是数字系统中信号处理关键的一环。数字滤波器和模拟滤波器相比具有更高的精度、信噪比,以及不可比拟的可靠性。由于在性能、成本、灵活性和功耗等方面的优势,基于fpga的信号处理器已广泛应用于各种信号处理领域。本文主要介绍了基于现场可编程门阵列(fpga)技术fir数字滤波器的设计,该方法通过dsp builder和matlab等软件进行开发、仿真和验证,使之便于在fpga中实现。
关键词:数字滤波器 现场可编程门阵列 fir dsp builder matlab;
中图分类号:tn820 文献标识码:a 文章编号:1007-9416(2012)02-0104-03
通常在信号产生、采集、传输过程中产生杂波和噪声,通常需要加入滤波器将干扰无用的噪声或者不需要频段的信号滤除。数字滤波器和模拟滤波器相比具有更高的精度、信噪比,以及不可比拟的可靠性[1]。只要适当改变数字滤波程序有关参数,就能方便的改变滤波特性,因此数字滤波使用时方便灵活。
由于在性能、成本、灵活性和功耗等方面的优势,基于fpga的信号处理器已广泛应用于各种信号处理领域。本文正是在此背景下研究基于fpga技术,运用dsp builder和matlab等软件工具设计工程中实用的fir数字滤波器。
1、fir数字滤波器设计原理
有限长脉冲响应(fir)滤波器的系统函数只有零点,除原点外,没有极点,因而fir滤波器总是稳定的[2]。
长度为m的因果有限冲激响应滤波器由传输函数h(z)描述:
它是次数为m-1的z-1的一个多项式。在时域中,上述有限冲激响应滤波器的输入输出关系为:
其中x(n)是输入采样序列,h(i)是滤波器系数,y(n)表示滤波器的输出序列。
通常一个长度为m的有限冲激响应滤波器由m个系数描述,并且需要m个乘法器和(m-1)个双输入加法器来实现。
在这个fir滤波器中,总共存在3个延时节,4个乘法单元,一个4输入的加法器。
2、设计方案及设计指标
2.1 dsp builder设计概述
fpga的dsp性能领先的关键是其内在的并行机制,即利用并行架构实现dsp功能的功能。这一并行机制使得fpga特别适用于完成像滤波这样的重复性dsp任务。因此,对于高度并行执行dsp任务来说,fpga性能远超通用dsp处理器的串行执行架构。
altera公司开发的dsp builder将matlab和simulink系统级设计工具的算法开发、仿真和验证功能与vhdl综合、仿真和altera开发工具整合在一起,实现了这些工具的集
成,从而大大缩短了dsp设计周期。dsp builder signalcompiler模块读取由dsp builder和megacore模块构建的simulink建模文件(.mdl),生成vhdl文件和工具命令语言(tcl)脚本,进行综合、硬件实施和仿真。图2为dsp builder设计流程。
2.2 设计指标
fir滤波器设计需达到以下指标:低通滤波,blackman窗函数,采样频率fs为20khz,截止频率fc为5khz,37阶滤波器,16位输入数据宽度。
2.3 设计方案
设计基于ffga的fir数字滤波器有两种可选方案。
一是根据fir的设计原理,通常一个长度为m的有限冲激响应滤波器由m个系数描述,并且需要m个乘法器和(m-1)个双输入加法器来实现,常用做法是利用dsp builderd搭建一个i型4阶fir滤波器,并且将其构建为一个4阶fir子系统,以此搭建4xn阶的直接i型滤波器[2]。然后利用matlab下fdatool工具得到fir滤波器的系数。
利用fdatool窗函数法设计37阶低通fir滤波器参数设置如图3所示。
参数设定完毕,单击工具窗口下方的design filter按钮,开始进行相关参数计算。在计算结果中我们可以看到该滤波器的一些相关曲线,幅频、相频响应如图4所示。
计算的结果可通过export命令取出,在matlab中对fir滤波器的系数进行调整,做整数化操作。
另一种方法是采用设计好的fir滤波器的ip核,其在速度、资源利用、性能上往往进行过专门的优化,还提供了相关的ip应用开发工具。
首先在打开matlab下simulink,选择altera dsp builder blockset下megacore functions库,添加fir_compiler_v9_1到工程中,双击fir compiler模块,按照指标要求设置滤波器各项参数然后生成fir滤波器,如图5所示。
3、验证
3.1 建立仿真电路结构
生成fir滤波器模块后需要对生成的模块进行建模、仿真和分析滤波效果,加以验证。需要向设计中输入低频500hz和高频6.7khz的2个信号,利用所设计的滤波器进行滤波,除此之外需要加入fir模块的其他输入信号,其中testbench模块提供modelsim仿真用的vhdl语言描述的testbench,设计中还有signal compiler模块,正是通过这个模块生成供fpga使用的vhdl语言描述的模块,然后工程中例化fir模块。建立的仿真电路结构如图6所示。
3.2 仿真参数设置
构建完真电路结构后需要对添加的模块设置仿真参数,才能在simulink中加以仿真。其中对于时钟模块,实时时钟和仿真采样时间都设置为1/20000s,设置如图7所示。
其中500hz信号的模块设置如图所示,amp设置为63,每周波采样40点,采样时间设为1/20000s。6.7khz采样时间相同,每周波3个点,amp设为32。
3.3 仿真结果分析
图9为输入输出波形在simulink中scope的波形。其中图的上部分为低频500hz叠加高频6.7khz的混叠波形,明显看出正弦信号存在高频分量。下图为经过fir数字滤波后的波形,明显高频分量已经很好的滤除。
4、结语
本文利用dsp builder实现fir数字低通滤波器,通过simulink算法进行仿真,结果证明采用该方法设计的fir数字低通滤波器功能正确,性能良好,可以提高fir滤波器的设计质量,加快设计进程,验证结果直观明了。随着各类数字信号处理的ip cores的进一步完善,基于fpga的dsp系统的应用会更加广泛。
参考文献
[1]李彬.fir数字滤波器的fpga实现技术研究[d].西南交通大学,2007.
[2]蔡楠.基于vhdl语言的fir滤波器软件设计[j].科技信息,2010,(34):633-634.
[3]潘松.eda技术与vhdl[m].北京:清华大学出版社,2006.
因篇幅问题不能全部显示,请点此查看更多更全内容