基于DSP Builder的数字陷波器设计毕业作品.docx
《基于DSP Builder的数字陷波器设计毕业作品.docx》由会员分享,可在线阅读,更多相关《基于DSP Builder的数字陷波器设计毕业作品.docx(28页珍藏版)》请在冰豆网上搜索。
基于DSPBuilder的数字陷波器设计毕业作品
毕设
业计
(20届)
基于DSPBuilder的数字陷波器设计
所在学院
专业班级电子信息工程
学生姓名学号
指导教师职称
完成日期年月
摘要
数字滤波器是指能滤除特定噪声的设备。
理想数字滤波器能在保证其他频率的信号不损失的情况下有效的抑制输入信号中某些频率信息。
目前的滤波器有很多种,数字陷波器是最常用的滤波器之一。
数字陷波器主要实现滤除单一频率信号噪声的功能,是一种特殊的带阻滤波器。
数字陷波器可以采用IIR或者FIR结构实现。
经过笔者的设计与计算,若采用FIR结构,则滤波器的阶数高达两百多阶。
而采用IIR结构,阶数大大降低,无论从硬件资源还是实时性要求来考虑,性价比较高。
因此笔者最终选择IIR结构。
文章阐述了本课题的应用背景以及研究意义。
概述了本次设计涉及的三个平台,包括Matlab、DSPBuilder和QuartusⅡ。
同时介绍了基于DSPBuilder的设计流程。
根据IIR陷波器结构,实现了基于DSPBuilder的陷波器建模,然后以这一模型为基础,实现了滤除100Hz噪声的要求。
并对设计结果进行功能验证及仿真,最后利用signalcompiler工具将模型进行转换、综合和适配,生成QuartusⅡ下的工程。
对该工程进行最终的行为级仿真,经验证正确后,即可下载至FPGA板,驱动目标程序。
论文还记录和整理了设计、调试和仿真过程中出现的问题,给出自己的分析,供读者参考。
关键词:
数字陷波器;IIR;DSPBuilder;QuartusⅡ
Abstract
Digitalfiltersareaninstrumenttofiltercertainnoise.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]。
而传统的模拟滤波器在精度上无法与数字滤波器相比,尤其是在多阻带多通带滤波器设计方面,模拟滤波器更是无能为力,因此对数字滤波器的研究是十分必要且有广泛应用价值的。
数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,理想带阻数字滤波器,能在保证其他频率的信号不损失的情况下,有效的抑制输入信号中某一频率信息[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的设计流程。
图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可编程逻