毕业设计论文基于VHDL的FIR滤波器设计

上传人:痛*** 文档编号:131131060 上传时间:2022-08-05 格式:DOC 页数:37 大小:704.50KB
收藏 版权申诉 举报 下载
毕业设计论文基于VHDL的FIR滤波器设计_第1页
第1页 / 共37页
毕业设计论文基于VHDL的FIR滤波器设计_第2页
第2页 / 共37页
毕业设计论文基于VHDL的FIR滤波器设计_第3页
第3页 / 共37页
资源描述:

《毕业设计论文基于VHDL的FIR滤波器设计》由会员分享,可在线阅读,更多相关《毕业设计论文基于VHDL的FIR滤波器设计(37页珍藏版)》请在装配图网上搜索。

1、 本科毕业设计基于VHDL的FIR滤波器设计学院名称 专业名称电子信息工程论文提交日期2012年5月 14 日 论文答辩日期2012年5月 19 日摘 要常用的实时数字信号处理的器件有可编程的数字信号处理(DSP)芯片(如AD系列、TI系列)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。有限长冲击响应(FIR)滤波器,由于FIR系统只有零点、系统稳定,便于实现FFT(快速傅里叶变换)算法、运算速度快、线性相位的特性和设计更为灵活等突出优点而在工程实际中获得广泛应用,属于数字信号处理的基本模块之一。本论文对基于FPGA的FIR数字滤波器实现进行了研究,所做的主要工作如下:1介绍了F

2、IR数字滤波器的基本理论和FPGA的基本概况,以及FPGA设计流程、设计指导原则和常用的设计指导思想与技巧。2以FIR数字滤波器的基本理论为依据,使用分布式算法为滤波器的硬件实现算法,并对其进行了详细的讨论。3设计出一个16阶低通线性相位FIR滤波器实例。设计使用VHDL语言通过Quartus II软件进行仿真。关键词: FIR滤波器 FPGA Quartus II Matlab VHDLThe Design of FIR Filter base on VHDL (College of Engineering, South China Agricultural University,Guang

3、zhou 510642, China)Abstract: Common real-time digital signal processing devices have programmable digital signal processing (DSP) chip (such as AD series, TI series), application-specific integrated circuit (ASIC), field programmable gates array (FPGA), etc. Limited long shock response (FIR filter,

4、because FIR system only zero, the system is stable, easy to realize FFT (fast Fourier transform) algorithm, quick speed, linear phase characteristic and design more flexible such prominent advantages and in engineering practice being widely applied digital signal processing, belong to one of the bas

5、ic modules. This paper based on FPGA realizing the FIR digital filters is studied, the main work done as follows:1. Introduced the basic theory of FIR digital filters with FPGA, and the basic situation of FPGA design process, the design guiding principle and common design guiding ideology and skill.

6、2. With the basic theory of FIR digital filters, by using distributed algorithm based on the hardware implementation algorithm for filter, and its are discussed in detail.3. Design a 17 order low-pass linear phase FIR filter examples. Design uses VHDL language through simulation Quartus II software,

7、 and the simulation results and Matlab simulation results are compared and analyzed.Key words:FIR filter FPGA Quartus II Distributed Arithmetic Matlab VHDL目 录1前言1课题背景及意义1课题主要研究内容2FPGA介绍2工作平台介绍31.4.1 MATLAB31.4.2 Quartus II32FIR滤波器原理4FIR滤波器概念42.2 FIR滤波器特点42.3 FIR滤波器工作原理43方案分析及计算63.1 FIR滤波器方案设计63.1.1

8、分布式73.1.2 直接型73.2 FIR滤波器结构73.3 基于Matlab的FIR滤波器系数计算84基于VHDL的FIR滤波器的设计及仿真实现124.1 寄存器模块124.2 加法器模块134.3 减法器模块154.4 乘法器模块185仿真196结论20参 考 文 献22附录23附录FIR原理图23附录代码24致 谢31本科生毕业设计成绩评定表1前言课题背景及意义数字滤波器一词出现在60年代中期。由于电子计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现,也可用大规模集成数字硬件实时实现。数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。数字滤波器的功能是对输入离

9、散信号的数字代码进行运算处理,以达到改变信号频谱的目的。数字滤波器是一个离散系统,该系统能对输入的离散信号进行处理,从而获取所需的有用信息。在数字信号处理中,FIR数字滤波器是最常用的单元之一。它用于将输入信号xn的频率特性进行特定的修改,转换成另外的输出序列yn。与IIR滤波器相比较,在设计和实现上FIR滤波器具有如下优越性:1)相位响应可为严格的线性,因此它不存在延迟失真,只有固定的时间延迟。2)、由于不存在稳定性问题,所以设计相对简单。3)、只包含实数算法,不涉及复数算法,不需要递推运算。 另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有分段常数特性的滤波器,如低通、高通、

10、带通和带阻等,往往脱离不了模拟滤波器的格局。而FIR滤波器则要灵活的多,尤其是他易于适应某些特殊应用,如构成数字微分器或希尔伯特变换器等,因而有更大的适应性和广阔的应用领域。传统的FIR数字滤波器多采用诸如TMS320CXX系列的专用DSP芯片,根据输入采样的移位相乘累加编写软件,利用软硬件的相互结合完成滤波器的设计。但DSP芯片是基于哈佛体系结构的,它的顺序处理方式限制了数据的处理速度和吞吐量。而FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。由于在性能、成本、灵活性和功耗

11、等方面的优势,基于FPGA的数字信号处理器已广泛应用于图像、视频和无线通信领域。采用分布式算法的FPGA 滤波器,其突出的优点是:运算速度不再和滤波器的阶数正相关,而是与采样数据的宽度相关,特别适合于高阶高速FIR滤波器的设计,在提高系统运行速度和节省硬件资源方面具有很大的优势。而且,通过改变阶数和查找表中的系数,还可以将此设计灵活地运用于实现高通、低通和带阻滤波器,可移植性较好。因此,这种方法在高速数字信号处理中将有很好的应用前景。课题主要研究内容本课题的通过对FIR滤波器的实现结构比较,选取合适的FIR滤波器设计方案,用MATLAB进行滤波器的系数计算并基于VHDL语言设计实现滤波器功能,

12、通过Quartus II对其仿真。FPGA介绍 目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可

13、以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件)。早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万

14、个逻辑单元之间,而FPGA通常是在几万到几百万。 CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。 CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新

15、配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。(吴继华,王诚,2005;潘松,黄继业,2010)工作平台介绍 MATLABMATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸

16、多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。1.4.2 Quartus IIQuartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP

17、、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系

18、统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编

19、程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。(潘松,黄继业,2010)2FIR滤波器原理FIR滤波器概念FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。2.2 FIR滤波器特点有限冲激响应(FIR)数字滤波器和无限冲激响应(IIR)数字滤波器广泛应用于数字信号处理系统中。IIR数字滤波器方便简单,但它

20、相位的非线性,要求采用全通网络进行相位校正,且稳定性难以保障。FIR滤波器具有很好的线性相位特性,使得它越来越受到广泛的重视。有限冲击响应(FIR)滤波器的特点:(1)既具有严格的线性相位,又具有任意的幅度;(2)FIR滤波器的单位抽样响应是有限长的,因而滤波器性能稳定;(3)只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列,因而能用因果系统来实现;(4)FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率。(5)FIR也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。(6)FIR滤波器比

21、较大的缺点就是阶次相对于IIR滤波器来说要大很多。 FIR滤波器工作原理有限长脉冲响应(FIR)滤波器的系统函数只有零点,除原点外,没有极点,因而FIR滤波器总是稳定的。如果他的单位脉冲响应是非因果的,总能够方便的通过适当的移位得到因果的单位脉冲响应,所以FIR滤波器不存在稳定性和是否可实现的问题。它的另一个突出的优点是在满足一定的对称条件时,可以实现严格的线性相位。由于线性相位滤波器不会改变输入信号的形状,而只是在时域上使信号延时,因此线性相位特性在工程实际中具有非常重要的意义,如在数据通信、图像处理等应用领域,往往要求信号在传输和处理过程中不能有明显的相位失真,因而线性相位FIR滤波器得到

22、了广泛的应用。长度为M的因果有限冲激响应滤波器由传输函数H(z)描述: (1)它是次数为M-1的z-1的一个多项式。在时域中上述有限冲激响应输入输出关系为: (2)其中y(n)和x(n)分别是输出和输入序列。有限冲激响应滤波器的一种直接型实现,可由式(2)生成,M=5的情况如图1所示。其转置,如图2所示,是第二个直接型结构。通常一个长度为M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M-1)个双输入加法器来实现。图1 直接型有限冲激响应滤波器结构图2 图1结构转置后的直接型有限冲激响应滤波器结构长度为M的线性相位有限冲激响应滤波器由对称的冲激响应h(n)=h(M-1-n)或反对称

23、的冲激响应h(n)=-h(M-1-n)描述。利用线性相位有限冲激响应滤波器的对称(或反对称)性质,可以将传输函数的直接型实现所需的乘法器总量减少一半。例如,图3显示了一个具有对称冲击响应的、长度为7的有限冲激响应传输函数的实现。图3 线性相位有限冲激响应结构 3方案分析及计算3.1 FIR滤波器方案设计 随着数字技术日益广泛的应用,以现场可编程门阵列(FPGA)为代表的ASIC器件得到了迅速普及和发展,器件集成度和速度都在高速增长。FPGA既具有门阵列的高逻辑密度和高可靠性,又具有可编码逻辑器件的用户可编程特性,可以减少系统设计和维护的风险,降低产品成本,缩短设计周期。.1 分布式分布式算法是

24、一种以实现乘加运算为目的的运算方法。它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同。简单地说,分布式算法在完成乘加功能时是通过将各输入数据每一对应位产生的部分积预先进相加形成相应部分积,然后在对各部门积进行累加形成最终结果,而传统算法是等到所有乘积产生之后再进行相加来完成乘加运算的。与传统算法相比,分布式算法可极大地减少硬件电路规模,很容易实现流水线处理,提高电路的执行速度。.2 直接型有限冲激响应滤波器的一种直接型实现,如图4所示。通常一个长度为M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M-1)个双输入加法器来实现。图4 最后结合自己本身的情况和方案的设计难

25、易程度综合考虑,决定选择直接型结构完成本次的毕业设计。3.2 FIR滤波器结构FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真。而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。3.3 基于Matlab的FIR滤波器系数计算在matlab命令编辑窗口输入Fdatool指令,敲击回车可以打开Filter Design & Analysis Tool窗口(如图5所示),

26、在该工具的帮助下,我们可以完成f.i.r.滤波器系数的计算工作。图5 Filter Design & Analysis Tool窗口Fdatool界面总共分两大部分,一部分是design filter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。design filter部分主要分为:Response Type(响应类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。本次设计在该选项中选择Lowpass选项。Design Method(设计方法)选项,

27、包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(椭圆滤波器)法等和FIR滤波器的Equiripple法、Least-squares(最小乘方)法、Window(窗函数)法等多种方法。结合本次设计要求,选择FIR滤波器的窗函数法进行设计。选定窗函数法后,会在右侧出现Options区域,进行窗函数法相关参量的设置,根据设计要求选择Kaiser窗并设置Beta为:。Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify order(指定阶

28、数)和Minimum order(最小阶数)。在Specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),如果选择Minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。本次设计为16阶滤波器,所以选定Specify order并填入15。Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Response Type选项和Design Metho选项决定。我们要求的 Lowpass(低通)滤波器只需要定义Fs、Fc。采用窗函数设计滤波器时由于过渡带

29、是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。Magnitude Specifications选项,可以定义幅值衰减的情况。采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。本设计中的参数设定结果如图6所示。图6 滤波器参数设定结果参数设定完毕,单击工具窗口下方的Design Filter按钮,开始进行相关参数计算。在计算结果中我们可以看到该滤波器的一些相关曲线,如幅频响应(如图7)、相频响应(如图8)、冲激响应(如图9)等以及具体的系数值(如图11)。图7 幅频响应图8 相频响应图9 冲激响应图10 所设计滤波器冲激系数计算的结果可通过F

30、ile下拉菜单中的Export命令取出,点击Export打开Export对话框(如图11),点击OK按钮可将滤波器系数数据存放到当前工作空间,并以Num命名。图11 冲激系数输出对话框保存并关闭滤波器设计分析工具回到matlab主窗口,在命令编辑区输入Num可得到工具的计算结果(如图12)。图12 输出在matlab的冲激系数对FIR滤波器的系数进行调整,做整数化操作(如图13)。可得到滤波器整数化的系数为-31 -88 -106 -54 70 239 401 499 499 401 239 70 -54 -106 -88 -31图13 整数化后的冲激系数4基于VHDL的FIR滤波器的设计及仿

31、真实现4.1 寄存器模块寄存器用于寄存一组二值代码,只要求它们具有置1、置0的功能即可。在本设计中用D触发器组成寄存器,实现寄存功能。本设计中使用带异步复位rst端的D触发器,当rst=1时,输出信号q=0,当rst=0且上升沿脉冲到达时q=d。程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY ieee;USE ieee.std_logic_1164.all;ARCHITECTURE dff16 OF dff16 ISBEGIN PROCESS (rst,clk) BEGIN IF(rst=1)THEN q0); ELSIF(clkEV

32、ENT AND clk=1)THEN q=d; END IF; END PROCESS;END dff16;仿真结果如图14所示:图14 寄存器仿真结果4.2 加法器模块实现两个有符号数的相加运算。即将输入的两数,在时钟脉冲到来时相加运算,输出结果。在本设计中共有8个两个10位有符号数相加产生一个11位有符号数的加法器、一个18位和19位有符号数相加产生20位有符号数的加法器、一个两个20位有符号数相加产生一个21位有符号数的加法器、一个两个19位有符号数相加产生一个20位有符号位数的加法器、一个20位和21位有符号数相加产生22位有符号数的加法器,以及一个20位和22位有符号数相加产生23位

33、有符号数的加法器电路。其中一个20位和22位有符号数相加产生23位有符号数的加法器电路为最后一级,所以在加法器电路中在引入低位舍去功能只保留最终10位输出,最终保留10位输出采用了直接取输出23位数的高十位的方法,因此在输出中近似等于除掉了213即8192以后的结果。10位有符号数相加产生一个11位有符号数的加法器设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY sum101011 IS PORT(a,b: IN SIGNED(9 DOWNTO 0); clk: IN STD_LOGI

34、C; s:OUT SIGNED(10 DOWNTO 0);END SUM101011;ARCHITECTURE sum101011 OF sum101011 ISBEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN s=(a(9)&a)+(b(9)&b); END IF; END PROCESS;END sum101011;仿真结果如图15所示:图15 两10位相加产生11位加法器仿真结果18位和19位有符号数相加产生20位有符号数的加法器设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.

35、std_logic_arith.all;ENTITY sum7023918 IS PORT(a: IN SIGNED(17 DOWNTO 0); b: IN SIGNED(18 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(19 DOWNTO 0);END sum7023918;ARCHITECTURE sum7023918 OF sum7023918 ISBEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN s0);BEGIN PROCESS(Din1,Din2,clk) BEGIN IF clkeve

36、nt and clk=1 THEN Dout0);BEGIN PROCESS(Din1,Din2,clk) BEGIN IF clkevent and clk=1 THEN Dout=s2-Din1-s1; END IF; END PROCESS;END sub1065417;仿真结果如图18所示:图18 -106和-54减法器的仿真结果4.4 乘法器模块从资源和速度考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幂的和形式。滤波器系数分别为-31、-88、-106、-54、70、239、401、499、499、401、239、70、-54、-106、-88、-31。算法:其中带

37、负号数先乘去负号的整数部分,在后面的求和中做减法运算。编码方式如下:31被编码为25-20、88被编码为26+24+23、106被编码为26+25+23+21、54被编码为26-23-21、70被编码为26+22+21、239被编码为28-24-20、401被编码为29-27+24+20、499被编码为29-23-22-20。 实现输入带符号数据与固定数据两个二进制数的乘法运算。当到达时钟上升沿时,将两数输入,运算并输出结果。乘31电路设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY

38、mult31 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (15 DOWNTO 0);END mult31;ARCHITECTURE mult31 OF mult31 ISSIGNAL s1 : SIGNED (15 DOWNTO 0);SIGNAL s2 : SIGNED (10 DOWNTO 0);SIGNAL s3 : SIGNED (15 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3) BEGIN s1=Din&00000; s2=Din; I

39、F (Din(10)=0) THEN s3=(0&s1(14 downto 0)-(00000&s2(10 DOWNTO 0); ELSE s3=(1&s1(14 downto 0)-(11111&s2(10 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s3) BEGIN IF clkEVENT AND clk=1 THEN Dout=s3; END IF; END PROCESS;END mult31;仿真结果如图19所示:图19 乘31仿真结果5仿真仿真结果如图20所示:我们任意设定输入信号为:Din99,0,0,0,70,0,0,0,9

40、9,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0图20 滤波器仿真结果6结论表1仿真结果验证输出结果yn理论值仿真结果MATLAB卷积值/512经仿真器仿真-3-4 25-5-1343541207172615824y037y124y28y315y424y515y68y724y837y924y108y1115y1224y1315y148y1524y1637y1724由上面仿真波形可以读出结果,经比较,仿真结果与输出信号理论值基本吻合。且波形基本没有毛刺,作品基本达到设计要求。参 考 文 献1程佩青.2007.数字信号处理教程.北京:清华大学

41、出版社. 3233692刘凌,胡永生.2006.数字信号处理的FPGA实现.北京:清华大学出版社.75793刘树堂.2006.数字信号处理一使用MATLAB.西安:西安交通大学出版社.2522554胡广书.2006.数字信号处理算法与实现.北京:清华大学出版社.9710352706吴继华,王诚.2005.Altera FPGACPLD设计(基础篇).北京:人民邮电出版社.9195附录附录FIR原理图附录代码乘88电路设计程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult88 I

42、SPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (17 DOWNTO 0);END mult88;ARCHITECTURE mult88 OF mult88 ISSIGNAL s1 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (14 DOWNTO 0);SIGNAL s3 : SIGNED (13 DOWNTO 0);SIGNAL s4 : SIGNED (17 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3) BEGI

43、N s1=Din&000000; s2=Din&0000; s3=Din&000; IF (Din(10)=0) THEN s4=(0&s1(16 downto 0)+(000&s2(14 DOWNTO 0)+(0000&s3(13 DOWNTO 0); ELSE s4=(1&s1(16 downto 0)+(111&s2(14 DOWNTO 0)+(1111&s3(13 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clkEVENT AND clk=1 THEN Dout=s4; END IF; END PROCES

44、S;END mult88;乘106电路设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult106 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (17 DOWNTO 0);END mult106;ARCHITECTURE mult106 OF mult106 ISSIGNAL s1 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (15

45、DOWNTO 0);SIGNAL s3 : SIGNED (13 DOWNTO 0);SIGNAL s4 : SIGNED (11 DOWNTO 0);SIGNAL s5 : SIGNED (17 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3,s4) BEGIN s1=Din&000000; s2=Din&00000; s3=Din&000; s4=Din&0; IF (Din(10)=0) THEN s5=(0&s1(16 downto 0)+(00&s2(15 DOWNTO 0)+(0000&s3(13 DOWNTO 0)+(000000&s4(11 DO

46、WNTO 0); ELSE s5=(1&s1(16 downto 0)+(11&s2(15 DOWNTO 0)+(1111&s3(13 DOWNTO 0)+(111111&s4(11 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s5) BEGIN IF clkEVENT AND clk=1 THEN Dout=s5; END IF; END PROCESS;END mult106;乘54电路设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;-ENT

47、ITY mult54 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (16 DOWNTO 0);END mult54;ARCHITECTURE mult54 OF mult54 ISSIGNAL s1 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (13 DOWNTO 0);SIGNAL s3 : SIGNED (11 DOWNTO 0);SIGNAL s4 : SIGNED (16 DOWNTO 0);BEGIN A1:PROCESS(Din,s1

48、,s2,s3) BEGIN s1=Din&000000; s2=Din&000; s3=Din&0; IF (Din(10)=0) THEN s4=(0&s1(15 downto 0)-(00&s2(13 DOWNTO 0)-(0000&s3(11 DOWNTO 0); ELSE s4=(1&s1(15 downto 0)-(11&s2(13 DOWNTO 0)-(1111&s3(11 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clkEVENT AND clk=1 THEN Dout=s4; END IF; END

49、 PROCESS;END mult54;乘70电路设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult70 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (17 DOWNTO 0);END mult70;ARCHITECTURE mult70 OF mult70 ISSIGNAL s1 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (1

50、2 DOWNTO 0);SIGNAL s3 : SIGNED (11 DOWNTO 0);SIGNAL s4 : SIGNED (17 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3) BEGIN s1=Din&000000; s2=Din&00; s3=Din&0; IF (Din(10)=0) THEN s4=(0&s1(16 downto 0)+(00000&s2(12 DOWNTO 0)+(000000&s3(11 DOWNTO 0); ELSE s4=(1&s1(16 downto 0)+(11111&s2(12 DOWNTO 0)+(111111&s

51、3(11 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clkEVENT AND clk=1 THEN Dout=s4; END IF; END PROCESS;END mult70;乘239电路设计:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult239 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED

52、 (18 DOWNTO 0);END mult239;ARCHITECTURE mult239 OF mult239 ISSIGNAL s1 : SIGNED (18 DOWNTO 0);SIGNAL s2 : SIGNED (14 DOWNTO 0);SIGNAL s3 : SIGNED (10 DOWNTO 0);SIGNAL s4 : SIGNED (18 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3) BEGIN s1=Din&00000000; s2=Din&0000; s3=Din; IF (Din(10)=0) THEN s4=(0&s1(17

53、downto 0)-(0000&s2(14 DOWNTO 0)-(00000000&s3(10 DOWNTO 0); ELSE s4=(1&s1(17 downto 0)-(1111&s2(14 DOWNTO 0)-(11111111&s3(10 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clkEVENT AND clk=1 THEN Dout=s4; END IF; END PROCESS;END mult239;致 谢在毕业设计期间,导师师给予了极大的支持和帮助。老师平易近人、学识渊博,不厌其烦的指导和帮助我解决设计中遇到的疑难,使我得以顺利完成毕业设计。在此,谨向老师致以深深的敬意和诚挚的感谢!感谢各位同学在毕业设计期间对我的关心和帮助,特别感谢同宿舍的室友在我就业和毕业设计过程中给予的支持和帮助、关心,祝愿他们以后工作顺利,生活幸福!感谢母校四年以来的教导,这四年是我人生中最美好的时光!最后,再次衷心感谢所有关心和帮助我的人!华南农业大学本科生毕业设计成绩评定表学号姓名专业

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!