《阶高通滤波器》word版.docx
- 文档编号:4543879
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:30
- 大小:489.29KB
《阶高通滤波器》word版.docx
《《阶高通滤波器》word版.docx》由会员分享,可在线阅读,更多相关《《阶高通滤波器》word版.docx(30页珍藏版)》请在冰豆网上搜索。
《阶高通滤波器》word版
数字信号处理课程设计
题目:
基于DSPBuilder的FIR数字滤波器的仿真设计
姓名:
周琳段妍耿婉露崔莹盖萍萍
专业:
电子信息工程
班级:
08级3班
院系:
信息科学与工程学院
入学年度:
2008年
指导教师:
魏洪峰
日期:
2011年3月13日
基于DSPBuilder的FIR数字滤波器的仿真设计
摘要:
数字滤波器是数字信号处理中的核心环节,而FIR数字滤波器因其具有严格的线性相位,系统总是稳定等特点而广泛应用于数字信号处理的各个领域,因此是一个重要的研究课题。
随着微电子技术的发展,数字信号处理得到了飞速发展。
数字滤波器是谱分析、雷达信号处理、通信信号处理应用中的基本处理算法,在数字音频、图像处理、数据传输、生物医学等领域得到了广泛应用。
本文内容包括FIR数字滤波器的网络结构、线形相位条件和特点以及设计方法、基于MATLAB/Simulink的DSP设计技术、详细的设计流程向导、ModelSim仿真等。
本文通过一个设计实例,提出了一种采用DSPBuilder实现有限冲激响应滤波器的设计方案,并以一个24阶低通数字滤波器的实现为例,设计并完成软件仿真与验证。
通过仿真与验证,本系统所设计的数字滤波器能够成功运行,且所设计滤波器稳定性好,精确度高,不易受环境影响。
在利用FPGA进行数字滤波器的开发时,采用基于Matlab环境的DSPBuilder作为设计工具可以更方便的建立模型,完成整个设计。
关键词:
MATLAB;数字滤波器;DSPBuilder;仿真
TheDesignOfTheFIRDigitalFilter
BasedOnDSPBuilder
Abstract:
Digitalfilteralgorithmisoneofthecoretechniquesinsignalprocessing.TheFIRdigitalfilterhasbeenwidelyusedinsignalprocessingfieldbecauseofitsstrictlinearphaseandstability.Withthedevelopmentofmicroelectronicstechnology,digitalsignalprocessinghasmaderapiddevelopment.Digitalfilteristhebasicprocessingalgorithmsinrespectofspectralanalysis,radarsignalprocessingandcommunicationssignalprocessingapplications,andreceivewidelyapplicationatthefieldofdigitalaudio,Imageprocessing,datatransmissionandbiomedicaletc.
ThiscontentincludesFIRdigitalfilternetworkstructure,linear-phaseconditions,characteristics,designmethods,DSPdesigntechnologyofMATLAB-based,detaileddesignflowguideandModelSimsimulationandsoon.ThispaperposedadesignexamplethroughusingtheDSPBuilderrealizeFiniteImpulseResponseFilterandcompletehardwaredesignsimulationandverificationasanexamplebytherealizationof24-steplow-passdigitalFIRfilter.
Throughsimulationandverification,thesystemofthedigitalfilterdesignedcanrunsuccessfully,andthedesignedfilterhasgoodstability,highaccuracy,lesssusceptibletoenvironmentalimpacts.IntheuseofFPGAforthedevelopmentofdigitalfiltersusingMatlab-basedenvironmentasadesigntoolforDSPBuildercanbemoreconvenientto
createmodels,andtocompletethewholedesign.
Keywords:
MATLAB;Digitalfilter;DSPBuilder;Simulation.
一、前言1
(一)数字滤波器的概念以及分类1
(二)FIR和IIR滤波器的比较1
二、FIR数字滤波器的原理3
六、DSPBuilder设计流程14
七、基于DSPBuilder设计FIR数字滤波器17
(一)3阶常系数FIR滤波器的设计17
(二)4阶FIR滤波器节的设计21
(三)12阶FIR滤波器模型设计25
八、基于MATLAB的滤波器设计工具30
(一)滤波器指标30
(二)打开MATLAB的FDATOOL30
(三)选择DESIGNFILTER31
(四)滤波器分析33
(五)量化36
(六)导出滤波器系数39
(七)修改FIR滤波器模型添加参数41
(八)导出滤波器系数的另一种方法41
九、结束语43
一、前言
(一)数字滤波器的概念以及分类
所谓数字滤波器是指输入输出均为数字信号,通过一定的运算关系改变输入信号中所含频率成分的相对比例或者滤除某些频率成分的器件。
常用的滤波器有无限长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器两种。
其中,FIR滤波器能提供理想的线性相位响应,在整个频带上获得常数群延时从而得到零失真输出信号,同时它可以采用十分简单的算法实现,这两个优点使FIR滤波器成为设计的首选。
采用一种基于DSPBuilder的FPGA设计方法,使FIR滤波器设计较为简单易行,并能满足设计要求。
设FIR滤波器单位脉冲响应
长度为N,其系统函数
为:
(1-1)
是
的(N-1)次多项式,它在z平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。
因此,
永远稳定。
稳定和线性相位特性是FIR滤波器突出的优点。
(二)FIR和IIR滤波器的比较
在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。
因此,指标的形式应为频域中的幅度和相位响应。
在通带中,通常希望具有线性相位响应。
在FIR滤波器中可以得到精确的线性相位。
在IIR滤波器中通常的相位是不可能得到的,因此主要考虑幅度指标。
IIR数字滤波器的设计和模拟滤波器的设计有着密切的联系。
通常
要设计出适当的模拟滤波器,再通过一定的频带变换把它转换成所需要的数字IIR滤波器。
此外,任何数字信号处理系统中也还不可避免地用到模拟滤波器,因此模拟滤波器设计也是数字信号应该掌握的技术。
FIR滤波器的设计方法和IIR滤波器的设计方法有很大的不同。
FIR滤波器设计任务是选择有限长度的
,使传输函数
满足技术要求。
在设计和实现上FIR滤波器具有如下优越性:
(1)相应相位可为严格线性,因此它不存在延迟失真,只有固定的时间延迟;
(2)由于不存在稳定性问题,所以设计相对简单;
(3)只包含实数算法,不涉及复数算法,不需要递推运算,长度为M的滤波器(阶数为M-1)它的计算值约为M/2。
二、FIR数字滤波器的原理
对于一个FIR滤波器系统而言,它的冲激响应总是有限长的,其系统函数可以记为:
(2-1)
其中M是FIR滤波器的零点数,即延时节数,在这里被称为FIR滤波器的节数。
最基本的FIR滤波器可用下式表示:
(2-2)
其中
是输入采样序列,
是滤波器系数,L是滤波器的系数长度,
表示滤波器的输出序列。
也可以用卷积来表示输出序列
与
、
的关系。
(2-3)
图2-1中显示了一个典型的直接I型4阶FIR滤波器,其输出序列
满足下列等式:
(2-4)
图2-14阶FIR滤波器结构
在这个FIR滤波器中,总共存在3个延时节,4个乘法单元,一个4输入的加法器。
如果采用普通的数字信号处理器(DSPProcessor)来实现,只能用串行的方式顺序的执行延时,乘加操作,这不可能在一个DSP(指数字信号处理器)指令周期内完成,必须用多个指令周期来完成。
但是,如果采用FPGA来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR滤波器的输出。
六、DSPBuilder设计流程
DSPBuilder是一个系统级(或算法级)设计工具,它架构在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度发挥了两种工具的优势。
DSPBuilder依赖于MathWorks公司数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时又通过SignalCompiler可以把Matlab/Simulink的设计文件(.mdl)转成相应的硬件描述语言VHDL设计文件(.vhd),以及用于控制综合与编译的TCL脚本。
而对后者的处理可以由FPGA/CPLD开发工具Quartus
,DSPBuilder针对不同情况提供了两套设计流程,即自动流程和手动流程。
图6-1是利用DSPBuilder进行DSP设计的流程框图。
如图6-1所示,DSPBuilder设计流程第一步是在Matlab/Simulink中进行设计输入,即在Matlab的Simulink环境中建立一个mdl模型文件,用图形方式调用AlteraDSPBuilder和其它Simulink库中的图形模块(Block),构成系统级或算法级设计框图(或称Simulink设计模型)。
第二步是利用Simulink强大的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真。
在这两步中,与一般的MatlabSimulink建模过程几乎没有什么区别,所不同的是设计模型库采用AlteraDSPBuilder的Simulink库,也不涉及到其它EDA软件,没有自动流程和手动流程的区别。
图6-1DSPBuilder设计流程
为了针对不同用户的设计目的和设计要求,DSPBuilder提供了两种不同的设计流程,主要可以分为自动流程和手动流程。
在手动流程中,设计者可以灵活地指定综合、适配条件。
不过,需要手动的调用VHDL综合器进行综合,调用Quartus
进行适配,调用ModelSim或者Quartus
进行仿真,最后用Quartus
产生相应的编程文件用于FPGA的配置。
采用手动流程时,除了行为级仿真验证和设计输入外,其它过程与标准的基于VHDL的EDA设计流程完全是一致的。
由上一步的DSPBuilder设计流程得到VHDL文件(由Simulink模型文件
.mdl通过SignalCompiler转换而成),送入综合器进行综合。
综合器可以是SynplifyPro,也可以是LelnardoSpectrum,或者采用Altera自己的
Quartus
。
在综合时,可能需要对综合器进行配置或者提供综合的约束条件。
由于这个过程操作可能比较繁琐,所以DSPBuilder的SignalCompiler相应提供了一个接口,针对设计,自动产生一个TCL脚本与综合器Synplify或者LelnardoSpectrum相接。
综合器在综合操作后会产生一个网表文件,以供下一个流程使用。
这里产生的网表文件称为ATOM网表文件(如图6-1所示),主要是EDIF一种参数可设置的,并含有具体器件系列硬件特征(如逻辑宏LCs、I/O单元、乘积项、嵌入式系统块ESB等)的网表文件。
如果用DSPBuilder产生的DSP模型只是庞大设计中的一个子模块,则可以在设计中调用DSPBuilder产生的VHDL文件,以构成完整的设计。
同时,一样可以使用Quartus
强大的LogicLock功能和SignalTap测试技术。
在图6-1的流程中,其中有个流程在DSP设计中是不可或缺的,那就是HDL仿真。
与DSPBuilder可以配合使用的HDL仿真器是ModelSim。
DSPBuilder在生成VHDL代码时,可以同时生成用于测试DSP模块的TestBench(测试平台)文件,DSPBuilder生成的TestBench文件采用VHDL语言,测试向量与该DSP模块在Simulink中的仿真激励相一致。
通过ModelSim仿真生成的TestBench可以验证生成的VHDL代码与Simulink中DSP模型的一致性。
另外,DSPBuilder在产生TestBench的同时,还产生了针对ModelSim仿真的Rcl脚本来简化用户的操作,掩盖ModelSim仿真时的复杂性。
七、利用DSPBuilder设计FIR数字滤波器
图7-1中显示了一个典型的直接I型4阶FIR滤波器,其输出序列
满足下列等式:
(7-1)
图7-14阶FIR滤波器结构
在这个FIR滤波器中,总共存在3个延时节,4个乘法单元,一个4输入的加法器。
如果采用普通的数字信号处理器(DSPProcessor)来实现,只能用串行的方式顺序地执行延时,乘加工作,这不可能在一个DSP(指数字信号处理器)指令周期内完成,必须用多个指令周期来完成。
但是,如果采用FPGA来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR滤波器的输出。
使用DSPBuilder可以方便地在图形化环境中设计FIR数字滤波器,而且滤波器系数的计算可以帮助Matlab强大的计算能力和现成的滤波器设计工具来完成。
(一)3阶常系数FIR滤波器的设计
在此用以下示例来说明整个设计过程。
假定一个3阶的FIR滤波器,其
可以表示为:
其中:
,
,
,
,
是量化时附加的因子。
这里采用直接I型来实现FIR滤波器。
设计好的3阶直接I型FIR滤波器模型图可以参见图7-2。
图7-23阶FIR滤波器
图中模块的参数作如下设置:
Xin模块:
(Altbus)
库:
AlteraDSPBuilder中BusManipulation库
参数“BusType”设为“signedinteger”
参数“NodeType”设为“Inputport”
参数“numberofbits”设为“8”
Yout模块:
(Altbus)
库:
AlteraDSPBuilder中BusManipulation库
参数“BusType”设为“signedinteger”
参数“NopeType”设为“Outputport”
参数“numberofbits”设为“8”
ParallelAdderSubtractor模块:
(ParallelAdderSubtractor)
库:
AlteraDSPBuilder中Arithmetic库
“Add(+)Sub(-)”设为“++++”
Delay1,Delay2,Delay3模块:
(Delay)
库:
AlteraDSPBuilder中Storage库
参数“Depth”设为“1”
参数“ClockPhaseSelection”设为“1”
h0模块:
(Gain)
库:
AlteraDSPBuilder中Arithemtic库
参数“GainValue”设为“63”
参数“MapGainValuetoBusType”设为“SignedInteger”
参数“GateValuenumberofbits”设为“8”
参数“NumberofPipelineLevels”设为“0”
h1模块:
(Gain)
参数“GainValue”设为“127”
其余同h(0)模块
h2模块:
(Gain)
参数“GainValue”设为“127”
其余同h(0)模块
h3模块:
(Gain)
参数“GainValue”设为“63”
其余同h0模块。
由于FIR滤波器的系数
已经给定,是一个常数,从图中看到,在DSPBuilder中可以用Gain(增益)模块来实现
的运算,用延时Delay模块来实现输入信号序列
的延时。
设计完3阶FIR滤波器模型后,就可以添加Simulink模块进行仿真了,如图7-3所示。
图7-3带仿真模块的3阶滤波器模型
新增的仿真模块的参数作如下设置:
ChirpSignal:
模块:
(ChirpSignal)
库:
Simulink中Sources库
参数“InitialFrequency(Hz)”设为“1”
参数“Targettime”设为“10”
参数“Frequencyattargettime(Hz)”设为“1”
参数“Interpretvectorsparameteras1-D”选中
Gain模块:
(Gain)
库:
Simulink中MathOperations库
参数“Gain”设为“Elementwise(K.*Vu)”
Scope模块:
(Scope)
库:
Simulink中sinks库
参数“NumberofAxes”为“2”
其中,ChirpSignal模块为线性调频信号发生模块,生成一个线性调频信号0.1Hz~1Hz。
在该模型仿真中,使用默认的仿真参数。
(二)4阶FIR滤波器节的设计
对于直接I型FIR滤波器是可以级联的,结构见图7-4,也就是说,在滤波器系数可改变的情况下,可以预先设计好一个FIR滤波器节,在实际应用中通过不断地调用FIR滤波器节,将其级联起来,用来完成多阶FIR滤波器的设计。
图7-4直接I型FIR滤波器结构
图7-5是一个直接I型的4阶FIR滤波器节结构。
为了使该滤波器节的调用更为方便,在x输入后插入一个延时单元,由3阶滤波器演变成一个4阶的,不过常系数项(
系数项)
恒为0。
由于通信应用中,FIR滤波器处理的往往是信号流,因而,增加一个延时单元不会影响FIR滤波器处理的结果,只是系统延时增加了一个时钟周期。
图7-5直接I型4阶FIR滤波器模型
对于该FIR滤波器节,其系统函数可以用下式来表示:
(7-2)
由于浮点小数在FPGA中实现比较困难,实现的代价太大,因而在DSPBuilder中不妨使用整数运算来实现,最后用位数舍取的方法得到结果。
为了使参数可变,FIR滤波器系数
、
、
、
也作为输入端口。
在本设计中输入序列
的位宽设为9位。
图7-6显示的就是一个设计好的4阶FIR滤波器节,与图7-2的常数FIR滤波器相比,这里运用Product(乘法)模块代替了Gain(增益)模块。
图7-6直接I型4阶FIR滤波器节
图7-6中相关模块的参数设置如下:
xin、hn1、hn2、hn3、hn4模块:
(Altbus)
库:
AlteraDSPBuider中BusManipulation库
参数“BusType”设为“signedInteger”
参数“NodeType”设为“Inputport”
参数“numberofbits”设为“9”
yn模块:
(Altbus)
库:
AlteraDSPBuider中BusManipulation库
参数“BusType”设为“signedInteger”
参数“NodeType”设为“outputport”
参数“numberofbits”设为“20”
xn4模块:
(Altbus)
库:
AlteraDSPBuider中BusManipulation库
参数“BusType”设为“signedInteger”
参数“NodeType”设为“outputport”
参数“numberofbits”设为“9”
ParallelAdderSubtractor模块:
(ParallelAdderSubtractor)
库:
AlteraDSPBuider中Arithmetic库
参数“Add(+)Sub(-)”设为“++++”
使用“Pipeline”
参数“ClockPhaeseSelectioon”设为“1”
Delay、Delay1、Delay2、Delay3模块:
(Delay)
库:
AlteraDSPBuider中Storage库
参数“Depth”设为“1”
参数“ClockPhaseSelectioon”设为“1”
Product模块:
(Product)
库:
AlteraDSPBuider中Arithmetic库
参数“Pipeline”设为“2”
参数“ClockPhaseSelectioon”设为“1”
不选择“UseLPM”
(三)12阶FIR滤波器模型设计
利用以上设计的4阶FIR滤波器节可以方便地搭成4×n阶直接I型FIR滤波器(注意:
)。
比如要实现一个12阶的低通滤波器,可以调用3个4阶FIR滤波器来实现。
1.设计4阶FIR滤波器节子系统
建立一个新的DSPBuilder模型,复制上节的FIR4tap模型到新模型。
由FIR4tap模型建立子系统(SubSystem),并对端口信号进行修改,把子系统更名为fir4tap,如图7-7所示。
fir4tap的内部结构如图7-8所示。
(建立子系统的方法:
选中模块,在选中模块上点击鼠标右键,在弹出的右键菜单中选择“Createsubsystem”。
)
图7-7fir4tap子系统
图7-8fir4tap子系统内部原理图
2.组成12阶FIR滤波器模型
复制3个fir4tap,并将它们衔接起来。
前一及的输出端口x4接后一级x输入端口,并附加上24个常数端口,作为FIR滤波器系数的输入。
把3个子系统fir4tap的输入端口y连接起来,接入一个3输入端口的加法器,得到FIR滤波器的输出
。
注意:
在做好子系统后,要修改其Mask参数MaskType为“SubSystemAlteraBlockSet”。
设计好的12阶滤波器如图7-9所示。
图7-924阶直接I型FIR滤波器模型
12阶直接I型FIR滤波器模型中,对新增加的模块作如下设置:
xin模块:
(Altbus)
库:
AlteraDSPBuider中BusManipulation库
参数“BusType”设为“signedInteger”
参数“NodeType”设为“Inputport”
参数“numberofbits”设为“9”
yout模块:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 阶高通滤波器 阶高通 滤波器 word