基于FPGA的IIR滤波器设计论文.docx
《基于FPGA的IIR滤波器设计论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的IIR滤波器设计论文.docx(57页珍藏版)》请在冰豆网上搜索。
基于FPGA的IIR滤波器设计论文
(此文档为word格式,下载后您可任意编辑修改!
)
基于FPGA的IIR滤波器设计
摘要:
数字信号处理在科学和工程技术许多领域中得到广泛的应用,与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶数获得较高的选择性,故本课题采用一种基于FPGA的IIR数字滤波器的设计方案,首先分析了IIR数字滤波器的原理及设计方法,然后通过MAX+PLUSⅡ的设计平台,采用自顶向下的模块化设计思想将整个IIR数字滤波器分为:
时序控制、延时、补码乘加和累加四个功能模块。
分别对各模块采用VHDL进行描述后,进行了仿真和综合。
仿真结果表明,本课题所设计的IIR数字滤波器运算速度较快,系数改变灵活,有较好的参考价值。
关键词:
电子设计自动化,IIR数字滤波器,现场可编程门阵列,硬件描述语言
ThedesignforIIRdigitalfilterbasedonFPGA
Abstract:
Digitalsignalprocessingiswidelyusedinlotsoffields,suchasinscienceandprojecttechnique.ComparedwithFIRdigitalfilter,IIRdigitalfiltercangetmethodwasintroducedinthepaper,whichisbasedonFPGA.ByusedthedesignplantofMAX+PLUSⅡ,weadoptblockingmethodnamed“Top-down”anddividetheentireIIRdigitalfilterintofourblocks,whichareClockcontrol,Timedelay,Multiply-additionandProgression.AfterdescribedwithVHDL,wedoemulateandsynthesistoeachblock.Theresultshowsthat,theintroducedIIRdigitalfilterrunsfast,andthecoefficientchangesagility.ItAutomation,IIRDigitalFilter,FieldProgrammableGateArray,veryHighSpeedIntegratedCircuitHardwareDescriptionLanguage(VHDL)
序言...........................................................1
第1章IIR数字滤波器及其硬件实现方法...........................2
1.1IIR数字滤波器概念....................................................2
1.1.1IIR数字滤波器的原理................................................2
1.1.2IIR数字滤波器的基本结构............................................2
1.1.3IIR数字滤波器的设计方法............................................3
1.2IIR数字滤波器的硬件实现方案..........................................4
第2章EDA技术和可编程逻辑器件.................................8
2.1电子设计自动化EDA技术................................................8
2.2可编程逻辑器件.......................................................8
2.2.1可编程逻辑器件简介.................................................8
2.2.2使用FPGA器件进行开发的优点.........................................9
2.2.3FPGA设计的开发流程.................................................9
2.3硬件描述语言VHDL及数字系统设计方法..................................10
2.3.1硬件描述语言VHDL简介..............................................10
2.3.2利用VHDL设计数字系统..............................................10
第3章IIR数字滤波器的设计与仿真结果分析.....................11
3.1IIR数字滤波器各模块的设计与仿真结果分析.............................11
3.1.1时序控制模块的设计与仿真结果分析..................................11
3.1.2延时模块的设计与仿真结果分析......................................12
3.1.3补码乘加模块的设计与仿真结果分析..................................12
3.1.4累加模块的设计与仿真结果分析......................................14
3.1.5顶层模块设计......................................................14
3.2IIR数字滤波器的仿真与结果分析.......................................15
3.2.1IIR数字滤波器的系统设计...........................................15
3.2.2IIR数字滤波器的系统仿真与结果分析.................................16
3.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所示。
图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的补码,并以定点表示,并<1,对于可以表示为:
(1.2.4)
式中:
表示的第位,上标为0的是符号位,因此可以定义一个5bit为变量的函数为:
(1.2.5)
由此可以得到:
-(1.2.6)
由于函数仅有32种可能取值,因此可以设计一个32*b位的ROM构成的如图1-3描述的基于ROM的实现结构。
数据输入串行移入SR1和SR2,由抽头处得到,每计算出一个值后,便并行加载到SR3中,然后串行移入SR4,并在抽头处得到和。
ROM的输入地址由组成。
按此方法设计的优点是避免了占主要运算量的乘法运算,节省了FPGA的硬件资源,缺点与FIR滤波器利用ROM方法设计相同,即使用不够灵活。
当系数发生变化时,更改ROM内的数据十分不便,特别是当阶数比较大时,ROM内的数据较多,程序外的运算量也很大,修改数据更为不便。
3.方案三:
基于ROM查表法的改进型设计
此方法结合了直接相乘累加式和ROM查表法的优点,使得设计灵活,设计周期短,节省资源。
二阶IIR的一般表示形式为:
(1.2.6)
这里是输入序列,是输出序列,和是系数。
设输入序列为位2的补码,并以定点表示,并<1,对于可以表示为:
(1.2.7)
式中:
表示的第位,上标为0的是符号位,因此可以定义一个5bit为变量的函数为:
(1.2.8)
同理可得:
(1.2.9)
由此可以得到:
(1.2.10)
令,可以推出:
(1.2.11)
从式(1.2.11)中可以看出,可以用一个五路8位*1位乘法器在8个时钟周期内实现上述算式。
其加法可以直接调用软件的库实现。
本方案实现结构如图1-3所示。
图1-3中的作为FPGA接口上的AD器件的转换数据输入寄存器,各寄存器内的数据与各自的系数的最高位相乘后,送入累加器相加,并且其和向左移一位,以实现乘2运算。
下一个时钟,寄存器内数据与其系数的次高位相乘,再送入累加器与其数据相加,再左移一位。
接下的6个时钟进行类似的操作。
第8个时钟后,累加器将其数据输出,即,并对累加器清零,同时将寄存器数据送入寄存器,将寄存器数据送入寄存器,同理,
。
接着再进行下一次运算。
对上述三种方法相比较而言,方案三实现较为方便简洁,在节省了FPGA硬件资源的同时,使得设计灵活,设计周期大为缩短,故本设计在方案三为基础上作改进后,来实现IIR数字滤波器的。
第2章EDA技术和可编程逻辑器件
2.1电子设计自动化EDA技术
EDA是ElectronicDesignAutomation的缩写,意为电子设计自动化,即利用计算机自动完成电子系统的设计。
回顾近30年的电子设计技术的发展历程,可将EDA技术分为三个阶段[4]:
七十年代为CAD(ComputerAideDesign)阶段。
这个阶段主要分别研制了一个个单独的软件工具,主要有电路模拟、逻辑模拟、版图编辑、PCB布局布线等,通过计算机的使用,从而可以把设计人员从大量繁琐、重复的计算和绘图工作中解脱出来。
八十年代为CAE阶段。
这个阶段在集成电路与电子系统方法学,以及设计工具集成方面取得了众多成果,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
九十年代为EDA阶段,尽管CADCAE技术取得了巨大的成功,但在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习实用困难直接影响到设计环节间的衔接。
基于以上不足,人们开始追求贯穿整个设计过程的自动化,即电子系统设计自动化。
2.2可编程逻辑器件
2.2.1可编程逻辑器件简介
可编程阵列逻辑器件PAL(ProgrammableArrayLogic)和通用阵列逻辑器件GAL(GenericArrayLogic)都属于简单PLD。
随着技术的发展,简单PLD在集成度和性能方面的局限性也暴露出来。
其寄存器、IO引脚、时钟资源的数目有限,没有内部互连,因此包括复杂可编程逻辑器件CPLD(ComplexPLD)和现场可编程门阵列器件FPGA(FieldProgrammableGateArray)在内的复杂PLD迅速发展起来,并向着高密度、高速度、低功耗以及结构体系更灵活、适用范围更广阔的方向发展。
FPGA具备阵列型PLD的特点,结构又类似掩膜可编程门阵列,因而具有更高的集成度和更强大的逻辑实现功能,使设计变得更加灵活和易实现。
相对于CPLD,它还可以将配置数据存储在片外的EPROM或者计算机上,设计人员可以控制加载过程,在现场修改器件的逻辑功能,即所谓的现场可编程。
所以FPGA得到了更普遍的应用。
2.2.2使用FPGA器件进行开发的优点
使用FPGA器件设计数字电路,不仅可以简化设计过程,而且可以降低整个系统的体积和成本,增加系统的可靠性。
使用FPGA器件设计数字系统电路的主要优点如下:
1.增大功能密集度
功能密集度是指在给定的空间能集成的逻辑功能数量。
可编程逻辑芯片内的组件门数高,一片FPGA可代替几十片乃至上百片中小规模的数字集成电路芯片。
用FPGA实现数字系统时用的芯片数量少,从而减少印刷板面积和数目,最终导致系统规模的减小。
2.缩短设计周期
由于FPGA器件集成度高,使用时印刷线路板电路布局布线简单。
FPGA器件的可编程性和灵活性,决定了用它设计一个系统所需时间比传统方法大为缩短。
3.工作速度快
FPGACPLD器件的工作速度快,一般可以达到几百兆赫兹,远远大于DSP器件。
使用FPGA器件后实现系统所需要的电路级数少,因而整个系统的工作速度会得到提高。
2.2.3FPGA设计的开发流程
设计开始需利用EDA工具的文本或图形编辑器将设计者的设计意图用文本方式(如VHDL程序)或图形方式(原理图、状态图等)表达出来。
完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。
编译形成标准VHDL文件后,在综合前即可以对所描述的内容进行功能仿真,又可称为前仿真。
由于此时的仿真只是根据VHDL的语义进行的,与具体电路没有关系,仿真过程不涉及具体器件的硬件特性,如延迟特性。
设计的第三步是综合,将软件设计与硬件的可实现性挂钩,这是软件化为硬电路的关键步骤。
综合后,可生成VHDL网表文件,利用网表文件进行综合后仿真。
综合通过后必须利用FPGA布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,这个过程叫做实现过程。
布局布线后应进行时序仿真。
时序仿真中应将布局布线后的时延文件反标到设计中,使仿真既包含门时延,又包含线时延的信息。
与前面各种仿真相比,这种仿真包含的时延信息最为全面、准确,能较好地反映芯片的实际工作情况。
如果以上的所有过程,都没有发现问题,即满足原设计要求,就可以将适配器产生的配置下载文件通过编程器或下载电缆载入目标芯片中。
2.3硬件描述语言VHDL及数字系统设计方法
2.3.1硬件描述语言VHDL简介
硬件描述语言(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,VHDL)是一种用于设计硬件电子系统的计算机语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此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-1(a)所示,输入信号CLK是时钟信号,RES是复位信号,CLK_REG及CLK_REGBT是输出信号。
图3-1(a)时序控制模块图
图3-1(b)时序控制模块仿真图
时序控制模块仿真如图3-2(b)所示,其中counter为程序内部计数信号,在clk的上升延到来时,counter以6个时钟为周期开始进行计数,clk_regbt每隔6个时钟输出一个低电平,clk_reg则每隔6个时钟后输出一个高电平。
输出的两个时钟信号正好控制延时模块、补码乘加模块和累加模块的模块的运行。
符合设计要求。
时序控制模块程序见附录1。
3.1.2延时模块的设计与仿真结果分析
延时模块的符号如图3-2(a)所示,其主要作用是在clk时钟作用下将差分方程的各x、y值延迟一个时钟,以实现一次延时运算,即当输入为xn和yn时,经过一次延时后其输出分别为x(n-1)和y(n-1).其中yout是反馈输入信号,xn是输入信号。
程序见附录二。
图3-2(a)延时模块图
图3-2(b)延时模块仿真图
延时模块仿真图如图3-2(b)所示,由图3-4可以看出当输入的xn、yout都为时,在时钟信号上升沿的作用下产生延时,经第一个时钟后x0、x1、x2、y0、y1的值分别为1,0,