毕业设计 基于fpga的fir数字滤波器设计_第1页
毕业设计 基于fpga的fir数字滤波器设计_第2页
毕业设计 基于fpga的fir数字滤波器设计_第3页
毕业设计 基于fpga的fir数字滤波器设计_第4页
毕业设计 基于fpga的fir数字滤波器设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学士论文基于FPGA的FIR数字滤波器设计摘要随着公元的第二十一个世纪的到来,今天我们进入了一个科技日新月异的时代。在现代电子数字系统中,滤波器都以一个不可缺少的身份出现。其中,FIR数字滤波器又以其良好的线性特性被广泛和有针对性的大量使用。众所周知,灵活性和实时性是工程实践中对数字信号处理的基本要求。在以往使用的各种滤波器技术中,不难发现有许许多多的问题。但是,随着现代计算机技术在滤波问题上的飞跃,派生出一个全新的分支数字滤波器。利用可编程逻辑器件和EDA技术,使用FPGA来实现FIR滤波器,可以同时兼顾实时性和灵活性。基于FPGA的FIR数字滤波器的研究势在必行。本论文讨论基于FPGA的FIR数字滤波器设计,针对该毕业设计要做的基本工作有如下几点(一)掌握有限冲击响应FIR(FINITEIMPULSERESPONSE,FIR)的基本结构,研究现有的实现方法。对各种方案和步骤进行比较和论证分析,然后针对目前FIR数字滤波器需要的特点,速度快和硬件规模小,作为指导思想进行设计计算。(二)基于硬件FPGA的特点,利用MATLAB软件以及窗函数法设计滤波器。对整个FPGA元件,计划采用模块化、层次化设计思想,从而对各个部分功能进行更为详细的理解和分工设计。最终FIR数字滤波器的设计语言选择VHDL硬件编程语言。(三)设计中的软件仿真使用ALTERA公司的综合性PLD开发软件QUARTUSII,并且利用MATLAB工具进行对比仿真,在仿真的过程中,对比证明,本论文设计的滤波器的技术指标已经全部达标。关键词数字滤波器MATLAB可编程逻辑元件模块化算法BASEDONFPGADESIGNOFFIRDIGITALFILTERSMAJORELECTRONICANDINFORMATIONENGINEERINGDEPARTMENT(INFORMATIONENGINEERING)ABSTRACTASWEHAVEENTEREDTHETWENTYFIRSTCENTURY,OURTECHNOLOGYISCHANGINGCONTINUOUSLYWITHTHETIMESINTHEMODERNELECTRONICDIGITALSYSTEMS,FILTERSAREINDISPENSABLEAMONGTHEM,THEFIRDIGITALFILTERSAREWIDELYUSEDWITHTHEEXCELLENTLINEARCHARACTERISTICASISWELLKNOWNTOUSALL,FLEXIBILITYANDREALTIMEQUALITYARETHEBASICREQUIREMENTSINDIGITALSIGNALPROCESSINGOFENGINEERINGPRACTICESINCEWEHAVEUSEDAVARIETYOFFILTERTECHNOLOGYINTHEPAST,ITISNOTDIFFICULTFORUSTOFINDMANYPROBLEMSINITMOREOVER,WITHTHEDEVELOPMENTOFMODERNCOMPUTERTECHNOLOGYINFILTER,ANEWBRANCHDIGITALFILTERHASDERIVEDWEMAKEUSEOFTHEPROGRAMMABLELOGICDEVICESANDEDATECHNOLOGY,TOGETHERWITHTHEFPGATODESIGNTHEFIRFILTER,WHICHISREALTIMEANDFLEXIBLEINANUTSHELL,ITISIMPERATIVETODOTHERESEARCHINTHEFIRDIGITALFILTERSBASEDONTHETECHNOLOGYOFFPGATHISTHESISISFOCUSEDONTHEDESIGNOFTHEFIRDIGITALFILTERSBASEDONTHETECHNOLOGYOFFPGASEVERALPOINTSAREWORTHMENTIONINGHERE1TOUNDERSTANDANDMASTERTHEBASICSTRUCTUREOFTHELIMITEDSHOCKRESPONSEFIRFINITEIMPULSERESPONSE,FIR,RESEARCHEXISTINGREALIZATIONMETHOD,TOUSEVARIOUSSOLUTIONSTOCOMPAREANDANALYZETHESTEPSANDDEMONSTRATIONSTHEN,TODOTHESELFDESIGNANDCORRECTIONCONCERNINGTHECHARACTERISTICSOFTHEPRESENTFIRDIGITALFILTERS,THATIS,FASTINSPEEDANDSMALLSCALEINHARDWARE2TODESIGNFIRFILTERBASEDONTHECHARACTERISTICSOFFPGAHARDWAREINTHEDESIGNPROCESS,READYTOUSEOFMATLABSOFTWAREANDWINDOWFUNCTIONMETHODDESIGNFILTERASFARASTHEWHOLEFPGACOMPONENTSARECONCERNED,WEPLANTOCARRYONTHEMODULARIZEDANDHIERARCHICDESIGN,INORDERTOHAVEAMOREDETAILEDUNDERSTANDINGOFTHEFUNCTIONOFEACHPARTANDMAKEADIVISIONOFDESIGNEVENTUALLY,FIRDIGITALFILTERSWILLADOPTTHEVHDLHARDWAREPROGRAMMINGLANGUAGE3TOADOPTTHECOMPREHENSIVEPLDDEVELOPMENTSOFTWAREQUARTUSIIOFTHEALTERACOMPANYINTHEDESIGNOFTHESOFTWARESIMULATIONANDWEWILLUSEOFTHEMATLABTOOLSFORTHESIMULATION。INTHESIMULATIONPROCESS,CONTRASTOURFILTERTECHNOLOGYINDEXWHETHERYOUHAVEALLTHESTANDARDS,ANDFILTERINGWHETHERTHERESULTISIDEALKEYWORDSDIGITALFILTER,MATLAB,PROGRAMMABLELOGICDEVICES,MODULARALGORITHM目录1绪论111本课题研究意义112国内外研究现状分析113研究思路114相关概念说明12FIR数字滤波器的设计方法421理论部分4211引言4212FIR数字滤波器的基础4213数字滤波器的设计原理6214FIR数字滤波器的理论计算方式与参数转换思想7215MATLAB直接FDATOOL设计方式解析13216FDATOOL设计模板及设计结果图1622程序分析部分16221FPGA可编程逻辑元件介绍16222QUARTUS及VERILOGHDL介绍18223实际滤波器程序设计(11阶FIR数字滤波器)19224VERILOGHDL的实现203滤波器仿真滤波2831设置混合信号2832设置仿真参数3133仿真总结334总结与展望3341设计成果总结3342设计心得33参考文献35致谢361绪论11本课题研究意义在现代通信信号处理领域中,随着各种精密计算和快速计算的发展对信号处理的实时性、快速性的要求越来越高。以往的模拟滤波器无法克服电压漂移、温度漂移和噪声等问题,从而带来了许多误差和不稳定因素。而数字滤波器具有稳定性高、精度高、设计灵活、实现方便等突出优点。FPGA元器件在高速并行处理和数据传输中有独特优势,FPGA正在前端信号处理中越来越多地代替ASIC和DSP。我们需要的就是这种设计周期短,功能密度高,重组时间短的元器件。本文在FPGA元器件的基础上,实现现代FIR数字滤波器功能。并且研究多种快速的FIR数字滤波器的理论设计思想和程序设计方法。12国内外研究现状分析1985年XILINX公司生产出了第一块FPGA元器件,由于它有着集成度高、方便易用、开发和上市周期短的绝对优势,使得FPGA器件在数字设计和电子生产中得到迅速普及和应用,发展潜力十分巨大。现在FPGA已经发展到可以利用硬件乘加器、片内储存器、逻辑单元、流水处理技术等特有的硬件结构,高速完成FFT、FIR、复数乘加、卷积、三角函数以及矩阵运算等数字信号处理。这样可以完成信号处理的主要技术,如中频采样、参数估计、自适应滤波、脉冲压缩、自适应波束形成和旁瓣对消等。13研究思路通过对目前数字滤波器的几种实现方法的简单分析,本文认为基于FPGA的数字滤波器具有许多优点,本文考虑到信息技术的发展对于数字滤波器的要求越来越高,而目前FIR数字滤波器的性能还不完善,于是选择了基于FPGA的数字滤波器作为主要研究内容,通常滤波器在进行数据处理时用到了卷积运算,在设计中的解决这些乘法运算的思路是将它们转换成加减法,这是目前解决乘法运算的主流思想。设计初期在MATLAB下对滤波器原理进行证明包括(零极点图、时域和频域分析图等),分析FIR数字滤波器的多种理论设计思想和窗函数选择方法,在设计后期对FIR数字滤波器的小数乘法问题进行单独论证。然后对分析出来的问题进行论证和解决,最后在QUARTUS中进行仿真验证。14相关概念说明数字滤波器(DIGITALFILTER是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。可认为是一个离散时间系统按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置FIR(FINITEIMPULSERESPONSE)由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。当我们处理有限的离散数据时,线形系统的响应(包括对冲击的响应)也是有限的。若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。通过这种方式确定的滤波器称为有限冲击响应(FIR滤波器。图11总体设计流程图设计定位理论部分程序分析部分选题资料准备滤波器基础研究滤波器设计方法研究软硬件介绍分析程序设计明确目标奠基指导指导基础选择规划仿真错误修正及优化总结设计成功2FIR数字滤波器的设计方法21理论部分211引言数字滤波器的功能一般是用来变换时域或者频域中某些要求信号的属性,滤除信号中某一部分频率分量。经过数字滤波器的信号是让其频谱与数字滤波器的频率响应相乘从而得出新的结果。经过一个线性卷积过程,从时域上输入信号与滤波器的单位冲击响应作一个卷积和。下面是卷积定义式(1)KKKFNXNFXNFXYLTI数字滤波器在一般情况下分为有限脉冲响应(FINITEIMPULSERESPONSE)和无限脉冲响应INFINITEIMPULSERESPONSE,FIR数字滤波器的设计方法和IIR滤波器的设计方法有很大的差别。因为其设计方向是选择有限长度的HN,使频率响应函数HE满足指标。数字滤波器正在用直接的电子J计算机规范和算法进行分析的方式来逐渐代替传统的模拟滤波器的RLC元器件和放大电路。212FIR数字滤波器的基础首先介绍FIR数字滤波器基本原理,在如下表格中对FIR和IIR数字滤波器进行了全面的比较表21两种滤波器特点比较分析FIR数字滤波器IIR数字滤波器设计方法在一般的情况下,FIR数字滤波器没有设计公式。它的设计需要借助计算机程序完成可以利用AF的设计成果,可简单、有效地完成设计阶数高低稳定性在稳定性方面(稳定),极点全部在原点存在一定的稳定性问题,需要注意结构非递归系统递归系统运算误差一般情况下不存在反馈,运算的误差比较小存在反馈,由于运算中的特殊运算方法会产生极限环通常情况下一般数字滤波器的N阶FIR数字滤波器基于输入信号XN的表达式为(2)10NIIXHY这个公式给我们了一个非常明了的直接型网络结构,该结构表现出N个乘法器,每次采样YN的内容是N次乘法和N1次加法,然后做乘累加之和。如图21所示图21FIR滤波器直接型网络结构从DSP的介绍中,第一类线性相位对HN的约束条件(3)JGNJNNJEHEHEH104SINCOSICO10JJHNNG由公式(3),(4)我们可以推出(5)1010CSISINCNNNH移相并利用三角公式化简得到610SINNH从数字信号处理学科中知道函数关于求和区间的中心(N1)/2奇对称,IN于是我们要求和HN满足如下条件其中对应的有(7)1NNHN102NN图22线性相位FIR滤波器结构若HN呈现对称特性,即此具有线性相位的滤波器是FIR数字滤波器。滤波器的基础网络结构可以相互进行转换。在前面本文已经讨论过,FPGA的实现中将对各种方法进行比较,找出最优设计方式。从而达到减少资源占有和提高系统作业速度的目的,更好的体现实时性的数字滤波器优势。213数字滤波器的设计原理在数字信号处理技术的研究中,一般是使用的三种设计方法窗函数法,FDATOOL直接设计法,程序编译法。本文首先使用窗函数和MATLAB软件共同进行设计。随着软件技术的不断发展,MATLAB软件能给设计者带来的数字信号处理工作已经非常的完善和多样了,设计者可以利用MATLAB软件进行数字滤波器的设计和仿真,而且还可以用这款软件进行设计的优化。数字滤波器的一般设计步骤如下1指标的确定做任何工程或者设计,设计者都必须要有一个期望的指标用来限制设计范围。在很多的实际应用中,设计者常常都是使用数字滤波器做选频的工作。因此,指标的形式一半在频域中给出相位响应和幅度。相位响应的指标形式,一半是指系统在通频带中药有线性相位。幅度指标绝对指标,它给出对幅度响应函数的要求,一般用于FIR滤波器的设计。相对指标,以分贝值的形式给出具体限制。2逼近目标设计者做高频的时候大概都有一个模式,就是首先得到技术指标,然后利用我们的技术和工具让我们的产品去逼近这个指标。同理我们首先建立以个目标的数字滤波器模型。一般情况下都是采用理想的数字滤波器模型,然后去逼近我们想要的目标数字滤波器参数。3计算机仿真和性能优化分析在工作中我们发现通过(1)、(2)之后本文会得到以差分、系统函数或者冲击响应这三种方式描述的滤波器。这个时候设计者可以利用计算进行仿真,在系统中分析技术指标和滤波结果是否是希望得到的结果。图23各种理想数字滤波器的幅度频率响应214FIR数字滤波器的理论计算方式与参数转换思想在理论上掌握了FIR数字滤波器的基本原理之后,本文需要对设计思想进行一个多方位的论证和尝试。首先设计者设计滤波器要有一个硬性的指标,这个指标可以是直接给出最基本的数据,也有多重表现形式。于是我例举两种特殊的指标形式然后加以解决设计。然后我们分别用2种方式来设计不同指标的滤波器。接下来我首先用程序的方式来实现滤波器1逼近法转换与思想使用REMEZ函数设计FIR低通滤波器设计滤波器,使逼近低通滤波特性|。EHJD|EJD016/54要求通带波纹,阻带衰减,并用最小阶数实现。BP3BS0绘出设计的FIR数字滤波幅频特性曲线,检验设计指标。这个指标我们可以以如下计算方法来得出详细指标从给出的低通滤波特性|。我们可以看出设计参数F1/4,5/16,M1,0EHJDDEV的计算根据公式RP200LOG1021/于是有RP20,/L10V2LOG0DEVAS所以DEV1,DEV2可以被表示出来。2逼近法程序描述与思想有了这几个参数我们现在就可以根据已经设定好的格式来调用函数REMEZORD和REMEZ函数了,于是可得如下程序。CLEARCLOSEALLFC1/4FS5/16输入给定指标RP3AS60FS2FFC,FSM1,0计算REMEZORD函数所需参数F,M,DEVDEV10RP/201/10RP/201,10AS/20N,FO,MO,WREMEZORDF,M,DEV,FS确定REMEZ函数所需参数HNREMEZN,FO,MO,W调用REMEZ函数进行设计HWFFTHN,512求设计出的滤波器频率特性W05112/512PLOTW,20LOG10ABSHWGRID画对数幅频特性图AXIS0,MAXW/2,90,5XLABELW/PIYLABELMAGNITUDEDBLINE0,04,3,3画线检验设计结果LINE1/4,1/4,90,5LINE5/16,5/16,90,5程序结束。3仿真图像与结果用以上的程序我们可以得到在MATLAB中的许多参数和图像,从而进一步分析我们的设计。首先引入程序输出的幅频特性图(如图24)图24在MATLAB中的程序图25程序输出的幅频特性图26IMPULSERESPONSE图27MAGNITUDEANDPHASERESPONSES图28PHASEDELAY图29POLE,ZEROPLOT结论从上面程序运行情况分析,观察程序输出的幅频特性图中横线为3DB,两条竖线分别位于频率/4和5/16。显然,通带指标有富裕,零极点图反应出大部分零极点在圆内,过渡带宽度和阻带最小衰减刚好满足指标要求。4窗函数选择法与规划思想表22窗函数选择指标名称近似过渡带宽最小阻带衰减精确过渡带宽矩形4/M21DB18/M巴特利特8/M25DB61/M汉宁8/M44DB62/M哈明8/M51DB66/M布莱克曼12/M74DB11/M取KAISER窗时用MATLAB中的KAISERORD函数来得到长度M在设计指标中没有直接给出窗函数的,可以利用下面这个表格进行筛选,具体方法如下这个表格给出了近似过渡带宽、精确过渡带宽和最小阻带衰减,我们可以根据自己滤波器的参数来选择我们的窗函数,因为选择不同的窗函数设计出来的滤波器生成的过渡带宽度和阻带最小衰减是不同的。在这里我以一个例子来说明函数的选择方式用窗函数法设计FIR带通滤波器。指标如下高端通带截止频率20LS高端阻带截止频率35P低端阻带截止频率6U低端通带截止频率8S通带最大衰减RP1DB阻带最小衰减RS60DB在这样一个例子中,可以看到它明确的给出了RS60DB来设置窗函数类型和阶次。表格中给出的BLACKMAN窗其滤波器阻带最小衰减是74DB,再利用给出的其他参数计算滤波器阶数。表中显示窗口长度M由过渡带宽度B08065015决定,而BLACKMAN窗设计的滤波器过渡带宽度为12/M,则M12/01580。又因MN1,所以滤波器阶数N79。在了解了怎么选择窗函数和计算滤波器阶数之后,本论文将针对实际FIR数字滤波器进行研究。已经给出了设计参数,下面开始利用MATLAB程序来设计这个滤波器。5窗函数法程序描述与思想程序和对应的解释用窗函数法设计FIR带通滤波器CLEARCLOSEALLWLS02PIWLP035PIWHP065PIBWLPWLS这里是在计算过渡带宽NCEIL12/015计算窗口长度WCWLP/PI6/N,WHP/PI6/N设置理想带通截止频率HNFIR1N1,WC,BLACKMANN设计滤波器参数6理论计算方法总结仿真完成之后,掌握如何去利用已有的指标去设计一个滤波器,总的来说就是四项通过傅里叶逆变换获得理想滤波器的单位脉冲响应HDN。分析给定参数,计算出滤波器的阶数,频率等等相关指标。把已经有的参数用程序函数表达出来,利用已经有的各种内置函数架设起滤波器。参看MATLAB的输出图形和参数是否满足要求。215MATLAB直接FDATOOL设计方式解析FDATOOLFILTERDESIGNCONSTREAL64_TB3900008969942906957,0001248746631882,0007070735236406,0009180571739749,8354434235897E018,001457672567709,001798701306701,0005189936475222,0006300913248271,5136773213647E018,0009200436084654,001113207796169,005739543087552,007065284310647,2116878167777E017,01149210109554,01575671556317,005691148173912,01151784185022,02,01151784185022,005691148173912,01575671556317,01149210109554,2116878167777E017,007065284310647,005739543087552,001113207796169,0009200436084654,5136773213647E018,0006300913248271,0005189936475222,001798701306701,001457672567709,8354434235897E018,0009180571739749,0007070735236406,0001248746631882,00008969942906957这是一个非常典型的例子,可以清晰的看到利用MATLAB提供的FDATOOL设计滤波器的方便与快捷。比较以上几种类型的滤波器参数,在给定的参数要求下,采用椭圆滤波器可以获得最佳的幅频响应特性,具有阶数低,过渡带窄等优点。虽然椭圆滤波器在通带也会产生波动,但考虑到波动处在可接受的范围内,仍然符合设计要求。但由直接型传输函数表达式来实现并不实用。因此如前所说,将其分解为多个二阶传输函数的级联形式。借助MATLAB信号处理工具箱中函TF2SOSTRANSFERFUNCTIONTOSECONDORDERSECTION将传递函数转换为二阶级联形式。对于是数字信号,需要对先前分析计算中分解获得的二阶子系统的滤波器系数进行量化,即用一个固定的字长加以表示。量化过程中由于存在不同程度的量化误差,由此会导致滤波器的频率响应出现偏差,严重时会使滤波器的极点移到单位圆之外,使系统不稳定。为了获得最优的滤波器系数,量化的精度也相当重要。216FDATOOL设计模板及设计结果图这里把上面的滤波器设计参数的总体图给出,如图210图210FIR带通滤波器总体设计参数22程序分析部分根据上述FIR低通数字滤波器的原理与滤波特性,我们在上面的软件实践中已经掌握了设计数字滤波器的方法并且成功的使用MATLAB/SIMULINK进行了设计和仿真。通过以上的过程我们可以导出一定性能的FIR滤波器频率响应与抽头系数,然后用VERILOGHDL语言设计和QUARTUS仿真FIR低通数字滤波器,实现用软件描述硬件的动作及功能,应用软件来实现数字滤波器的功能和时序仿真。221FPGA可编程逻辑元件介绍EDA是ELECTRONICDESIGNAUTOMATION的缩写,意为电子设计自动化,即利用计算机自动完成电子系统的设计。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。它与电子技术、微电子技术的发展密切相关,吸收了计算机领域的大多数最新研究成果,以高性能的计算机作为工作工具,在EDA软件平台土,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。可编程逻辑器PLDPROGRAMMABLELOGICDEVICES是ASICAPPLICATIONSPECIFICINTEGRATEDCIRCUITS的一个重要分支。ASIC按制造方法又可分为全定制FULLCUSTOM产品、半定制SEMICUSTOM产品和可编程逻辑器件PLD。前两种ASIC的设计和制造都离不开器件生产厂家,用户主动性较差。随着微电子技术的发展,设计师们更愿意自己设计专用集成电路芯片,并尽可能缩短设计周期,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,在使用中也能比较方便的对设计进行修改。可编程逻辑器件就是为满足用户的这一需求应运而生的。使用FPGA器件设计数字电路,不仅可以简化设计过程,而且可以降低整个系统的体积和成本,增加系统的可靠性。它们无需花费传统意义下制造集成电路所需大量时间和精力,避免了投资风险,成为电子器件行业中发展最快的一族。使用FPGA器件设计数字系统电路的主要优点如下1设计灵活使用FPGA器件,可不受标准系列器件在逻辑功能上的限制。而且修改逻辑可在系统设计和使用过程的任一阶段中进行,并且只须通过对所用的FPGA器件进行重新编程即可完成,给系统设计提供了很大的灵活性。2增大功能密集度功能密集度是指在给定的空间能集成的逻辑功能数量。可编程逻辑芯片内的组件门数高,一片FPGA可代替几片、几十片乃至几百片中小规模的数字集成电路芯片。用FPGA器件实现数字系统时用的芯片数量少,从而减少芯片的使用数目,减少印刷线路板面积和印刷线路板数目,最终导致系统规模的全面缩减。3提高可靠性减少芯片和印刷板数目,不仅能缩小系统规模,而且它还极大的提高了系统的可靠性。具有较高集成度的系统比用许多低集成度的标准组件设计的相同系统具有高得多的可靠性。使用FPGA器件减少了实现系统所需要的芯片数目,在印刷线路板上的引线以及焊点数量也随之减少,所以系统的可靠性得以提高。4缩短设计周期基于FPGA器件的可编程性和灵活性,用它来设计一个系统所需时间比传统方法大为缩短。FPGA器件集成度高,使用时印刷线路板电路布局布线简单。同时,在样机设计成功后,由于开发工具先进,自动化程度高,对其进行逻辑修改也十分简便迅速。因此,使用FPGA器件可大大缩短系统的设计周期,加快产品投放市场的速度,提高产品的竞争能力。5工作速度快FPGA/CPLD器件的工作速度快,一般可以达到几百兆赫兹,远远大于DPS器件。同时,使用FPGA器件后实现系统所需要的电路级数又少,因而整个系统的工作速度会得到提高。6增加系统的保密性能很多FPGA器件都具有加密功能,在系统中广泛的使用FPGA器件可以有效防止产品被他人非法仿制。7降低成本使用FPGA器件实现数字系统设计时,如果仅从器件本身的价格考虑,有时还看不出来它的优势,但是影响系统成本的因素是多方面的,综合考虑,使用FPGA的成本优越性是很明显的。首先,使用FPGA器件修改设计方便,设计周期缩短,使系统的研制开发费用降低其次,FPGA器件可使印刷线路板面积和需要的插件减少,从而使系统的制造费用降低再次,使用FPGA器件能使系统的可靠性提高,维修工作量减少,进而使系统的维修服务费用降低。总之,使用FPGA器件进行系统设计能节约成本。222QUARTUS及VERILOGHDL介绍QUARTUSII属于ALTERA公司的综合性PLD开发软件,支持原理图、VHDL、VERILOGHDL以及AHDL(ALTERAHARDWAREDESCRIPTIONLANGUAGE)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QUARTUSII可以在XP、LINUX以及UNIX上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。QUARTUSII支持ALTERA的IP核,包含了LPM/MEGAFUNCTION宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,QUARTUSII通过和DSPBUILDER工具与MATLAB/SIMULINK相结合,可以方便地实现各种DSP应用系统;支持ALTERA的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。MAXPLUSII作为ALTERA的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前ALTERA已经停止了对MAXPLUSII的更新支持,QUARTUSII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。ALTERA在QUARTUSII中包含了许多诸如SIGNALTAPII、CHIPEDITOR和RTLVIEWER的设计辅助工具,集成了SOPC和HARDCOPY设计流程,并且继承了MAXPLUSII友好的图形界面及简便的使用方法。ALTERAQUARTUSII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。VERILOGHDL是目前应用最为广泛的硬件描述语言。VERILOGHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。该语言适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。VERILOGHDL进行设计最大的优点是其工艺无关性。这使得我们在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。VERILOGHDL是一种硬件描述语言HARDWAREDESCRIPTIONLANGUAGE,为了制作数字电路而用来描述ASIC和FPGA的设计之用。VERILOGHDL的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较容易学习。223实际滤波器程序设计(11阶FIR数字滤波器)FPGA实现FIR滤波器,首先进行指标选定和MATLAB软件参数仿真,然后执行基于VERILOG方法的硬件实现中用移位方法代替了乘法运算。表23设计指标要求高低通截止频率阶数据宽度设计指标低通0851对应FS/2118BITS根据以上指标,利用MATLAB中的FIR滤波器系数设计命令FIR110,085所设计滤波器的系数。表24MATLAB中导出的滤波器系数MATLAB软件仿真的滤波器的抽头系数及其幅度频响特性如下图211所示。图21111阶FIR滤波器的抽头系数和幅频特性曲线可见抽头系数是奇对称的,即,。FIR滤波器采用对称结构,每个抽头的输出分别乘以相应加权的二进制值,再将结果相加。同时,利用滤波器系数的及对称的特性,对输入信号进行如下等效,。224VERILOGHDL的实现这个方法的实现中,使用了移位代替乘法运算来实现滤波器乘加的方法。由于滤波器系数都是小数,所以我们先左移7位(即放大128倍),再用相应的移位来近似这些系数,最后经过乘加运算得到结果,对这个结果再右移7位(即缩小128倍)即可得出正确的结果。各个系数的移位情况如下其中2表示左移1位,1表示不移位,05表示右移1位,其他依次类推128H012800360460805003125128H112800127162561050125128H21280041753376410250625003125128H312800878112384841025128H4128013181687041610125128H51280850010880012816402500625这样,我们就可以把这个11阶FIR数字滤波器的输出用一下的算式得到表25VERILOG方法设计FIR的实验数据图212系数放大后求SUM计算得到结果后再将SUM右移7位,即可得到正确结果。程序的功能仿真结果如下图212所示。图213功能仿真由上图212可以看出,TAP0到TAP10是输入X的依次延时1个时钟周期,结果SUM输出相对于输入X延迟了2个时钟周期,Y输出相对于SUM输出延迟了1个时钟周期,这和程序设计相符合。同时,对比程序运行结果和MATLAB的计算结果(如章节开头表格所示),可知,二者结果是一致的,其中个别数据的小误差是由于移位取代小数乘法运算带来的误差。因此,程序设计是正确的。于是,根据以上所有思想我们可以得出以下11阶FIR数字滤波器的VERILOG程序如下/COMPANY/ENGINEER/CREATEDATE17013811/03/06/DESIGNNAME/MODULENAMEYCJ/PROJECTNAME/TARGETDEVICE/TOOLVERSIONS/DESCRIPTION用VERILOG编写的FIR滤波器程序/DEPENDENCIES/REVISION/REVISION001FILECREATED/ADDITIONALCOMMENTS/MODULEFIRV2CLK,X,YINPUTCLKINPUT70XOUTPUT250YREG260YREG70X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16WIRE210ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,ACC7,ACC8,ACC9,ACC10,ACC11,ACC12,ACC13,ACC14,ACC15,ACC16,ACC17REG80SXIN032REG50I,KREG80XX160PARAMETERC021,C18,C222,C334,C46,C534,C631,C732,C887,C932,C10154,C11321,C12217,C13321,C141185,C151996,C162328ALWAYSPOSEDGECLKBEGINXX160KK1SXINK3T为有符号数,所以是带符号右移,于是T3T7,T7,T7,T73之所以这么些就是为了节省资源,提高频率以405为例4的原码10000100B补码11111100B4101111110而符号位不能变应用原来的位代替11111110B的原码10000010B22对程序设计中的问题分析与总结在最开始的设计中,本文初始计划使用乘法单元。但是在程序设计的过程中我们遇见了实数乘法的问题,程序的运行遇到了困难,在与指导老师的研究中我们发现问题出在实数乘法的问题上。在VERILOG的运算中实数乘法需要特殊的小数乘法器来单元来实现。在原来的38阶滤波器的设计中出现了这样子的问题。我们使用过这样的程序REG630FILTER_IN_FORCE03344REG630FILTER_OUT_EXPECTED03344/FUNCTIONDEFINITIONSFUNCTIONREALABS_REALINPUTREALARGBEGINABS_REALARG0ARGARGENDENDFUNCTION/FUNCTIONABS_REAL/COMPONENTINSTANCESFILTERU_FILTERCLKCLK,CLK_ENABLECLK_ENABLE,RESETRESET,FILTER_INFILTER_IN,FILTER_OUTFILTER_OUTINITIALBEGIN/CONSTANTSFILTER_IN_FORCE0REALTOBITS10000000000000000E000FILTER_IN_FORCE1REALTOBITS00000000000000000E000FILTER_IN_FORCE2REALTOBITS00000000000000000E000FILTER_IN_FORCE3REALTOBITS00000000000000000E000系统无法实现REAL值得计算,于是这里需要我们用小数乘法器进行特殊单元的方案解决。于是我们要进行小数乘法器的设计。3小数乘法器介绍及在设计中的作用随着FPGA的发展以及相应EDA软件工具的成熟,FPGA在高速数字信号处理领域得到了越来越广泛的应用。而乘法,尤其是浮点乘法运算是数值计算和数据分析中最常用的运算之一。目前,多数FPGA上可以实现整数和标准逻辑矢量的乘法,但不支持浮点乘法运算,因此使得FPGA在数值计算、数据分析和信号处理等方面受到了限制。本文采用适合于FPGA实现的自定义26位浮点数据格式,利用改进的基4BOOTH编码运算方式,以及CSA和42压缩器综合的WALLACE树形结构,减少了部分积,使系统具有高速度,低功耗的特点,并且结构规则。在尾数的舍入中采用了基于预测和选择的舍入方法,进一步提高了运算的速度,优化了乘法器的性能。4小数乘法器程序设计与仿真MODULEFIX_MULTCLK,RST_N,IN_A,IN_B,X1,X2,X3,X4,X5,X6,X7,Y_OUTINPUTCLK,RST_N/时钟和复位信号INPUT310IN_A,IN_B/输入的被乘数和乘数OUTPUT310Y_OUT/输出的乘积/寄存器类型变量为了能更清楚的了解全处理过程,特地设计为输出的,不然仿真可能会被综合掉/OUTPUT150X1,X2,X3,X4OUTPUT00X5OUTPUT290X6OUTPUT310X7/REG310Y_OUTREG150X1,X2,X3,X4REG00X5REG290X6REG310X7ALWAYSPOSEDGECLKBEGINIFRST_N/复位时,全部寄存器变量清零BEGINX116B0X216B0X316B0X416B0X51B0X630B0X732B0Y_OUT32B0ENDELSE/BEGINX1IN_A3116/截取16位被乘数,X2IN_B3116/截取16位乘数X3X1150X1X115,X11401B1/据最高位判断是否为负数,/若负数则把补码转成原码X4X2150X2X215,X21401B1X5X315X415/两数符号位相异或,得到乘积的符号位X6X3140X4140/两数的数据位相乘X7X5,X6,1B0/乘积由1位符号位和30位数据位及1位无关组成;/因为是小数,往低位生长,所以无关位放置最低位Y_OUTX7310X7X731,X73001B1ENDENDENDMODULE小数乘法器的仿真结果如下图214所示图214小数乘法器仿真结果全过程可以看成把32位的小数截取高16位左移16位,变为16位整数相乘得到32位整数乘积后,右移32位调整无关位的位置得到32位小数,这样就可以完成早期程序中的小数乘法功能,然后来进行设计中的FPGA数字滤波器设计的优化。在先前的设计中我们使用MATLAB进行综合仿真设计,并且借助FDATOOL设计出滤波器。在QUARTUS2的仿真中我们发现程序无法正常的完成运行,究其原因在于小数乘法器的问题。在原来的滤波器中需要对每一个参数进行单独设置,这样会使得程序占有巨量的篇幅大大的增加了工作量和容错度。于是,我们需求另外一种方法来解决这个问题,后来我们研究了移位算法。利用移位来把小数运算转换成整数运算,这样我们的11阶滤波器程序大大减少篇幅同时也增加了程序的可读程度和稳定程度。3滤波器仿真滤波31设置混合信号在MATLAB中进行我们设计过的FIR数字滤波器的仿真,首先我们启动MATLAB中的SIMULINK,启动方式是直接在文本窗口中输入命令SIMULINK,或者点击MATLAB中的快速启动按钮。图215SIMULINK工具窗口图本论文模拟一个混合信号正弦波信号他包涵了10,30,60(HZ)的信号,在MATLAB模拟出来是这样一个信号FS200T1200/FSX1SIN2PIT10X2SIN2PIT30X3SIN2PIT60XX1X2X3PLOTT,XTITLE杨成杰本科毕业设计混合正弦波信号XT滤波前GRIDMODULEEND/整个模拟滤波信号结束/使用软件仿真出待滤波信号混合信号设定之后利用MATLAB工具进行模型仿真。图216MATLAB中模拟的混合信号然后在程序中设置好仿真模型如下图(217)图217SIMULINK模型仿真32设置仿真参数设置好仿真参数,对各个信号进行单独修改和设置如下图(218)图218SIN2PI30T参数模块在主设置中,振幅AMPLITUDE设置为1,频率(FREQUENCY)设置为30HZ,输出混合为实常量,样本时间为1/1000,采样帧数设置为1帧,以下不同频率信号同理设置图219SIN2PI10T参数模块图220混合参数模块图221仿真设计模块最后来设置仿真参数在MATLAB模型窗口打开菜单SIMULATIONCONFIGURATIONPARAMETERS找到【SIMULATIONCONFIGURATIONPARAMETERS】对话框,设置仿真参数如下CONFIGURATIONPARAMETERS设置完成之后运行可以直接点击模块窗口中的,开始进行仿真。输出结果如图222所示图222滤波前信号波形图图223滤波后信号波形图33仿真总结由上面的仿真结果输出图可以看出,所设计的数字带通滤波器使混合输入信号中频率为30HZ的正弦波信号通过,明显的出现了带中信号。而将频率为10HZ和60HZ的正弦波信号大大衰减,从而达到滤波效果。用MATLABSIMULINK仿真数字滤波器设计更加直观,操作便捷,易于分析。4总结与展望41设计成果总结在理论积累和重复实践的基础上,多种滤波器设计思路已经相当成熟,设计出来的滤波器通过仿真概率高,仿真结果符合设计要求。FIR数字滤波器的设计方式选择更具有科学性和时效性,可以根据自己熟悉的软件,需要的FIR数字滤波器的精度,FIR数字滤波器的类型和滤波器阶数来灵活选择设计思路和方法。42设计心得本次毕业设计主要包含了信号与系统,数字信号处理和FPGA方面的相关知识。设计心得总结如下设计路径优化确定好所需要设计的FIR数字滤波器滤波器后,首先对其进行性能需求分析,明确FIR数字滤波器系统应该达到的各种性能指标,其次,拟定多种滤波器类型,对这些方案采用MATLAB进行仿真,在这个过程中我们有许多的窗函数选择和设计方法选择,进行综合分析和比较,选择出最佳的滤波器类型作为本设计方案,然后依据其性能指标编写MATLAB程序,确定二阶节系数。或者直接进行VERILOG语言的编写。系统整体思维细节决定整体,整体展现细节。我们的设计必须有系统的设计思维,把每一个细节都融入到整个系统中考虑,去发现整个FIR数字滤波器系统的主观性、完整性、稳定性和仿真功能的实现,才能让各个细节完美缝合,才能快速的完成性能优越的硬件设计。多做设计尝试和总结我们在FIR数字滤波器的设计中遇到过很多困难甚至是障碍。但是我们必须坚持自己的设计思路,去寻找其他的解决方法比如本论文中所提到的小数乘法器。这个本来是设计过程无法逾越的障碍,最后在老师的帮助下一样做出的小数乘法器。并且我们要善于积累和总结让障碍成为我们的另一种知识沉淀,这样我们才能融会贯通,才能更善于发现问题和解决问题。信心无论在什么时候,科学的道路上永远都是未知。我们应该一直坚持自己的原则,对学术不抛弃,对自己不放弃。这样才能在这条充满荆棘的路上走的更远参考文献1邓重一,滤波技术的发展现状J中国仪器仪表,2004572赵雅兴,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论