科学计算与信息处理胡紫英等:基于SoPC的FIR滤波器设计与实现
基于SoPC的FIR滤波器设计与实现
胡紫英1,周维龙2,聂 辉2
(1.湖南科技学院,湖南永州 425100;2.湖南工业大学电气与信息工程学院,湖南株洲 412008)
摘 要:分析了FIR滤波器几种常见实现方法的原理与不足;提出一种基于SoPC的FIR滤波器设计;介绍了系统的设计流程及实现方法;结合Matlab给出FIR滤波器的仿真结果。整个设计以Altera公司现场可编程逻辑器芯片
EP3C25E144C8N为核心,具有程序简单,调试方便的特点,有一定的实用价值及应用前景。关键词:FIR滤波器;SoPC;Matlab;现场可编程逻辑器
中图分类号:TP713 文献标识码:A 文章编号:10042373X(2010)1220072203
DesignandRealizationofFIRFilterBasedonSoPC
HUZi2ying1,ZHOUWei2long2,NIEHui2
(1.HunanUniversityofScienceandEngineering,Yongzhou425100,China;
2.ElectricandInformationEngineeringCollege,HunanUniversityofTechnology,Zhuzhou412008,China)
Abstract:AdesignofFIRfilterbasedonSoPCisproposed,andtheprincipleanddeficiencyofseveralcommonrealizationmethodsofFIRfilterareanalyzed.Thedesignflowandrealizationofthesystemisdiscussed,andthesimulationresultofFIRfilterisgivencombinedwithMatlab.ThesystemusestheEP3C25E144C8N(producedbyAltera)asthecore,andithasfea2turesofsimpleprogramandconvenientdebugging.
Keywords:FIRfilter;SoPC;Matlab;FPGA
0 引 言
grammablegatearray),即现场可编程门阵列,有着规
整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器实现,相对于串
行运算主导的通用DSP芯片来说,并行性和可扩展性都更好[2]。
本文介绍一种基于SoPC的FIR滤波器设计方案,设计流程如图1所示。该设计方法程序简单,调试方便,得到的FIR滤波器精确度高。1 FIR滤波器原理
FIR数字滤波器是一种非递归系统,其冲激响应总
M
数字滤波(idgitalfilter)是由数字乘法器、加法器和延时单元组成的一种计算方法。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。数字滤波器根据频域特性可分为低通、高通、带通和带阻4个基本类型;根据时域特性可分为无限脉冲响应(infiniteimpulseresponse,IIR)滤波器和有限脉冲响应(finiteimpulseresponse,FIR)滤波器。FIR滤波器不存在稳定性和是否可实现的问题,容易做到线性相位,故在数据通信、图像处理等领域广泛应用[1]。
目前,FIR滤波器的硬件实现有以下几种方式:一种是使用通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要;虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到。另一种是使用DSP芯片,DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到。而且,就是同一公司不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。还有一种是使用可编程逻辑器件,如FPGA(fieldpro2
收稿日期:2010201222
基金项目:湖南省教育厅科研项目(09C446)
是有限长的,其系统函数可以记为:H(z)=最基本的FIR滤波器可用下式表示
[3]
k=0
∑
bkz
-k
,
N-1
:y(n)=
m=0
∑x(n
-m)h(m)。式中:x(n-m)是输入采样序列;h(m)是滤
波器系数;N是滤波器的阶数;y(n)表示滤波器的输出序列。也可以用卷积来表示输出序列y(n)与x(n),h(n)的关系:
y(n)=x(n)3h(n)
图2显示了一个典型的直接T型3阶FIR滤波器[4],其输出序列y(n)满足下列等式:
h(n)=h(0)x(n)+h(1)x(n-1)+
h(2)x(n-2)+h(3)x(n-3)
72
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
《现代电子技术》2010年第12期总第323期
器进行重新配置。
计算机应用技术
图1 设计流程图
图2 3阶FIR滤波器结构
在该FIR滤波器中,总共存在3个延时结,4个乘法单元,1个4输入的加法器。如果采用普通的数字信号处理器(DSP)来实现,只能用串行的方式顺序地执行延时、乘加操作,不可能在1个DSP处理器指令周期内完成,必须用多个指令周期来完成。但如果采用FPGA来实现,就可以采用并行结构,在1个时钟周期内得到1个FIR滤波器的输出。不难发现,图2的电路结构是一种流水线结构,这种结构在硬件系统中有利于并行高速运行[5]。2 FIR滤波器的实现
Altera提供的FIRComplier是结合AlteraFPGA
图3 确定FIR滤波器系数2.3 生成VHDL语言完成FIR滤波器核配置后,便可得到设计好的滤
波器,加入输入/输出信号,形成如图4所示电路。点击SignalCompiler,再选择Analyze,选择Siglestepcom2pilation中的ConvertMDLtoVHDL,就可以生成对应
的VHDL语言。
器件的FIRFilterCore,DSPBuilder与FIRCompiler可以紧密结合起来。DSPBuilder提供了FIRCore的应用环境和仿真验证环境。2.1 建立模型文件为了调用FIRIPCore,在Simulink环境中新建模型文件,放置SignalCompiler模块和FIR模块。启动Simulink的方法:打开Matlab,在主命令窗口直接键入Simulink,按回车即可。然后打开AlteraDSPBuilder模块,在MegaCoreFunctions调出fir_compiler_v7_0。2.2 配置FIR滤波器核[6]
图4 FIR滤波器编译电路图
在QuartusⅡ中打开编译后生成的fir.qpf工程文件,可以得到滤波器的VHDL语言,其部分代码如下:
libraryieee;
useieee.std_logic_11.all;useieee.std_logic_signed.all;librarydspbuilder;
usedspbuilder.dspbuilderblock.all;librarylpm;
uselpm.lpm_components.all;Entityfiris Port( clock: instd_logic; sclrp: instd_logic:=′0′; ast_sink_data: instd_logic_vector(31downto0); ast_sink_error: instd_logic_vector(1downto0); ast_sink_valid: instd_logic; ast_source_ready: instd_logic; reset: instd_logic; Output: outstd_logic; Output1: outstd_logic_vector(31downto0); Output2: outstd_logic_vector(1downto0); Output3: outstd_logic
); endfir;
双击模型中的FIR模块,在弹出来的选择窗口中有:关于这个核(aboutthiscore)、程序说明书(docu2mentation)、显示元件(displaysymbol)、步骤1确定参数(Step1:Parameterize)和步骤2生成(Step2:Gener2ate)等4个不同的选项。点击Step1,便打开了FIR滤波器核的参数设置窗口,如图3所示。
由图3可见,滤波器的系数精度为32位,器件为CycloneⅢ,结构为并行滤波器,结构选择了1级流水线,滤波器由LC逻辑宏单元构成,系数数据存于FP2GA的M9K模块中,1个输入通道,32位有符号并行输
入,全精度数据输出。设定后会直接显示滤波器的频率响应(frequencyresponse)或时域响应及系数值(timeresponse&coefficeientvalues)。由其频率响应图可以看出,此FIR滤波器为低通滤波器。如果不符合设计要求,则可以通过对EditCoefficientSet选项,对滤波
编译成功后,可以将其转换成元件。2.4 系统功能仿真
在Matlab中,建立M文件,运用前面设置好参数所生成的FIR滤波器,打开FIR滤波器时域响应与系
73
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
科学计算与信息处理胡紫英等:基于SoPC的FIR滤波器设计与实现
的快速处理和控制,实现键盘可设置参数及LCD显示。经实际电路测试验证,达到了设计的要求[8]。4 结 语
数值(timeresponse&coefficeientvalues)。得到该滤波器的时域响应和系数值如图5所示,由该系数表确定
滤波器,并进行算法级仿真,得到如图6所示的波形。图6(a)为滤波前信号,图6(b)为滤波后信号。从仿真波形可以看出,经过FIR滤波器之后,高次谐波信号被很好地滤除了,达到了预定的设计目标[7]。
这种基于SoPC数字滤波器的设计与实现,不仅利用Matlab中的Simulink与AlterlDSPBuilder工具确定FIR滤波器系数,不用编程,只需简单的设置,而且通过VHDL层次化设计方法,同时使FPGA与单片机相结
合,采用C51及VHDL语言模块化设计思想进行优化编程,进一步完善了数据的快速处理和有效控制,提高了设计的灵活性、可靠性,也增强了系统功能的可扩展性。图5 FIR滤波器时域响应与系数值图参 考 文 献
[1]张登奇,李望移.基于Matlab的FIR数字滤波器设计[J].
计算机时代,2007(11):47249.
[2]王静,鱼云岐.基于FPGA的FIR数字滤波器设计与仿真
[J].国外电子元器件,2008(11):90292.
[3]程佩青.数字信号处理教程[M].3版.北京:清华大学出版
社,2006.
图6 FIR的仿真波形
[4]罗韩君,刘明伟,王成.基于DSPBuilder的FIR滤波器设计
与实现[J].微计算机信息,2009,25(2):1482149.
3 基本FPGA片上系统的功能测试
[5]潘松,黄继业.EDA技术与VHDL[M].2版.北京:清华大
设计目标器件选用美国Altera公司Cyclone系列FPGA器件中的EP3C25E144C8N芯片,通过开发工
学出版社,2007.
[6]AlteraCorporation.FIRcompileruserguide[M].[S.l.]:
AlteraCorporation,2006.
[7]张志涌.精通Matlab6.5版[M].北京:北京航空航天大学
具QuartusⅡ对各个模块的VHDL源程序及顶层电
路进行编译、逻辑综合、电路的纠错、验证、自动布局布线及仿真等各种测试,最终将设计编译的数据下载到芯片中,同时与单片机ATC51结合,进一步进行数据
出版社,2003.
[8]杨国庆.基于FPGA的FIR数字滤波器的设计与实现[J].
现代电子技术,2008,31(19):1842186.
作者简介:胡紫英 女,1974年出生,湖南永州人,实验师,硕士。
周维龙 男,1978年出生,湖南邵阳人,讲师。主要研究方向为嵌入系统的设计与应用。聂 辉 男,1978年出生,湖南湘潭人,讲师。主要研究方向为EDA及嵌入系统设计与应用。
(上接第71页)
参 考 文 献
[1]费兆馥.现代中医脉诊学[M].北京:人民卫生出版社,2003.[2]孙延奎.小波分析及其应用[M].北京:机械工业出版
[5]邱雅竹,冯俊.基于小波变换的心电信号检测新方法[J].四
川师范大学学报:自然科学版,2005,28(3):2702272.
[6]IWATAA,AZENCOTTR.DatacompressionofECGusing
neuralnetworksfordigitalHoltermonitor,IEEETrans.onBME,1992,39(4):1362139.
[7]KOHLERBertUwe,HENNIGCarsten.Theprinciplesof
softwareQRSdetection[J].IEEETrans.onBME,2002(2):42257.
[8]YOSHIZAWAM.Classicalbuteffectivetechniquesfores2
timatingcardiovasculardynamics[J].IEEEEng.inMed.&Bio.,1997,16(1):1062112.
社,2005.
[3]王鹏,魏守水,黄青华.基于小波变换的自适应滤波器消除
脉搏波基线漂移[J].中国医学物理学杂志,2004,21(5):
2962299.
[4]燕海霞,王忆勤,李福凤.脉象信号分析方法的研究与应用
新解[J].中医药学刊,2005,23(1):1292130,190.
作者简介:张 洁 女,1984年出生,浙江杭州人,硕士研究生。研究方向为生物医学信号处理。
74
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net