资源描述:
《基于DSP Builder的数字陷波器设计【毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
本科毕业设计(20届)基于DSPBuilder的数字陷波器设计 摘要数字滤波器是指能滤除特定噪声的设备。理想数字滤波器能在保证其他频率的信号不损失的情况下有效的抑制输入信号中某些频率信息。目前的滤波器有很多种,数字陷波器是最常用的滤波器之一。数字陷波器主要实现滤除单一频率信号噪声的功能,是一种特殊的带阻滤波器。数字陷波器可以采用IIR或者FIR结构实现。经过笔者的设计与计算,若采用FIR结构,则滤波器的阶数高达两百多阶。而采用IIR结构,阶数大大降低,无论从硬件资源还是实时性要求来考虑,性价比较高。因此笔者最终选择IIR结构。文章阐述了本课题的应用背景以及研究意义。概述了本次设计涉及的三个平台,包括Matlab、DSPBuilder和QuartusⅡ。同时介绍了基于DSPBuilder的设计流程。根据IIR陷波器结构,实现了基于DSPBuilder的陷波器建模,然后以这一模型为基础,实现了滤除100Hz噪声的要求。并对设计结果进行功能验证及仿真,最后利用signalcompiler工具将模型进行转换、综合和适配,生成QuartusⅡ下的工程。对该工程进行最终的行为级仿真,经验证正确后,即可下载至FPGA板,驱动目标程序。论文还记录和整理了设计、调试和仿真过程中出现的问题,给出自己的分析,供读者参考。关键词:数字陷波器;IIR;DSPBuilder;QuartusⅡ AbstractDigitalfiltersareaninstrumenttofiltercertainnoise.Anidealdigitalfiltercouldeffectivelysuppresssomefrequencypartsoftheinputsignalwithoutlosingotherfrequencyparts.Currently,thereareavarietyoffilters.TheFIRdigitalfilterisoneofthemostcommonusedfiltersandalsoaspecialtypeofband-stopdigitalfilter,whichachievethefunctionthatsuppressesasinglefrequencypartofsignal.DigitalfilterscanbeimplementedbyadoptingIIRorFIRstructure.Fromtheauthor'sdesignandcalculation,theorderofdigitalfilterwouldbeovertwohundred,whentheFIRstructureisadopted.Thedigitalfilterismorecost-effectiveintermsofhardwareresourcesandreal-timerequirementsastheorderofdigitalfilterdecreasesconsiderablywhentheIIRstructureisadopted.ThereforeIIRstructureischosebyauthortoimplementthedigitalfilter.Thispaperdescribestheapplicationbackgroundofthisissueandtheresearchsignificanceandoutlinesthreeapplicationplatformsthedesigninvolves,includingMatlab,DSPBuilderandQuartusⅡ.Meantime,thispaperillustratesthedesignflowbasedonDSPBuilder.ThemodelofFIRdigitalfilterbasedonDSPBuilderhasbeenimplementedbasingIIRdigitalfilterstructure.Thentherequirementoffiltering100Hznoisehasbeenachieved,whichisbasedonthismodel.Afterthat,functionalverificationandsimulationofdesignresulthasbeenimplemented.Further,themodelhasbeenusedtoadapt,integrate,andtransformthroughtheuseofsignalcompilertool,andgeneratetheprojectdocumentunderQuartusⅡtorealizebehavioralsimulationfortheproject.Ultimately,providedthattheverificationresultiscorrect,theprojectdocumentcanbedownloadtotheFPGAboardtoruntheprogram.Thispaperalsorecordsandorganizesproblemswithintheprocessofdesign,debuggingandsimulationandgivesauthor’sownanalysisforreference.KeyWords:DigitalFilter,IIR,DSPBuilder,QuartusⅡ目录1引言1 1.1课题的应用背景和意义11.2论文的内容与组织结构22数字滤波技术概述32.1IIR数字滤波器原理及实现32.2FIR数字滤波器原理及实现63设计平台概述73.1Matlab集成环境介绍73.1.1Matlab软件概述73.1.2Simulink简介83.2DSPBuilder概述93.2.1DSPBuilder平台概述93.2.2DSPBuilder平台设计流程93.3QuartusII集成环境概述114基于DSPBUILDER的IIR滤波器设计与实现134.1利用FDATool工具设计滤波器134.2基于DSPBuilder的陷波器建模174.3系统的顶层设计与转换205调试与仿真235.1Simulink中对模型进行仿真235.2QuartusII行为仿真236总结25致谢26参考文献27 1引言1.1课题的应用背景和意义滤波是信号处理的重要环节之一。数字滤波器在图像处理、语音识别、模式识别、高清电视等数字信号处理中都起着关键作用。数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题[1]。而传统的模拟滤波器在精度上无法与数字滤波器相比,尤其是在多阻带多通带滤波器设计方面,模拟滤波器更是无能为力,因此对数字滤波器的研究是十分必要且有广泛应用价值的。数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,理想带阻数字滤波器,能在保证其他频率的信号不损失的情况下,有效的抑制输入信号中某一频率信息[2]。目前陷波器硬件实现主要有模拟电路方式与数字电路方式。根据数字滤波器冲激响应函数的时域特性,可将数字滤波器分为无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器两种。IIR数字滤波器与FIR数字滤波器相比,它可以用较低的阶数获得较高的选择性,在实现时所用存储单元少,经济而且高效,在相同门级规模和相同时钟速度下可以提供更好的带外衰减特性等突出优点而在工程实际中获得广泛应用[2]。因此本课题拟定采用IIR数字滤波器结构。滤波器的硬件平台主要有单片机、FPGA和DSP等。FPGA是目前电路系统设计的主要实现硬件之一,也是数字信号处理的主要实现平台。FPGA具有功耗低,运算速度快,通用性强,能重复/在线编程的优点,使用FPGA来进行数字信号处理可以缩小硬件规模,提高系统的灵活性、可靠性和实时性[2],所以很多工程应用可编程逻辑门阵列(FPGA)来完成数字信号处理。本次设计采用IIR数字滤波器结构,利用DSPBuilder建立陷波器的模型设计,并在DSPBuilder平台上完成仿真和编译。基于DSPBuilder的模块化设计,可以直接利用DSPBuilder中自带的模块进行设计,仿真和编译即可。编译正确后,利用综合、转换工具将模块化的设计转换为VHDL语言,最后在QuartusII中进行FPGA的实现。设计周期大大缩短,而且设计难度大大降低。可避免繁琐的程序代码编写,也可降低对设计人员的硬件设计能力要求。 1.2论文的内容与组织结构围绕课题,主要完成以下工作:1.熟悉Matlab软件,熟悉MATLAB中利用FDATool工具设计滤波器的一般流程;2.了解和熟悉IIR陷波器的原理,查阅相关的陷波器资料,完成基于DSPBuilder的数字陷波器建模;3.为了验证IIR陷波器的性能,给已经完成的数字陷波器模型加上显示设备和信号源,信号源的输出作为数字陷波器的输入,在Matlab/Simulink进行软件仿真,设计实现达到性能指标的数字陷波器,最后完成顶层文件设计,实现系统的编译和仿真,并分析验证其正确性;4.对设计与调试过程中出现的问题进行整理和分析。本文一共有六章,第一章为引言,简单介绍课题的应用背景与论文的组织结构;第二章介绍IIR和FIR数字滤波器技术的原理与实现方法;第三章就本论文涉及的DSPBuilder平台,Matlab软件以及QuartusII集成环境进行了概述;第四章为本论文的重点,详细阐述了设计过程。在FDATool滤波器设计软件中输入课题的相关参数,计算得到IIR陷波器的阶数、系数等相关参数。在Matlab/DSPBuilder环境下建立IIR陷波器模型,实现系统功能;第五章为本次设计的仿真、调试及验证;第六章总结了本次设计中出现的困难以及如何解决的过程。 2数字滤波技术概述2.1IIR数字滤波器原理及实现IIR滤波器也称为无限脉冲响应滤波器,当系统无严格相位要求时,对于相同的设计指标,FIR滤波器所要求的阶数比IIR滤波器高5~10倍,而且信号的延迟也较大。IIR滤波器相比FIR滤波器可以用较低的阶数获得较高的选择性[3]。一个IIR滤波器的系统函数和表示这一系统输入输出关系的N阶差分方程分别如式2-1和2-2所示。(2-1)(2-2)其中式2-2中等号右边第二项表示将输入加以延时,组成M节的延时网络,把每节延时抽头后加权(加权系数是bk),然后把结果相加,这就是一个横向结构网络[4]。式2-2中等号右边第一项表示将输入加以延时,组成N节的延时网络,然后将每节延时抽头后加权(加权系数是ak),然后把结果相加,最后的输出y(n)是两个和式相加而构成。由于包含了输入的延时部分,故它是个有反馈的网络[4]。式2-2中等号右边第一项构成了反馈网络,这种结构称为直接I型结构。其结构流图如图2-1所示。由图可看出,总的网络是由上面讨论的两部分网络级联组成,第一个网络实现零点,第二个网络实现极点,从图中又可看出,直接I型结构需要(N+M)级延时单元[4]。 图2-1直接I型二阶网络结构从图2-1可以看出两行串行延时支路有相同的输入,因而可以将其合并,则得到图2-2的结构,称为直接II型结构,或典范型结构。图2-2直接II型网络结构这种结构,对于N阶差分方程只需N个延时单元(一般满足N>=M),因而比直接I型的延时单元要少,这也是实现N阶滤波器所需的最少延时单元,因而又称典范型。它可以节省存储单元(软件实现),或节省寄存器(硬件实现),比直接I型为好。但是,他们都是直接型的实现方法,其共同的缺点是系数ak,bk对滤波器的性能控制作用不明显,这是因为它们与系数函数的零、极点关系不明显,因而调整困难;此外,这种结构极点对系数的变化过于灵敏,从而使系统频率响应对系数的变化过于灵敏,也就是对有限精度(有限字长)运算过于灵敏,容易出现不稳定或产生较大误差[4]。M=N=2时的系统函数如式2-3所示,由此可以得出图2-3的直接II型二阶网络结构。 (2-3)图2-3直接II型IIR二阶网络结构级联的节数视具体情况而定,当M=N时,共有(N+1)/2节(N+1)/2表示N+1/2的整数,如果有奇数个实零点,则有一个系数a2k等于零。每一个二阶子系统Hk(z)被称为二阶基本节,Hk(z)是用典范型结构来实现的。一个六阶节系统的级联实现如图2-4所示。图2-4级联型IIR六阶网络结构级联结构的特点是调整系数B1k、B2k就能单独调整滤波器第k对零点,而不影响其他零、极点[4],同样,调整系数a1k,a2k就能单独调整滤波器第k对极点,而不影响其他零、极点。所以这种结构,便于准确实现滤波器零、极点,因而便于调整滤波器频率响应性能。IIR滤波器的实现有多种结构,直接型、级联型、并联型及格型结构等。其中级联型较为容易实现且易于实现高阶滤波器,且任何高阶IIR滤波器都能表示成一阶和二阶的级联[5]。故本文以直接II型二阶的级联为例阐述基于FPGA的数字陷波器设计。 2.2FIR数字滤波器原理及实现FIR滤波器也称为有限脉冲响应滤波器。FIR网络结构特点是没有反馈支路,即没有环路,其单位脉冲响应是有限长的,将卷积的数量降低到每个采样时刻为有限个[5]。FIR滤波器具有严格的线性相位又具有任意的幅度,同时FIR滤波器的单位抽样响应是有限长的,因而滤波器性能稳定,而且FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率。设单位脉冲响应h(n)长度为N,其系统函数H(z)和差分方程分别如式2-4和2-5所示。(2-4)(2-5)按照系统函数H(z)可直接画出结构图,如图2-5所示。这种结构称为直接型网络结构或者称为卷积型结构。图2-5四阶FIR滤波器网络结构 3设计平台概述本章概述与课题实现相关的集成环境。首先简述Matlab的主要功能、构成以及Simulink相关内容,其次详细阐述DSPBuilder的主要功能以及设计流程,最后介绍QuartusII的环境和功能。3.1Matlab集成环境介绍3.1.1Matlab软件概述Matlab是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件。于20世纪80年代中期推出的一种高性能数值计算软件,Matlab时至今日,经过20余年的开发扩充和不断的完善,已经发展成为了一款适合多科学应用,功能强大的大型的系统软件,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案[6]。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题[7]。Matlab具有其他高级语言(如C++、C、Fortran、Basic和Pascal等)难以比拟的一些优点,如编写简单、编程效率高、易学易懂等,用Matlab编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言[8]。Matlab是由主包和功能不一的工具箱组成,最基本的数据结构是矩阵。Matlab系统主要由五个部分构成:1.Matlab语言2.Matlab工作环境3.制图4.Matlab的数学的函数库。5.Matlab应用程序接口(API)。Matlab的核心是一个基于矩阵运算的快速解释程序, 它提供给用户一个开放式的集成环境,用户可以自由运行系统提供的多项命令,包括图形的绘制,数值的计算等。它以一种交互的方式接受用户输入的各种指令,最终输出计算的结果[9]。3.1.2Simulink简介Simulink(DynamicSystemSimulation)是作为Matlab工具箱之一,是最重要的组件,提供一个动态系统建模、仿真和综合分析的集成环境。可以针对控制系统、信号处理及通信系统等进行系统的建模、仿真和分析等工作[10]。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),模型由模块组成的框图来表示。这个创建过程只需单击和拖动鼠标操作就能完成,该平台提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。Simulink包括:输入方式(Sink)、输入源(Source)、线性(Linear)、非线性元件(Nonlinear)、连接与接口(Connectors)和其他环节(Extra)子模型库[11]。而且每个子模块库中包含有相应的功能模块,用户可以自定义属于自己的模块。Simulink的模块库如图3-1所示。图3-1模块库浏览器 在Matlab窗口的工具栏中单击,或者在Commandwindow中键入指令“simulink”,就可以启动Simulink的模块浏览器。从这个窗口中可以看到Simulink所提供的模块库和具体模块。建立完模型后,就可以利用Simulink的菜单或者在Matlab的命令窗口输入命令来对模型进行仿真。仿真后的结果可以用图形的方式显示在类似示波器的窗口内。为便于观察结果,也可以将输出结果以变量的方式保存下来。3.2DSPBuilder概述3.2.1DSPBuilder平台概述DSPBuilder是美国Altera公司推出的一个面向DSP开发的系统级开发工具,AlteraDSPBuilder将TheMathWorksMATLAB和Simulink系统级设计工具的算法开发、仿真和验证功能与VHDL综合、仿真和Altera开发工具整合在一起,实现了这些工具的集成[12]。DSPBuilder在算法友好的开发环境中帮助设计人员生成DSP设计硬件表征。基于DSPBuilder的模块化设计,则可以避免繁琐的程序代码编写,也可以降低对设计人员额度硬件设计能力要求,从而缩短了DSP设计周期。设计人员可以使用DSPBuilder模块迅速生成Simulink系统建模硬件。DSPBuilder包括比特和周期精度的Simulink模块,涵盖了算法和存储功能等基本操作。可以使用DSPBuilder模型中的MegaCore功能实现复杂功能的集成。利用DSPBuilder中的模块进行设计,编译与仿真。当编译正确后,可以利用综合,转化工具将模块化的设计转换为VHDL语言,最后在QuartusII中进行FPGA的实现。3.2.2DSPBuilder平台设计流程DSPBuilder是一个系统级(或者说算法级)设计工具,它架构在多个软件工具之上,并连接系统级的算法仿真建模和RTL级的硬件实现两个设计领域的设计工具,最大程度地发挥了这两种工具的优势[13]。DSPBuilder依赖于Math-Works公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可在simulink中进行图形化设计和仿真,同时又通过signalCompiler把Maltlab/Simulink/DSPBuilder的设计文件转成相应的VHDL设计文件,以及用控制综合与编译的tcl 脚本。而对后者的处理可以由FPGA/CPLD开发工具QuartusⅡ完成[13]。设计者可以利用DSPBuilder中的功能块来为Simulink中的系统模型创建硬件。DSPBuilder包含了按周期设计和按位的Simulink功能块,这些功能块覆盖了一些最基本的操作,比如说存储和运算的功能。DSPBuilder的SignalComiler块读入Simulink的模型文件(.mdl),这个模型文件是用DSPBuilder和MageCore块生成的,接着生成VHDL文件和TCL脚本文件,用于综合和硬件的实现与仿真。DSPBuilder可以帮助设计者完成基于FPGA的DSP或者其他的电子系统设计。DSPBuilder可以自动完成大部分的设计仿真过程,替设计者省去了麻烦的设计过程。图3-2显示的是DSPBuilder的设计流程。手动流程MatlabSimulink建立模块Simulink模型仿真综合Mdl转成vhdlQuartusIIQuartusII生成编程文件下载至硬件HDL仿真Modelsim综合自动流程图3-2DSPBuilder设计及步骤设计的具体步骤如下:1.自动流程:第一步:在Matlab中的Simulink环境中建立一个(.mdl)模型文件,调用DSPBuilder和Simulink库中的图形模块,连接构成一个系统级的设计框图,这个就是Simulink的设计模型。第二步:在Simulink中进行系统级仿真,分析这个设计模型的正确性。第三步:DSPBuilder完成VHDL转换、综合、适配、下载。 第四步:嵌入式逻辑分析仪实时测试。2.手动流程:第一步:在Simulink环境中调用AlteraDSP库(非MATLAB自带的DSP库)中的块,进行数学模型设计[13]。第二步:在MATLAB中进行纯数学上的仿真、验证及修改。第三步:当仿真符合设计要求后,再加入并运行SignalCompiler模块,将.mdl文件自动转成.vhd文件,进行RTL级的功能仿真和逻辑综合。第四步:在QuartusⅡ中进行编译设计并进行时序仿真。第五步:引脚锁定。第六步:下载/配置与嵌入式逻辑分析仪等实时测试。第七部:对配置器件编程,设计完成。3.3QuartusII集成环境概述QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程[14]。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点[14]。此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台[14]。QuartusII的设计工具支持VHDL,Verilog的设计流程,因为QuartusII设计工具内部拥有VHDL,Verilog逻辑综合器。QuartusII同时也可以使用第三方的综合工具,比如说SynplifyPro,LeonardoSpectrum,FPGACompilerII,并且能够直接调用这些工具。同样的,QuartusII也具备仿真的功能,并且也支持第三方的仿真工具,比如ModelSim。此外,QuartusII能与Matlab和DSPBuilder 结合,能够进行基于FPGA的DSP系统的开发,是EDA工具中实现DSP硬件系统的一种关键工具。QuartusII可编程逻辑软件属于第四代PLD开发平台[14]。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力,支持MAX7000/MAX3000等乘积项器件[15]。此外,在QuartusII中还包含了许多十分有用的LPM(LibraryofParameterizedModules)模块,它们都是高级或者复杂系统构建的重要组成部分,在SOPC设计中被设计者大量使用。 4基于DSPBuilder的IIR滤波器设计与实现4.1利用FDATool工具设计滤波器Matlab中提供了功能强大的Simulink仿真软件。Simulink环境下,可以对所设计的滤波器进行仿真。FDATool(filterdesignanalysistool)是Matlab信号处理工具箱专用的滤波器设计分析工具,操作简单,灵活。可以采用多种方法设计FIR和IIR滤波器。根据已经给出的设计指标:设计一个数字陷波器滤除100Hz噪声,3db带边频率为95,105Hz,阻带衰减不小于30db。根据采样定理可得,采样频率为fs≥2fc,所以数字陷波器系统的采样频率可选择为1000Hz。则FDATool参数输入如图4-1所示。图4-1FDATool参数设定因为陷波器是一种特殊的带阻滤波器,所以ResponseType选择Bandstop。根据任务要求,数字陷波器的设计可以选择IIR或者FIR来实现。IIR滤波器也称为无限脉冲响应滤波器,当系统无严格相位要求时,对于相同的设计指标,FIR滤波器所要求的阶数比IIR滤波器高5~10倍,而且信号的延迟也较大。IIR滤波器相比FIR滤波器可以用较低的阶数获得较高的选择性。所以选择IIR来实现数字陷波器。IIR有许多种设计方法,它的理论和设计方法已发展的相当成熟,有多种滤波器类型供选择,如巴特沃斯(Butterworth)滤波器,切比雪夫(Chebyshev)滤波器,椭圆(Ellipse)滤波器,贝塞尔(Bessel)等。这些滤波器都有严格的设计公 式,现成的曲线和图表供设计人员使用[5]。这些滤波器有其各自的特点:巴特沃斯滤波器具有单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带或者阻带有等波纹特性,可以提高选择性;贝塞尔滤波器通带内有较好的线性相位特性;椭圆滤波器的选择性相对前三种是最好的[5]。因为椭圆滤波器可以用最少的阶数实现最高的选择性,实现更高的阻带衰减。所以本次设计我采用椭圆滤波器来完成这次设计。FDATool参数设置如图4-2所示。图4-2FDATool参数设定如此FDATool中的参数设定就输入完毕了,之后按DesignFilter按钮产生滤波器。得到滤波器的结构信息如图4-3所示。由图可看出陷波器采用四阶直接II型结构。图4-3滤波器结构信息 我们还可以从FDATool的MagnitudeResponse窗口看到陷波器的幅频响应曲线如图4-4所示,可以看出设计的陷波器的性能指标满足了设计要求。图4-4幅频响应之后将设计的陷波器输出到Simulink,并加上示波器和信号源,如图4-5。点击运行按钮,我们可以观察到输入波形和滤波后的波形,从而观察到滤波器的效果。仿真波形如图4-6和4-7所示。图4-6为输入波形,图4-7为滤波后的波形。输入波形为100Hz正弦信号。图4-5陷波器仿真 图4-6陷波器输入波形图4-7滤波后的波形从图中我们可出,100Hz信号经过滤波,幅度衰减很大,陷波器效果良好,满足了设计要求。最后可在在File菜单中按Export输出陷波器的系数,如图4-8所示。从而在DSPBuilder中建立模型。输出的系数如图4-9所示。图4-8系数输出界面图4-9滤波器系数 4.2基于DSPBuilder的陷波器建模一个IIR滤波器的系统函数和表示这一系统输入输出关系的N阶差分方程分别如式4-1和4-2所示。(4-1)(4-2)首先在Matlab/DSPBuilder[16]平台上,由式4-2的差分方程可以直接画出所要设计的IIR直接型四阶网络图,如图4-10所示。按照图4-10的直接型四阶IIR滤波器结构建立一个IIR陷波器的模型,将此模型命名为IIR,后缀名为.mdl,建立好的模型如图4-11所示。图4-10IIR直接型四阶结构 图4-11IIR陷波器模型在图4-11中可以看出,系统中共有1个输入,输入的为100Hz的离散正弦信号;有一个输出Y:输出滤波后的信号。Delay1,Delay2,Delay3,Delay4分别为四个延时器,增益模块B0-B4组成了输入回路,而增益模块A1-A4组成了反馈回路。把FDATool中输出的陷波器参数Numerator和Denominator[17]分别输入到B0-B4和A1-A4中。其中B0-B4的参数决定了零点,而A1-A4的参数决定了陷波器的极点。其中Gainvalue的值,整数取3位二进制,小数点保留16位二进制。这里仅以B0模块作为例子,参数设置方式如下图4-12所示。 图4-12B0增益模块的参数设置Busconversion与BlockParameters:x中的“numberofbit”参数设置分别如图4-13和图4-14所示。BlockParameters:y因为参数设置与x模块相同,就不再赘述。图4-13Busconversion参数设置图4-14BlockParameters:x参数设置 4.3系统的顶层设计与转换系统的顶层模块,如图4-15所示。对顶层模块进行仿真、编译,验证其设计为正确后,即可进行转换,将该模型最终转换为可以驱动目标板的驱动程序。图4-15系统的顶层设计用SignalCompiler软件将IIR数字陷波器的模型转化成VHDL硬件语言。首先双击SignalCompiler图标,在弹出的对话框中点击“Compiler”,DSPBuilder将会调用QuartusII来进行全程编译,这一过程包括了创建QuartusII工程,综合和适配。SignalCompiler将.mdl文件转化成VHDL语言,然后在QuartusII中进行进一步的设置和完整的编译。具体转换设置如下图4-16所示。 图4-16转换界面生成的SignalComplier报告如下图4-17所示。图4-17SignalComplier报告 转换生成后产生的资源信息界面如下图4-18所示。图4-18转换后产生的资源信息界面在得到资源信息之后,就可得到转换之后的VHDL源代码,因源代码程序非常庞大,这里只截取部分源代码,如下图4-19所示。图4-19生成的VHDL源代码 5调试与仿真5.1Simulink中对模型进行仿真在Matlab/DSPBuilder平台上设计IIR陷波器的模型,然后设置总线带宽和各个增益器的参数。设置信号源输入信号为100Hz正弦波,幅度为2V。可得如图5-1所示的波形。图中上方的波形为输出波形,下方的波形为输入波形。经简单分析,可得输出波形是正确的。图5-1仿真波形5.2QuartusII行为仿真将IIR陷波器的模型进行适配、综合和转换,具体步骤如4.3所示。之后在QUARTUSII中对转换后产生的工程进行最终的行为级仿真。步骤如下:首先打开后缀名为.vec的波形文件,修改引脚。因为自动生成的文件在所有的引脚名称前面加了“i”,后面加了“s”,如果我们直接对该文件进行仿真,程序出错。所以将修改后的文件另存为后缀名为.vwf 的同名文件,然后进行时序和功能仿真。仿真前的信号如图5-2所示。图5-2仿真前的界面仿真后的结果如图5-3所示。图5-3仿真结果 6总结至此,本人基本完成了这次毕业设计任务。在设计之初,我对于Matlab/DSPBuilder的知之甚少,不过通过不断的学习,和老师的辅导,在Matlab/DSPBuilder平台上实现了毕业设计的内容,熟悉了DSPBuilder和FPGA的整个开发流程。本次的设计的内容是设计一个数字陷波器。在设计过程中我遇到了很多问题,比如选用FIR或者IRR来设计陷波器,我一开始选用FIR来设计陷波器,因为FIR具有线性相位特性而且系统稳定。但是经过一段时间的摸索,发现用FIR来设计陷波器需要非常高的阶数,难度很大,而且会造成很大的延迟。IIR滤波器相比FIR滤波器可以用较低的阶数获得较高的选择性。所以最终决定利用IIR来设计陷波器。经过本次设计,使我学到了很多,不管是论文的撰写还是文献的查阅和自学能力都得到了锻炼。 参考文献[1]罗韩军,刘明伟,王成.基于DSPBuilder的FIR滤波器设计与实现[J].微计算机信息,2009,2,25(2):148~149,193.[2]刘海华,陈心浩.基于FPGA的数字陷波器的设计与实现[J].中南民族大学学报(自然科学版),2004,12,23(4):44~47.[3]杨世华,王秀敏,陈豪威.基于DSPBuilder和FPGA的IIR滤波器设计[J].通信技术,2010,12,43(12):184~186.[4]无限长单位冲激响应(IIR)滤波器的基本结构[EB/OL],[2011-5-1].http://wlsyzx.yzu.edu.cn/kcwz/szxhcl/kechenneirong/dierbufen/chapter7_2.htm.[5]高西全,丁玉美.数字信号处理[M].第三版.西安:西安电子科技大学出版社,2009,6.[6]MATLAB基本功能[EB/OL],[2011-5-1].http://baike.baidu.com/view/10598.htm.[7]matlab在电力电子变流系统中的仿真与应用[EB/OL],[2011-5-1].http://wenku.baidu.com/view/58f038c46137ee06eef91804.html.[8]MATLAB(6.0)与科学[EB/OL],[2011-5-1].http://www.doc88.com/p-38273375559.html.[9]基于人工神经网络的数字识别技术[EB/OL],[2011-5-2].http://www.smtpcb.com.cn/newscn/news_view.asp?newsid=1935.[10]SIMULINK交互式仿真集成环境[EB/OL],[2011-5-2].http://www.doc88.com/p-26219341681.html.[11]Simulink[EB/OL],[2011-5-3].http://mech-elec.niu.edu.tw/matlab/m5.htm.[12]齐海兵,曹志亮,刘春锦.基DSPBuilder的FIR滤波器的设计与实现[J].国外电子元器件,2006,(7):7~9.[13]基于DSPBuilder数字信号处理器的FPGA设计[EB/OL],[2011-5-4]. http://www.eefocus.com/article/11-02/567911297261036.html?sort=1111_1475_0_0.[14]QuartusII[EB/OL],[2011-5-5].http://baike.baidu.com/view/1616088.htm.[15]Quartus[EB/OL],[2011-5-6].http://baike.baidu.com/view/1084118.html[16]Altera.DSPBuilderUserGuide[EB/OL].[2009-04-20].http://www.altera.com/literature/ug/ug_dsp_builder.pdf.[17]YongChingLim,YaJunYu,HuanQunZheng,SayWeiFoo.FPGAImplementationofDigitalFiltersSynthesizedUsingtheFRMTechnique[J].Circuits,Systems,andSignalProcessing,2003,23(2):211~218.