还剩31页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基于FPGAIIR滤波器设计基于FPGA的IIR滤波器设计摘要:数字___处理在科学和工程技术许多领域中得到广泛的应用,与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶数获得较高的选择性,故本课题采用一种基于FPGA的IIR数字滤波器的设计方案首先分析了IIR数字滤波器的原理及设计方法,然后通过MAX+PLUSⅡ的设计平台,采用自顶向下的模块化设计思想将整个IIR数字滤波器分为时序控制、延时、补码乘加和累加四个功能模块分别对各模块采用VHDL进行描述后,进行了仿真和综合仿真结果表明,本课题所设计的IIR数字滤波器运算速度较快系数改变灵活,有较好的参考价值关键词电子设计自动化,IIR数字滤波器,现场可编程门阵列,硬件描述语言ThedesignforIIRdigitalfilterbasedonFPGAAbstract:Digitalsignalpro___ssingiswidelyusedinlotsoffieldssuchasinscien___andprojecttechnique.ComparedwithFIRdigitalfilterIIRdigitalfiltercangethighselectivitywithlowfactorial.AkindofIIRdigitalfilterdesignmethodwasintrodu___dinthepaperwhichisbasedonFPGA.ByusedthedesignplantofMAX+PLUSⅡweadoptblockingmethodnamed“Top-down”anddividetheentireIIRdigitalfilterintofourblockswhichareClockcontrolTimedelayMultiply-additionandProgression.AfterdescribedwithVHDLwedoemulateandsynthesistoeachblock.Theresultshowsthattheintrodu___dIIRdigitalfilterrunsfastandthecoefficientchangesagility.Ithashighworthforconsulting.Keywords:ElectronicDesignAuto___tionIIRDigitalFilterFieldProgram___bleGateArrayveryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVHDL目录序言...........................................................1第1章IIR数字滤波器及其硬件实现方法...........................
21.1IIR数字滤波器概念....................................................
21.
1.1IIR数字滤波器的原理................................................
21.
1.2IIR数字滤波器的基本结构............................................
21.
1.3IIR数字滤波器的设计方法............................................
31.2IIR数字滤波器的硬件实现方案..........................................4第2章EDA技术和可编程逻辑器件.................................
82.1电子设计自动化EDA技术................................................
82.2可编程逻辑器件.......................................................
82.
2.1可编程逻辑器件简介.................................................
82.
2.2使用FPGA器件进行___的优点.........................................
92.
2.3FPGA设计的___流程.................................................
92.3硬件描述语言VHDL及数字系统设计方法..................................
102.
3.1硬件描述语言VHDL简介..............................................
102.
3.2利用VHDL设计数字系统..............................................10第3章IIR数字滤波器的设计与仿真结果分析.....................
113.1IIR数字滤波器各模块的设计与仿真结果分析.............................
113.
1.1时序控制模块的设计与仿真结果分析..................................
113.
1.2延时模块的设计与仿真结果分析......................................
123.
1.3补码乘加模块的设计与仿真结果分析..................................
123.
1.4累加模块的设计与仿真结果分析......................................
143.
1.5顶层模块设计......................................................
143.2IIR数字滤波器的仿真与结果分析.......................................
153.
2.1IIR数字滤波器的系统设计...........................................
153.
2.2IIR数字滤波器的系统仿真与结果分析.................................
163.
2.3高阶IIR数字滤波器的实现...........................................17结束语........................................................19___......................................................20致谢........................................................21附录1各模块VHDL程序.........................................22附录2英文翻译...............................................29基于FPGA的IIR滤波器设计序言随着EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出这些技术的使用使得现代电子产品的体积减小、性能增强、集成化程度提高,与此同时其可编程能力也得以提高在使用EDA进行电子设计时,设计人员可按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,采用硬件描述语言(DHL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件VHDL语言是EDA设计中常用的一种IEEE标准语言,其具有覆盖面广、描述能力强、可读性好、支持大规模设计及逻辑单元利用等优点,因此受到越来越多的电子工程师的青睐
[1]本次设计采用EDA技术中的模块化设计思想,就IIR数字滤波器中的一些关键电路进行设计主要内容包括时序控制模块、延时模块、补码乘加模块、累加模块和IIR数字滤波器的顶层设计分别对各模块采用VHDL进行描述后,进行了仿真和综合,取得了较好的设计效果实验结果表明,本课题所设计的IIR数字滤波器具有运算速度快系数改变灵活方便等特点第1章IIR数字滤波器及其硬件实现方法
1.1IIR数字滤波器概念数字滤波器是完成___滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统
[2]输入一组数字量,通过运算输出的是另一组数字量数字滤波器具有稳定性好、精度高、灵活性大等突出优点随着数字技术的发展,用数字技术设计滤波器的功能越来越受到人们的注意和广泛的应用
1.
1.1IIR数字滤波器的原理一个数字滤波器的系统函数可以表示为
[2]==
1.
1.1直接由得出表示输入输出关系的常系数线性差分方程为
1.
1.2式中、为滤波系数,当均为零时,该滤波器为FIR数字滤波器,当不均为零时,则为IIR数字滤波器与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶数获得高的选择性,所用的存储单元少,成本低、___延迟小,并且IIR数字滤波器可以借助于模拟滤波器的设计成果,设计工作量相对较小,为此,本文就IIR数字滤波器进行相关讨论
1.
1.2IIR数字滤波器的基本结构IIR数字滤波器有直接型、级联型和并联型三种基本结构
[2]由IIR数字滤波器的阶差分方程
1.
1.2式可知,设==2,则网络结构如图1-1所示xna0b1a2b0a1ynz-1z-1图1-1直接型结构
1.
1.3IIR数字滤波器的设计方法IIR数字滤波器的设计方法通常有模拟转换法、零极点累试法和优化设计法
[2]
1.IIR数字滤波器的模拟转换设计法利用模拟滤波器成熟的理论和设计方法来设计IIR数字滤波器是经常使用的方法设计过程是按照技术要求设计一个模拟滤波器,得到滤波器的传输函数,再按一定的转换关系将转换成数字滤波器的系统函数将传输函数从s平面转移到z平面的方法有多种,但工程上常用的是脉冲响应不变法和双线性变换法
2.IIR数字滤波器的零极点累试法上述介绍的模拟转换设计法实际上是数字滤波器的一种间接设计方法,而且幅度特性受到所选模拟滤波器特性的限制例如巴特沃斯低通幅度特性是单调下降,而切比雪夫低通特性带内或带外有上、下波动等,对于要求任意幅度特性的滤波器,则不适合采用这种方法下述介绍的在数字域直接设计IIR数字滤波器的设计方法,其特点是适合设计任意幅度特性的滤波器在IIR数字滤波器的直接设计法中零极点累试法较为常用,设单位脉冲响应的零极点表达式为
[2](
1.
1.3)按照(
1.
1.3)式,系统特性取决于系统零极点的分布,通过分析,我们知道系统极点位置主要影响系统幅度特性峰值位置及其尖锐程度,零点位置主要影响系统幅度特性的谷值位置及其凹下的程度;且通过零极点分析的几何作图法可以定性地画出其幅度特性上面的结论及方法提供了一种直接设计滤波器的方法这种设计方法是根据其幅度特性先确定零极点位置,再按照确定的零极点写出其系统函数,画出其幅度特性,并与希望的进行比较,如不满足要求可通过___零极点位置或增加(减少)零极点,进行修正
3.优化设计法IIR数字滤波器除模拟转换设计法和零极点累试法外,还有一种直接在频域或者时域中进行设计,联立方程后需要计算机作辅助运算的方法,即所谓的优化设计法
1.2IIR数字滤波器的硬件实现方案滤波器的实现主要包括两大类DSPTMS320系列芯片的实现和ISP器件的实现(主要包括FPGA和CPLD)其中利用DSPTMS320系列芯片实现滤波时速度较慢,而利用ISP器件实现时,其运算速度比DSP器件要快好多倍FPGA的实现包括其自带的核的实现方法和自编程实现方法核的实现方法虽然好用并且结构缜密,但一般情况下使用的权限都会受到注册___的限制,因此基于FPGA的自编程实现方法成了滤波器实现的首选
[3]以下简要介绍IIR数字滤波器的设计方案和基于FPGA的实现方法
[4]
1.方案一直接相乘累加式对于二阶的IIR数字滤波器,其传递函数为
1.
2.1滤波器___流图见图1-1,在第n时刻,是当时的输入样本;是n时刻的IIR滤波器的输出
1.
2.2因此,可以用硬件乘法器和硬件加法器来实现乘法和加法由式
1.
2.2可以看出,按照这种设计方法,要用到5个乘法器和6个加法器对于FPGA的设计来说,这种方法的缺点是比较耗费资源
2.方案二基于ROM查表法的VHDL结构化设计采用ROM查表的方法,主要是为了避免使用硬件乘法器二阶IIR的一般表示形式为
1.
2.3其中是输入序列,是输出序列,和是系数假设输入序列为位2的补码,并以定点表示,并数据输入串行移入SR1和SR2,由抽头处得到,每计算出一个值后,便并行加载到SR3中,然后串行移入SR4,并在抽头处得到和ROM的输入地址由组成按此方法设计的优点是避免了占主要运算量的乘法运算,节省了FPGA的硬件资源,缺点与FIR滤波器利用ROM方法设计相同,即使用不够灵活当系数发生变化时,更改ROM内的数据十分不便,特别是当阶数比较大时,ROM内的数据较多,程序外的运算量也很大,修改数据更为不便图1-2ROM查表法实现框图
3.方案三基于ROM查表法的改进型设计此方法结合了直接相乘累加式和ROM查表法的优点,使得设计灵活,设计周期短,节省资源二阶IIR的一般表示形式为
1.
2.6这里是输入序列,是输出序列,和是系数设输入序列为位2的补码,并以定点表示,并XnXn-1Xn-2Xn-1Xn-2输入b0kb1ka0ka2ka1k输出Yn累加器图1-3改进型实现框图图1-3中的作为FPGA接口上的A/D器件的转换数据输入寄存器,各寄存器内的数据与各自的系数的最高位相乘后,送入累加器相加,并且其和向左移一位,以实现乘2运算下一个时钟,寄存器内数据与其系数的次高位相乘,再送入累加器与其数据相加,再左移一位接下的6个时钟进行类似的操作第8个时钟后,累加器将其数据输出,即,并对累加器清零,同时将寄存器数据送入寄存器,将寄存器数据送入寄存器,同理,接着再进行下一次运算对上述三种方法相比较而言,方案三实现较为方便简洁,在节省了FPGA硬件资源的同时,使得设计灵活,设计周期大为缩短,故本设计在方案三为基础上作改进后,来实现IIR数字滤波器的第2章EDA技术和可编程逻辑器件
2.1电子设计自动化EDA技术EDA是ElectronicDesignAuto___tion的缩写,意为电子设计自动化,即利用计算机自动完成电子系统的设计回顾近30年的电子设计技术的发展历程,可将EDA技术分为三个阶段
[4]:七十年代为CADComputerAideDesign阶段这个阶段主要分别研制了一个个单独的软件工具,主要有电路模拟、逻辑模拟、版图、PCB布局布线等,通过计算机的使用,从而可以把设计人员从大量繁琐、重复的计算和绘图工作中解脱出来八十年代为CAE阶段这个阶段在集成电路与电子系统方法学,以及设计工具集成方面取得了众多成果,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计九十年代为EDA阶段,尽管CAD/CAE技术取得了巨大的成功,但在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习实用困难直接影响到设计环节间的衔接基于以上不足,人们开始追求贯穿整个设计过程的自动化,即电子系统设计自动化
2.2可编程逻辑器件
2.
2.1可编程逻辑器件简介可编程阵列逻辑器件PALProgram___bleArrayLogic和通用阵列逻辑器件GALGenericArrayLogic都属于简单PLD随着技术的发展,简单PLD在集成度和性能方面的局限性也暴露出来其寄存器、I/O引脚、时钟资源的数目有限,没有内部互连,因此包括复杂可编程逻辑器件CPLDComplexPLD和现场可编程门阵列器件FPGAFieldProgram___bleGateArray在内的复杂PLD迅速发展起来,并向着高密度、高速度、低功耗以及结构体系更灵活、适用范围更广阔的方向发展FPGA具备阵列型PLD的特点,结构又类似掩膜可编程门阵列,因而具有更高的集成度和更强大的逻辑实现功能,使设计变得更加灵活和易实现相对于CPLD它还可以将配置数据存储在片外的EPROM或者计算机上,设计人员可以控制加载过程,在现场修改器件的逻辑功能,即所谓的现场可编程所以FPGA得到了更普遍的应用
2.
2.2使用FPGA器件进行___的优点使用FPGA器件设计数字电路,不仅可以简化设计过程,而且可以降低整个系统的体积和成本,增加系统的可靠性使用FPGA器件设计数字系统电路的主要优点如下:
1.增大功能密集度功能密集度是指在给定的空间能集成的逻辑功能数量可编程逻辑芯片内的组件门数高,一片FPGA可代替几十片乃至上百片中小规模的数字集成电路芯片用FPGA实现数字系统时用的芯片数量少,从而减少印刷板___和数目,最终导致系统规模的减小
2.缩短设计周期由于FPGA器件集成度高,使用时印刷线路板电路布局布线简单FPGA器件的可编程性和灵活性,决定了用它设计一个系统所需时间比传统方法大为缩短
3.工作速度快FPGA/CPLD器件的工作速度快,一般可以达到几百兆赫兹,远远大于DSP器件使用FPGA器件后实现系统所需要的电路级数少,因而整个系统的工作速度会得到提高
2.
2.3FPGA设计的___流程设计开始需利用EDA工具的文本或图形器将设计者的设计意图用文本方式如VHDL程序或图形方式原理图、状态图等表达出来完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备编译形成标准VHDL文件后,在综合前即可以对所描述的内容进行功能仿真,又可称为前仿真由于此时的仿真只是根据VHDL的语义进行的,与具体电路没有关系,仿真过程不涉及具体器件的硬件特性,如延迟特性设计的第三步是综合,将软件设计与硬件的可实现性挂钩,这是软件化为硬电路的关键步骤综合后,可生成VHDL网表文件,利用网表文件进行综合后仿真综合通过后必须利用FPGA布局/布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,这个过程叫做实现过程布局布线后应进行时序仿真时序仿真中应将布局布线后的时延文件反标到设计中,使仿真既包含门时延,又包含线时延的信息与前面各种仿___比,这种仿真包含的时延信息最为全面、准确,能较好地反映芯片的实际工作情况如果以上的所有过程,都没有发现问题,即满足原设计要求,就可以将适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片中
2.3硬件描述语言VHDL及数字系统设计方法
2.
3.1硬件描述语言VHDL简介硬件描述语言VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVHDL是一种用于设计硬件电子系统的计算机语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能它主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯片的应用设计与其它的HDL相比,VHDL具有更强大的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言
2.
3.2利用VHDL设计数字系统利用VHDL语言设计数字系统硬件电路,与传统的设计方法相比,具有以下优点:
1.采用自顶向下TOP-DOWN的设计方法自顶向下是指从系统总体要求出发,在顶层进行功能方框图的划分和结构设计由于设计的主要仿真和调试过程在高层次上完成,这一方面有利于提高了设计的效率
2.降低了硬件电路的设计难度在使用VHDL语言设计硬件电路时,可以免除编写逻辑表达式或真值表的过程,使得设计难度大大下降,从而也缩短了设计周期
3.主要设计文件是用VHDL语言编写的源程序在传统的硬件电路设计中,最后形成的主要文件是电路原理图,而采用VHDL语言设计系统硬件电路时主要的设计文件是VHDL语言编写的源程序
4.方便ASIC移植VHDL语言的效率之一,就是如果你的设计是被综合到一个FPGA或CPLD的话,则可以使你设计的产品以最快的速度上市当产品的产量达到相当的数量时,采用VHDL进行的设计很容易转换成专用集成电路来实现所以本次设计采用利用VHDL语言的数字系统设计方法第3章IIR数字滤波器的设计与仿真结果分析
3.1各模块的设计与仿真结果分析本课题在实现方案三的基础上,结合___[4-6]将IIR滤波器的硬件系统分为四个模块时序控制、延时、补码乘加和累加模块以下就各个模块的实现及仿真作简要的分析
3.
1.1时序控制模块的设计与仿真结果分析时序控制模块主要用来产生对其它模块的时序控制___模块的符号如图3-1a所示,输入___CLK是时钟___,RES是复位___,CLK_REG及CLK_REGBT是输出___图3-1a时序控制模块图图3-1b时序控制模块仿真图时序控制模块仿真如图3-2b所示,其中counter为程序内部计数___,在clk的上升延到来时,counter以6个时钟为周期开始进行计数,clk_regbt每隔6个时钟输出一个低电平,clk_reg则每隔6个时钟后输出一个高电平输出的两个时钟___正好控制延时模块、补码乘加模块和累加模块的模块的运行符合设计要求时序控制模块程序见附录
13.
1.2延时模块的设计与仿真结果分析延时模块的符号如图3-2a所示,其主要作用是在clk时钟作用下将差分方程的各x、y值延迟一个时钟以实现一次延时运算,即当输入为xn和yn时,经过一次延时后其输出分别为xn-1和yn-
1.其中yout是反馈输入___xn是输入___程序见附录二图3-2a延时模块图图3-2b延时模块仿真图延时模块仿真图如图3-2b所示,由图3-4可以看出当输入的xn、yout都为时,在时钟___上升沿的作用下产生延时,经第一个时钟后x
0、x
1、x
2、y
0、y1的值分别为1,0,0,1,0经第二个时钟后x
0、x
1、x
2、y
0、y1的值分别为2,1,0,2,1经第三个时钟后x
0、x
1、x
2、y
0、y1的值分别为3,2,1,3,2经第四个时钟后......由此可见该模块仿真值正确延时模块程序见附录
13.
1.3补码乘加模块的设计与仿真结果分析补码乘加模块主要用来实现输入序列、与系数、分别相乘后再相加的过程即实现的算法为了避免过多地使用乘法器,本设计中乘加单元(MAC)的乘法器采用阵列乘法器,以提高运算速度由于MaxplusⅡ的LPM库中乘法运算为无符号数的阵列乘法,所以使用时需要先将两个补码乘数转换为无符号数相乘后,再将乘积转换为补码乘积输出
[5]每个二阶节完成一次运算共需要6个时钟周期,而且需采用各自___的MAC实现两级流水线结构,即每个数据经过两个二阶节输出只需要6个时钟周期模块的符号如图3-3a所示图3-3a补码乘加模块图图3-3b补码乘加模块仿真图补码乘加模块仿真图如图3-5所示,clk_regbt及clk_reg为输入时钟,由时序控制模块提供、为系数,x
0、x
1、x
2、y
0、y1为输入___,yout为输出___,图3-3b中75为x
0、x
1、x
2、y
0、y1的值15和系数、相乘后再相加的结果,完成了补码乘加的功能补码乘加模块程序见附录
13.
1.4累加模块的设计与仿真结果分析补码乘加模块所输出的___送入累加器后,与寄存于累加器中的上一步计算的中间结果相加,最后将此步的计算结果经由输出引脚输出,所得___即为最终结果即该模块主要实现youtput=yout+youtputn-1的算法,模块的符号如图3-4a所示图3-4a累加模块图图3-4b累加模块仿真图累加模块仿真图如图3-4b,其中res为复位___,clk为时钟___,yout为输入___,由补码乘加模块的输出___yout提供,由图中可以看出当输入___为yout=,输出为youtput=,实现了累加的功能符合设计要求累加模块程序见附录
13.
1.5顶层模块设计顶层模块设计采用了原理图输入方法,原理图输入方式非常直观,便于___观察和电路的调节图3-5顶层模块图本课题设计的顶层文件名为iir.gdf设计生成的逻辑符号如图3-5所示顶层模块设计程序见附录
13.2IIR数字滤波器的仿真与结果分析
3.
2.1IIR数字滤波器的系统设计IIR数字滤波器顶层原理图如图3-6所示为了便于理解整个系统的设计,现将系统的运行过程进行说明图3-6IIR数字滤波器顶层原理图系统先开始处于初始状态,当清零___为“1”时,对整个系统进行清零在清零___为“0”的前提,时序控制模块在时钟clk上升沿的作用下产生两个___CLK_REG及CLK_REGBT,其中CLK_REG___用来作为延时模块、补码乘加模块和累加模块的输入时钟,CLK_REGBT每隔6个时钟产生一个高电平作为这三个模块的复位___延时模块在接收到CLK_REG高电平___时清零输出端,接收到低电平时,在CLK_REGBT上升沿的作用下对输入___进行延时,以实现一次延时运算,而后将延时___输出,送给补码乘加模块补码乘加模块在接收延时___的同时也接收读者输入的系数___,在CLK_REGBT上升沿的作用下实现系数和延时___的补码乘加运算,而此步骤需要6个时钟来完成,正好与时序控制模块的输出___CLK_REGBT相一致补码乘加模块的输出一部分送入延时模块以实现___的反馈,另一部分则送入到累加模块,在累加模块中进行结果累加后输出,得到最终结果
3.
2.2IIR数字滤波器的系统仿真与结果分析在各模块编译通过后将各模块进行了综合,针对不同的输入___和不同的输入系数对IIR数字滤波器进行了仿真,仿真波形如图3-7所示并将仿真值和计算值进行了比较,如表
3.
2.1中所示(a)(b)(c)图3-7IIR数字滤波器仿真图表
3.
2.1滤波后输出的数据输入数据Xn={012345};a0=a1=a2=b0=b1=1计算值01411244780仿真值01411254369输入数据Xn={010101};a0=a1=a2=b0=b1=1计算值012581524仿真值012591523输入数据Xn={010101};a0=2a1=a2=b0=b1=1计算值0238142234仿真值0249172741由表
3.
2.1可见,仿真值结果正确,只是与真值之间存在一定的误差,仿真值越大时误差越大,这是由于有限精度算法所引起的误差,经累加器累加后使得误差变得越来越大,要解决这一问题可以通过增加二进制位数来提高系统的运算精度
[5]
3.
2.3高阶IIR数字滤波器的实现要实现一个高阶IIR数字滤波器,如果采用直接型结构实现,需用的乘法器和延迟单元相对较多,而且分子和分母的系数相差较大,需要较多的二进制位数才能实现相应的精度要求如果采用二阶节级联实现,一方面各基本节的零点、极点可以很方便地单独进行调整,另一方面可以降低对二进制数位数的要求以实现一个四阶IIR数字滤波器为例,可以通过两个二阶IIR数字滤波器级联的方式来实现较为简洁图3-8给出了一个四阶IIR数字滤波器实现的原理图
[5],具体的工作原理与二阶IIR数字滤波器类似,在此本节即不再细述图3-8四阶IIR数字滤波器的顶层原理当然,更高阶的IIR数字滤波器的实现方法与四阶滤波器的实现方法类似,只需将多个二阶IIR数字滤波器进行级联,即可实现结束语为期三个月的毕业设计即将结束,在这期间我经历了从查资料、分析课题到学习软件、设计程序、调试、总结经验教训及书写毕业论文的过程本课题采用一种基于FPGA的IIR数字滤波器的设计方案首先分析了IIR数字滤波器的原理及设计方法,然后通过MAX+PLUSⅡ的设计平台,采用模块化、层次化的设计思想将整个IIR数字滤波器分为四个功能模块时序控制模块、延时模块、补码乘加模块、累加模块分别对各模块采用语言VHDL进行描述后,进行了仿真和综合仿真结果表明,本课题所设计的IIR数字滤波器运算速度较快但由于有限精度算法问题致使仿真结果存在一定的误差,针对这一问题可以通过增加二进制位数来提高系统的运算精度由于毕业设计即将结束,没有时间继续完善本课题所实现的IIR数字滤波器的性能,在这一方面,滤波器的性能有待提高___
[1]刘凌,胡永生译.数字___处理的FPGA实现[M].北京清华大学出版社.xx.
[2]丁玉美,高西全.数字___处理[M].西安西安电子科技大学出版社.xx.
[3]潘松,黄继业.EDA技术实用教程[M].北京科学出版社.2000.
[4]潘松,王国栋.VHDL实用教程[M].成都电子科技大学出版社.xx.
[5]倪向东.基于FPGA的四阶IIR数字滤波器[J].电子技术应用,xx.
[6]王卫兵.高阶IIR数字滤波器的FPGA描述[J].电子元器件,xx,16期pp3-4.
[7]黄任.VHDL入门·解惑·经典实例·经验总结[M].北京北京______出版社.xx.
[8]北京理工大学ASIC研究所.VHDL语言100例详解[M].北京清华大学出版社.1999.
[9]JosephB.Evans,“EfficientF1RFilterArchitecturesSuitableforFPGAImplementation“[M].IEEETrans,CircuitsandSystem,July1994.
[10]JavierVallsMarcosM.PeiroTriniSansaloniEduardoBoemo“AStudyAboutFPGA-BasedDigitalFilters“[J]IEEESIPSpp191-201October1998.致谢本文是在导师朱幼莲教授的精心指导和严格要求下完成的从选题到论文的完成,都凝聚着朱幼莲老师的辛劳和汗水她在我这三个月的毕业设计期间给了我很多无微不至的关怀,从IIR数字滤波器的理论知识到滤波器的实现方法都有朱老师孜孜不倦的教诲,在朱老师的帮助下本次毕业设计才能得意顺利完成朱老师渊博的知识、严谨科学的治学态度和工作作风将给我以后的学习和工作起着模范和激励的作用,在此对朱幼莲老师表示深深的敬意和衷心的感谢!此外,我在毕业设计期间还得到许多老师、同学、朋友的帮助,在此亦表示衷心的感谢!附录1各模块VHDL程序时序控制模块程序libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitycontrolisportclkres:instd_logic;clk_regclk_regbt:outstd_logic;end;architecturebhvofcontrolissignalcounter,count_bt:integer;signalclk_en:std_logic;beginclk_regbt=notclkandclk_en;clk_reg=notclkandnotclk_en;pro___ssclkresbeginifres='1'thencounter=0;count_bt=0;elsifclk'eventandclk='1'thenifcounter='1';counter=counter+1;count_bt=count_bt-1;elsecounter=0;count_bt=0;clk_en='0';endif;endif;endpro___ss;endbhv;延时模块程序libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydelayisportclk:instd_logic;res:instd_logic;xn:instd_logic_vector4downto0;yout:instd_logic_vector8downto0;x0x1x2:outstd_logic_vector4downto0;y0y1:outstd_logic_vector8downto0;enddelay;architecturebhvofdelayissignalreg_x0reg_x1reg_x2:std_logic_vector4downto0;signalreg_y0reg_y1:std_logic_vector8downto0;beginpro___ssresclkbeginifres='1'thenreg_x0=“00000“;reg_x1=“00000“;reg_x2=“00000“;reg_y0=“000000000“;reg_y1=“000000000“;elsifclk'eventandclk='1'thenreg_x2=reg_x1;reg_x1=reg_x0;reg_x0=xn;reg_y1=reg_y0;reg_y0=yout;--实现延时endif;x0=reg_x0;x1=reg_x1;x2=reg_x2;y0=reg_y0;y1=reg_y1;endpro___ss;endbhv;补码乘加模块程序libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity___ultadd1isportclk_regbtclk_reg:instd_logic;a0a1a2b0b1x0x1x2:instd_logic_vector4downto0;y0y1:instd_logic_vector8downto0;yout:outstd_logic_vector8downto0;end___ultadd1;architecturebhvof___ultadd1issignaltantbntp2n:std_logic;signalt:std_logic_vector2downto0;signaltatbtaatbb:std_logic_vector3downto0;signaltmpatmpb:std_logic_vector4downto0;signaltptpptppp:std_logic_vector7downto0;signalytmpp:std_logic_vector8downto0;begintmpa=a0whent=0elsea1whent=1elsea2whent=2elseb0whent=3elseb1whent=4elseothers='0';tmpb=x0whent=0elsex1whent=1elsex2whent=2elsey0whent=3elsey1whent=4elseothers='0';ta=tmpa3downto0;tb=tmpb3downto0;tan=tmpa4;tbn=tmpb4;taa=notta+'1'whentan='1'elseta;--将输入转换为补码tbb=nottb+'1'whentbn='1'elsetb;tp2n=tanxortbn;tp=taa*tbb;--完成补码相乘运算tpp=nottp+'1'whentp2n='1'elsetp;p=others='0'whentmpb=“00000“elsetp2ntpp;pro___ssclk_regclk_regbtbeginifclk_reg='1'thent=“000“;ytmp=others='0';elsifclk_regbt'eventandclk_regbt='1'thenift=t+1;ytmp=ytmp+p;--完成补码相乘后的相加运算elsift=5thenifytmp8='1'thentppp=notytmp7downto0+'1';yout7downto0=tppp;yout8=ytmp8;elsetppp=ytmp7downto0;yout7downto0=tppp;yout8=ytmp8;endif;endif;endif;endpro___ss;endbhv;累加模块程序libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityaddynisportclk:instd_logic;res:instd_logic;yout:instd_logic_vector8downto0;youtput:outstd_logic_vector8downto0;endaddyn;architecturebhvofaddynissignaly_outy_ou:std_logic_vector8downto0;beginpro___ssresclkbeginifres='1'thenyoutput=“000000000“;elsifclk'eventandclk='1'theny_ou=yout;y_out=y_ou+y_out;--实现累加功能youtput=y_out;endif;endpro___ss;endbhv;顶层模块程序libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityiirisportclk:instd_logic;res:instd_logic;a0a1a2b0b1:instd_logic_vector4downto0;xn:instd_logic_vector4downto0;youtput:outstd_logic_vector8downto0;endiir;architecturestrucofiirisponentcontrolportclkres:instd_logic;clk_regclk_regbt:outstd_logic;endponent;ponentdelayportclk:instd_logic;res:instd_logic;yout:instd_logic_vector8downto0;xn:instd_logic_vector4downto0;x0x1x2:outstd_logic_vector4downto0;y0y1:outstd_logic_vector8downto0;endponent;ponent___ultadd1portclk_regclk_regbt:instd_logic;a0a1a2b0b1x0x1x2:instd_logic_vector4downto0;y0y1:instd_logic_vector8downto0;yout:outstd_logic_vector8downto0;endponent;ponentaddynportclk:instd_logic;res:instd_logic;yout:instd_logic_vector8downto0;youtput:outstd_logic_vector8downto0;endponent;signalf0f1f2:std_logic_vector4downto0;signalf3f4eg:std_logic_vector8downto0;signalclk_regclk_regbt:std_logic;beginU1:controlport___pclkresclk_regclk_regbt;U2:delayport___pclk_regresexnf0f1f2f3f4;U3:___ultadd1port___pclk_regclk_regbta0a1a2b0b1f0f1f2f3f4e;U4:addynport___pclk_regreseyoutput;endstruc;附录2英文翻译全波段IIR数字微分器的设计XiZhangandToshinoriYoshikawa电机工程部Nagaoka大学技术Nagaoka,Niigata940-2188japan摘要基于对复杂的chebyshev的理解,本论文提出了一个有效的全波段IIR数字微分器的方案方案的理论是以使用Remez复变换运算法则的特征值问题公式为基础的因此,通过解决特征值问题找到绝对最小特征值后,一组滤波器系数能很容易的被得到然后,通过一系列给定初值的猜测的重复出发可以得到复杂Chebyshev的近似至,方案的运算法则是有效的因为它不仅能够达到Remez变换法则中的固有速度,而且还是单一的添写步骤在一个例子中可以呈现这一点而且与系统的方法相比较,使用设计的方案达到的结果,要比传统方案达到的结果要好
1、介绍数字微分是一个重要的___处理问题,数字微分器已在
[1]~
[11]中广泛运用对数字微分器相当大的兴趣促成了各种不同设计技术的发展设计的目的是得到一个满足给定规格,说明要求的数字微分器,由于能容易的实现线性相位,
[4]
[6]
[9]
[11]已经做了许多主要是FIR微分器设计方面的工作,与此形成鲜明对比的是只做了很少关于IIR微分器的工作,一个使用以线性规则为基础的设计方法在
[7]中予以给出在本论文中,我们提出了一个基于复杂chebyshev理解有效的全波段IIR数字微分器方案方案的理论是以使用Remez复变换运算法则
[10]的特征值问题公式为基础的因此,通过解决特征值问题找到绝对最小特征值后,一组滤波器系数能容易的被得到然后,通过一系列给定初值猜测的重复出发,可以得到复杂chebyshev的近似值方案的运算法则是有效的,因为它不仅能达到Remez交换法则中的固有速度,而且还是单一的添写步骤最后,在一个例子中可以呈现这一点,而且与传统的方法相比较,使用设计的方案达到的结果要比传统方案达到的结果要好
2、IIR数字滤波器理想数字微分器的频率响应是:
(1)在实际的设计中,通常加一个持续延迟以得到一个因果关系的解决方案,然后,所需的数字微分器频率响应由下式表示:
(2)式中是所给的群延迟,是波段的中止频率,对于全波段微分器,,必须由数字滤波器设置系数,其中k是整数IIR数字滤波器中,传输函数的分子次数和分母次数被定义为
(3)式中和是固定系数,频率响应通常是频率的复杂函数
(4)复杂Chebyshev近似值问题包括找出滤波器系数、,这是Chebyshev最底标准:
(5)误差函数:
(6)在所有可能选择的、中,为了得到恒定的相对误差,我们在有益的波段
[6]
[7]中使用另一个额外的函数
3、IIR数字滤波微分器的设计在本节中,我们描述了以使用Remez复变换运算法则的特征值为基础的全波段IIR数字微分器,我们的目的是以
(6)式中的误差函数为基础,找出一系列滤波器系数、
(7)式中是减到最少后的最大误差当时,额外函数趋于这意味着从
(7)式中,当时,必须是0,亦即是
3.1初值选择既然目标是减小最大误差,我们取图1中L频率点,并设在此频率点的值为0
(8)当是奇数时,,如图1所示,当我们以相同的间隔从选取频率点时,记录到,当是偶数时,,此时,如图1(b)所示,在中,等间隔的选取频率点从到,由于,我们可以以式
(8)替换式
(4),并得到
(9)将
(9)式化为实部和虚部有
(10)式中,以及
(11)式中,如果是奇数,此时,如果是偶数,且由于以及,很明显,式
(10)和式
(11)是的全部方程,即奇数和偶数因此,我们可以通过最原始的解线性方程的方法,联列式
(10)
(11),解得、
3.2用公式表示利用得到的初始的滤波器系数,我们可以计算误差函数,有利误差函数中获得的响应可以不是equiripple在下列各项中,我们将应用Remez复变换法则获得一个equiripple响应首先,我们在中寻找所有的频率极值
(12)式中当是奇数时,,;当是偶数时,,,如图1所示尽管不是极值频率,但是我们可以设,因为使得,然后,我们可以计算在时,误差函数中的相位,另用以下的式子限定13式中是量级误差被减到最少的,以式
(13)取代式
(4),我们将式
(13)化为实部和虚部
(14)式中,及
(15)式中,当是奇数时,,,因此,不管是奇数还是偶数,在式
(14)和式
(15)中,包含了所有的选择支,我们以矩阵形式重写式
(14)和式
(15)
(16)式中τ矩阵中、为
(17)
(18)如果,则1920如果,因此,式
(16)应为一般化的特征值,例如是一个特征值,则是其对应的特征向量,为了减小,我们必须解决上述式
[10]中的特征值问题,以找到绝对最小特征值特征向量提供了一组滤波器的系数由于我们只对一个特征向量对应的绝对最小特征值感兴趣,且这种计算能够有效,是由于其没有调用一般的如的方法,而是是使用了幂迭代法,通过已得到的滤波器系数,我们计算出误差函数在中,找出所有极值频率由此可知,所得的响应可以不是equiripple如式
(12)所示,我们可以选取极值频率,并计算出在时的相位因此,式
(16)中的特征值问题能够又一次的被解决,且可以得到一组新的滤波器系数上述程序需要被重复,知道达到equiripple响应,设计的运算法则如下详细叙述
3.3运算法则设计程序{IIR数字微分器运算法则设计}开始1.读取、和的值;2.取图1所示的频率点;3.解方程式
(10)和式
(11)得到初始值;4.计算,找出如式
(12)所示所有极值频率,并求出相位,重复;5.设,;6.用式
(17)
(18)
(19)和
(20)计算和,找出式
(16)中的绝对最小特征值以得到一组滤波器系数
7.计算以找出所有极值频率,如式
(12)所示,并得到相位,直到满足下列对于一个特定小的常数的条件(一般)结束
4.设计原则在本节中,我们介绍了一个数字实例来论证所提方案的实效,与现有的设计方案在滤波器的性能上作比较,滤波器的规格是,这和
[7]中的例3是相同的,初始的频率点如图1(a)中所选取的,我们然后达到第一个方案如图1(a)所示选取一组初始极值频率,我们在六次重复后得到一个equiripple解决方案图2中所示的是的量级响应,鉴于
[7]中,其最大误差是的量级响应,相应误差和群延迟在图
4、图3和图5中分别示出
[7]中的结果以星形式表示,以作比较,从图中可以看出,提出的方案具有更小的群延迟,IIR微分器所具有的极零点在图6中示出,并且可以看出,此滤波器是因果稳定性的为了保证因果稳定性,在
[3]中已证明,一个更大的群延迟需被指定我们可以发现,对于这种IIR微分器,当群延迟被设置的比更大时,滤波器变为因果稳定性5.结论本论文中,基于对复杂的chebyshev的理解,提出了一个有效的全波段IIR数字微分器的方案方案的理论是以使用Remez复变换运算法则的特征值问题公式为基础的因此,通过解决特征值问题找到绝对最小特征值后,一组滤波器系数能很容易的被得到然后,通过一系列给定初值的猜测的重复出发可以得到复杂Chebyshev的近似至,方案的运算法则是有效的因为它不仅能够达到Remez变换法则中的固有速度,而且还是单一的添写步骤在一个例子中可以呈现这一点而且与系统的方法相比较,使用设计的方案达到的结果,要比传统方案达到的结果要好模板内容仅供参考。