收藏 分销(赏)

用VHDL设计FIR数字低通滤波器.doc

上传人:仙人****88 文档编号:8990605 上传时间:2025-03-10 格式:DOC 页数:35 大小:864.50KB
下载 相关 举报
用VHDL设计FIR数字低通滤波器.doc_第1页
第1页 / 共35页
用VHDL设计FIR数字低通滤波器.doc_第2页
第2页 / 共35页
用VHDL设计FIR数字低通滤波器.doc_第3页
第3页 / 共35页
用VHDL设计FIR数字低通滤波器.doc_第4页
第4页 / 共35页
用VHDL设计FIR数字低通滤波器.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、安徽大学本科毕业论文(设计、创作)题目: 用VHDL设计FIR低通数字滤波器 学生姓名: 学号: 院(系): 电子信息工程学院 专业: 电子信息工程 入学时间: 二九 年 九 月导师姓名: 职称/学位: 导师所在单位: 安徽大学电子信息工程学院 完成时间: 二一三 年 六 月31用VHDL设计FIR低通数字滤波器摘 要数字滤波器在语音与图像处理生物医学信号处理通信以及电力系统中有着广泛的应用,它在过滤噪声、提高信噪比等方面有着重要的意义。本文首先分析了几种主要的FIR滤波器的实现方案,经过比较,最终采用了利用单位冲激响应的对称特性的方案。然后根据FIR低通数字滤波器的原理与滤波特性,利用MAT

2、LAB中的FDATOOL工具设计了一定性能的FIR低通滤波器,获取滤波器的相应系数并且将其进行量化。最后在MAX+PLUS环境下运用VHDL语言和原理图混合输入方式实现了18阶FIR低通数字滤波器,利用MAX+PLUS的仿真器对设计进行仿真得到相应的滤波仿真结果,并与MATLAB计算出来的理论值进行比较。此外,还对理论值与实际值的误差进行了分析。关键词:FIR数字滤波器;MATLAB;VHDL语言;MAX+PLUS Design FIR Low-pass Digital Filter Using VHDLAbstractDigital filter has been widely used i

3、n speech and image processing, biomedical signal processing, communications and power system, which has important significance in filtering noise and improving the signal-noise. At first, this paper analyzes several main scheme of the realization of FIR filter, after comparing, finally adopts the sc

4、heme of using the symmetrical characteristic of the unit impulse response. and then, based on the principle of FIR low pass digital filter and filter characteristics, use FDATOOL of MATLAB tools to design certain properties of the FIR low pass filter, get corresponding filter coefficients and quanti

5、fy it. At last, I use VHDL language and schematic hybrid approach to achieve the 18-order FIR low-pass digital filter in the environment of MAX + PLUS , and make use of MAX + PLUS simulators to simulate the design to get the corresponding filter simulation results which are used to compare with the

6、MATLAB calculated theoretical value. Furthermore, the error between the theoretical value and the actual value are analyzed.Keywords: FIR digital filter;MATLAB;VHDL language;MAX+PLUS 目录1 引言11.1 论文背景介绍11.2 论文的主要研究内容11.3 工作平台介绍21.3.1 MATLAB介绍21.3.2 MAX+PLUS22 FIR滤波器22.1 FIR滤波器的基本概念22.2 FIR滤波器的特点22.3 F

7、IR滤波器的结构与原理33 方案分析与设计53.1 FIR滤波器的设计方案53.2 FIR滤波器指标设计73.2.1 基于MATLAB的滤波器参数设置74 用VHDL设计FIR低通数字滤波器94.1 寄存器104.2 加法器模块124.3 乘法器模块134.4 减法器模块144.5 截取模块155 FIR滤波器仿真166 结论17主要参考文献19附录A20附录B21致谢311 引言1.1 论文背景介绍数字滤波器是数字信号处理系统中一种基本的处理部件,滤波是指依据噪声与有用信号频谱特性的不同,提取有用的信号,滤除不需要的信号,达到改变输入信号中所含频率分量的相对比例的目的。数字滤波器是一个离散的

8、系统,该系统应用的对象是离散信号。若用数字滤波器处理模拟信号,则需要对输入的模拟信号进行限带、抽样、量化和编码等一系列操作。当离散信号通过特定的数字滤波器时,滤波器可以提取信号所含有的有用信息,这就是数字滤波器的功能。从结构上看,数字滤波器可由数字乘法器、加法器和延时单元组成。数字滤波器可以从两个方面来划分,按频率响应特性来分,可分为低通、高通、带通、带阻滤波器;按单位脉冲响应长度来分,可分为有限长单位脉冲响应(FIR)滤波器和无限长单位脉冲响应(IIR)滤波器1。FIR滤波器与IIR滤波器各有特点,在选择时可以从实际应用时的要求出发,从多方面考虑加以选择2。在用FIR滤波器设计和实现某些特定

9、的应用时,会比IIR滤波器更有优势,例如用频率抽样设计法设计理想正交变换器、线性调频器等网络,会很灵活。在大多数数字信号处理的场合,数字滤波器被要求具有能对输入的信号实时处理并能进行复杂的运算等功能,这些需求越来越普遍,也成为某些数字滤波器的性能指标。在速度方面,FPGA表现出了特有的优势。FPGA拥有丰富的连线资源和规范完整的内部逻辑块整列,非常适合用于高并行度结构和细粒度的FIR滤波器的实现,相对于串行运算的通用DSP芯片来说,可扩展性与并行性都更好3。在效率、性价比、功能和使用灵活性方面有优势的FPGA数字信号处理器,正在通信电力系统图像处理等领域发挥着巨大的作用。运用分布式算法实现的F

10、PGA滤波器具有运算速度与采样数据的宽度成正比的突出优点,适合设计高速高阶的FIR滤波器,在节省硬件资源和提高系统运行速度方面有相当大的优势。另外,可移植性较好,在设计不同参数的滤波器时,只需改变查找表的内容就可以满足具体的实际需要4。因此,这种方法在高速数字信号处理中将有很广的应用领域。1.2 论文的主要研究内容本文讨论FIR滤波器的多种实现方案并对其进行比较。选择利用具有严格线性FIR滤波器的单位冲激响应的对称特性的方案,用MATLAB中的FDATOOL工具设计一定性能的FIR低通数字滤波器,获取滤波器的单位脉冲响应序列,并进行量化。使用VHDL语言设计滤波器的基本结构,例如:延时单元、加

11、法器、乘法器、减法器等;在顶层模块中采用原理图输入方式实现各元件的互连。用MAX+PLUS对本设计进行编译仿真,并与MATLAB计算出来的理论值进行对比分析。1.3 工作平台介绍1.3.1 MATLAB介绍MATLAB(Matrix Laboratory的缩写)是美国MathWorks公司推出的面向科学计算、可视化以及交互式程序设计的商业数学软件。如今,MATLAB的功能不仅是解决矩阵与数值计算,它将数值分析、矩阵计算、科学数据可视化、以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供一个全面的解决方案,并

12、在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平5。由于功能非常强大,很多著作在进行理论验证或说明一些现象时都使用MATLAB作为辅助工具。在高校的推广和应用下,MATLAB已成为很多大学课程,如信号与系统、数字信号处理等的基本教学工具。1.3.2 MAX+PLUSMAX+PLUS是Altera公司上一代的PLD开发软件,提供FPGA/CPLD开发集成环境。MAX+PLUS界面友好,使用方便,被称为业界最易学易用的EDA软件。MAX+PLUS支持VHDL、原理图和Verilog语言文本文件,以及波形和EDIF等文件作为设计输入,

13、并支持这些文件的混合设计,提供的设计环境与结构无关,使设计者能方便快速地进行设计输入、迅速处理和器件的编程。MAX+PLUS还拥有门级仿真器,可以进行功能和时序仿真,并产生精确的仿真结果。在适配之后,MAX+PLUS生成供时序仿真用的VHDL、EDIF和Verilog 3种不同格式的网表文件1。MAX+PLUS具有以下特点:(1)开放的界面,与结构无关;(2)完全集成化,丰富的设计库;(3)设计环境可用户化;(4)支持各种硬件描述语言(HDL)输入;(5)具有OpenCore(开放核)特征;2 FIR滤波器2.1 FIR滤波器的基本概念FIR滤波器是数字信号处理系统中最基本的元器件,主要用来实

14、现信号的预处理、带选、防混叠、抽选/插补、滤波和视频卷积等功能,它可以做成具有严格的线性相位的同时也具有任意的幅频特性。此外,FIR滤波器能用快速傅里叶算法(FFT)来处理信号从而提高运算效率并且滤波器是稳定的,这些特点与其单位抽样响应是有限长的有关。因此,FIR滤波器在通信、模式识别、图像处理等领域有着非常广泛的应用6。2.2 FIR滤波器的特点FIR数字滤波器可以是稳定的并且可具有良好的线性相位,这些优点是它能广泛应用于数字信号处理领域的关键。有限冲激响应(FIR)滤波器的特点2:(1)FIR滤波器的单位抽样响应是有限长的,因而滤波器性能稳定;(2)既可以具有严格的线性相位,又可以具有任意

15、的幅度;(3)能用因果系统来实现,这是因为任何非因果有限长序列经过一定的延时,都能变成因果有限长序列;(4)FIR有利于对数字信号的处理,方便编程,计算速度快,便于信号的实时处理;(5)FIR滤波器比较大的缺点就是要取得良好的衰减特性,H(Z)的阶次比IIR滤波器要高;(6)IIR滤波器的各种变换方法不适合FIR滤波器的设计,这是其系统函数决定的。2.3 FIR滤波器的结构与原理FIR数字滤波器是一个线性时不变系统(LTI),其单位冲激响应的z变换为 (1)式(1)系统差分方程为 (2)由式(2)可知n时刻滤波器的输出值只决定于n时刻滤波器的输入值以及过去N-1个输入值,画出其网络结构,如图1

16、所示,这种结构称为直接型。对于图1所示的直接型结构,可以知道N+1个系数才能描述N阶FIR滤波器,N阶FIR滤波器得用N+1个乘法器和N个两输入加法器来实现。图1:直接型结构如果FIR滤波器的单位冲激响应h(n)满足式(3)所示的对称条件: ,n=0,1,M (3)则该因果系统具有严格的线性相位。利用此对称性制作n阶FIR滤波器可减少一半的乘法器:当n为偶数时,需要n/2个乘法器;当n为奇数时,则需要(n+1)/2个乘法器。在实际的电路中要尽可能的减少乘法器的使用,这是因为电路的制作成本与乘法器的数目成正相关,电路的运行速度与乘法器的数目成负相关。当M为偶数时,式(2)可化为 (4)把式(3)

17、带入式(4)得到 (5)对应的偶数型网络结构如图2所示:图2:偶数型结构同理,当M为奇数时,式(2)可化为 (6)对应的奇数型网络结构如图3所示:图3:奇数型结构3 方案分析与设计3.1 FIR滤波器的设计方案FIR滤波器的设计方案相当多,一般情况下每个方案都有侧重的地方和适用的范围,设计时会考虑速度、资源、结构、稳定性等问题,有时会做出折中的选择。下面介绍几种方案并分析比较。方案一:此方案是引用图1所示的直接型结构,它没有经过任何化简,采用并行运算的方式进行。该方案速度快,通用性强,适合参数可变的FIR滤波器1;但是要实现高阶滤波器则会占用大量的资源,对于资源紧缺的FPGA来说,不实际。方案

18、二:本方案利用了具有严格线性FIR滤波器的单位冲激响应的对称特性,采用图2和图3的结构,这样就可以减少一半的乘法运算,节省资源。其运算采用并行方式,不过所选的结构要由滤波器阶数的奇偶性来确定,可见此结构非常适合参数固定的FIR滤波器。方案三:若要用FPGA实现参数可变的FIR滤波器,则其网络结构必须是通用型的。方案三的网络结构仍采用直接型,只是在进行乘法运算时,用串行乘法代替并行乘法,拿更多的运行时间来换取少占资源。串行乘法器模块图如图4所示,图中的AB是两个N位的乘数。串行乘法器的工作原理是:首先将输入数据B通过并串转换器使并行数据转换成串行数据,从数学的角度来看即将其写成几个2的幂的和的形

19、式;接着A和转换后的数据B进入乘法器,运算结果通过加法器;最后将加法器的输出进行循环移位累加,N次移位相加后输出结果。图4:串行乘法器方案四:本方案使用乘法表来实现乘法运算,用查表的方式来得到两输入数的乘积结果,即把两乘数作为ROM的地址,对应的单元数据就是乘积。此方法精度高,速度快,结构简单,适合参数固定,数据位数少的滤波器,如果数据位数多则就不合适1。方案四的结构图如图5所示:图5:采用乘法表的滤波器结构方案五:本方案综合了方案三方案四,有了较好的改进,基本原理如下:假设滤波器是N阶的M位,则系统的差分方程为 (7)可表示为 (8)由式(7)可以得到该方案的结构,如图6所示,其中的用串行时

20、序来实现,用移位寄存器来实现,用N个1W乘法器来实现, 用加法树来实现。此外,要实现用方案五制作的FIR滤波器的滤波功能,除了需要上述的串行时序、移位寄存器、N个1W乘法器、加法树外,还需要设计一个总控制单元用于协调各部件按照设定的时序运行,完成FIR滤波操作。图6:方案五结构图以上讨论了五种制作FIR滤波器的方法,各有优缺点,结合自己本身的情况和方案的设计难易程度综合考虑,决定选择方案二的结构来完成本次的毕业论文。3.2 FIR滤波器指标设计本文设计的FIR低通数字滤波器的设计指标为:(1)滤波器阶数为18阶;(2)采用Kaiser窗函数设计,Beta为0.5;(3)采样频率Fs为48KHZ

21、截止频率Fc为10KHZ;(4)输入序列位宽为8位的有符号数;(5)输出序列的位宽为8位的有符号数。3.2.1 基于MATLAB的滤波器参数设置在MATLAB的命令编辑窗口中输入Fdatool指令,回车后即可打开Filter Design & Analysis Tool窗口,如图7所示,利用此工具,可以快速的完成FIR滤波器系数的计算工作。由图7可知Fdatool界面可分为两大部分,在界面的上半部分是特性区,用来显示滤波器的各种特性;界面的下半部分则是滤波器设计区,用来设置滤波器的参数。图7:Filter Design & Analysis Tool窗口按照设计指标的参数要求,输入相应的参数

22、设置好的参数如图8所示:图8:滤波器参数设置单击工具窗口下方的Design Filter按钮,开始进行相关参数计算。此时,可以看到该滤波器的一些相关曲线,如图9幅频响应、图10相频响应、图11冲激响应。图9:幅频响应图10:相频响应图11:冲激响应运算的结果通过File下拉菜单中的Export命令取出,并将滤波器的系数存放到当前工作空间,并且以Num命名。保存并关闭滤波器设计分析工具回到MATLAB主窗口,在命令编辑区输入Num可得到工具的计算结果7。对FIR滤波器的系数进行调整,做整数化操作后得到滤波器的系数如图12所示。图12:整数化后的冲激系数4 用VHDL设计FIR低通数字滤波器FI

23、R低通数字滤波器可分为以下五种模块:寄存器加法器乘法器减法器截取模块,完成所需的相关模块后在顶层文件中进行连接,综合,以实现低通滤波功能。本文的FIR低通滤波器的原理图如图13所示。图中的寄存器模块有两个不同的功能,乘法器级之后的只起到信号延时的作用,目的是为了整体仿真时内部信号在时序上的一致性。图13:FIR低通滤波器的原理图4.1 寄存器寄存器用来寄存一组二值代码,对其触发器只要求具有置0置1的功能即可。本文用D触发器组成两种不同的寄存器,实现寄存功能。(1)具有异步复位功能,当rst=1时,输出信号Dout=0;当rst=0且clk上升沿脉冲到达时Dout=Din;如图14所示。 图14

24、第一种寄存器 程序如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY reg8 ISPORT(rst:IN STD_LOGIC; clk:IN STD_LOGIC; Din:IN SIGNED(7 DOWNTO 0); Dout:OUT SIGNED(7 DOWNTO 0);END reg8;ARCHITECTURE rt OF reg8 ISBEGINPROCESS(clk,rst)BEGINIF (rst=1 )THENDout0);ELSIF(clkEVENT AND cl

25、k=1) THENDout=Din;END IF;END PROCESS;END rt;仿真结果如图15所示:图15:寄存器仿真结果(2)不具有异步复位功能,仅起到数据暂存作用,在电路中的作用是使得电路中的信号在时序上保持一致。如图16所示,程序与第一种类似。图16:第二种寄存器4.2 加法器模块加法器用来完成两个有符号数的相加运算。在时钟信号上升沿到达时,对输入的两有符号数进行相加运算后输出结果。加法器有并行进位和串行进位两种组成方式:串行进位加法器运算速度慢,资源占用少,而并行加法器刚好相反。本文所用的加法器都采用并行进位方式,共有以下几种加法器:两个8位有符号数相加产生9位有符号数的加法

26、器、11位和13位有符号数相加产生14位有符号数的加法器、两个13位有符号数相加产生14位有符号数的加法器、12位和14位有符号数相加产生15位有符号数的加法器、11位和15位有符号数相加产生16位有符号数的加法器、15位和16位有符号数相加产生17位有符号数的加法器、14位和16位有符号数相加产生17位有符号数的加法器、14位和17位有符号数相加产生18位有符号数的加法器。仅以15位有符号数加16位有符号数生成17位有符号数的加法器为例,其模块框图如图17所示。图17:加法器结构图程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD

27、LOGIC_ARITH.ALL;ENTITY add151617 ISPORT(clk:IN STD_LOGIC; Din1:IN SIGNED(14 DOWNTO 0); Din2:IN SIGNED(15 DOWNTO 0); Dout:OUT SIGNED(16 DOWNTO 0);END add151617;ARCHITECTURE rt OF add151617 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=(Din1(14)&Din1(14)&Din1)+(Din2(15)&Din2);END IF;END PRO

28、CESS;END rt;仿真结果如图18所示:图18:加法器仿真结果4.3 乘法器模块本文设计的乘法器具有对输入数据进行固定的放大作用,即乘法器的系数是固定的。乘法器在时钟信号上升沿到达时,完成输入的有符号数与滤波器系数这两个数的乘法运算,之后输出结果。考虑速度和资源,确定系数的乘法运算可以用移位相加来实现,即将系数分解成几个2的幂的和形式8。本文设计的FIR低通数字滤波器系数分别为-9、-4、10、11、-7、-23、-4、50、99、99、50、-4、-23、-7、11、10、-4、-9。由于采用了偶数型的对称结构,滤波器的系数只需要使用一半,即乘法器数目减半。在编写程序时,所有的系数都先

29、当成正值,在后面的求和运算时改为减法运算即可。 以乘99乘法器为例,其模块框图如图19所示。图19:乘99乘法器结构图乘99乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult99 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(15 DOWNTO 0);END mult99;ARCHITECTURE rt OF mult99 ISSIGNAL s1:SIGNED(14 DOWNTO 0

30、);SIGNAL s2:SIGNED(13 DOWNTO 0);SIGNAL s3:SIGNED(9 DOWNTO 0);SIGNAL s4:SIGNED(15 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000000;s2=Din&00000;s3=Din&0;IF(Din(8)=0) THENs4=(0&s1)+(00&s2)+(00000&s3)+(0000000&Din);ELSEs4=(1&s1)+(11&s2)+(11111&s3)+(1111111&Din);END IF;END PROCESS;A2:PROCESS(clk,s4)BEG

31、INIF(clkevent and clk=1) THENDout=s4;END IF;END PROCESS;END rt;仿真结果如图20所示:图20:乘99乘法器仿真结果4.4 减法器模块减法器的原理与加法器类似,区别仅在于输出结果为两数的差值。当时钟信号上升沿到来时,实现两个有符号数的相减操作,并输出结果。本文采用18位有符号数减去17位有符号数生成18位有符号数的减法器,其结构框图与加法器差别不大。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY sub181718 ISPO

32、RT(clk:IN STD_LOGIC; Din1:IN SIGNED(17 DOWNTO 0); Din2:IN SIGNED(16 DOWNTO 0); Dout:OUT SIGNED(17 DOWNTO 0);END sub181718;ARCHITECTURE rt OF sub181718 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=Din1-(Din2(16)&Din2);END IF;END PROCESS;END rt;仿真结果如下图21所示:图21:减法器仿真结果4.5 截取模块减法器的下一级是电路的最后一级

33、减法器的输出为18位有符号数,按照设计要求输出为8位数据,所以截取模块将减法器输出的18位数据低位舍去直接输出高8位,因此截取后的输出近似等于除掉了28即256后的结果。模块结构图如图22所示:图22:截取模块结构图程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cut188 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(17 DOWNTO 0); Dout:OUT SIGNED(7 DOWNTO 0);END cut188;ARCHITECTURE

34、 rt OF cut188 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=Din(17 downto 10);END IF;END PROCESS;END rt;仿真结果如图23所示:图23:截取模块仿真结果5 FIR滤波器仿真MAX+PLUS仿真器的Grid size项(此项用来设置时钟脉冲的周期)设置为50ns,End time(结束时间)设置为5.0us。任意设定输入的信号为:Din98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0

35、 98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0 。得到的仿真结果如图24所示:图24:18阶FIR滤波器滤波结果6 结论用MATLAB计算FIR低通滤波器的输出结果,运算公式为yn=conv(xn,hn),与仿真器得到的结果如下表1所示:表1:仿真结果验证输出结果yn理论值仿真结果MATLAB卷积值/256经仿真器仿真-0.8613255-0.38282550.9570 01.05271-1.3379254-2.49802530.359405.601658.093887.384875.445354.380943.808634.179745.123056.2

36、6176y06.00396Y16.00396y26.26176y35.12305y43.51173y53.51173y65.12305y76.26176y86.00396y96.00396y106.26176y115.12305y123.51173y133.51173y145.12305y156.26176y166.00396y176.00396MAX+PLUS的仿真器支持四种类型的数:二进制、四进制、八进制、十六进制9。当进行减法运算时,如果被减数小于减数则被减数会向高位借位,使输出结果为正。在此情况下,如果仿真器结果显示255,实际的数为-1、254则为-2、253实际为-3。对于仿真器输

37、出的是正数还是负数,要通过上级减法器的两个输入信号的仿真波形图来判断。修正表1中的数据后,用MATLAB制作18阶FIR滤波器理论值与仿真值对比图如图25所示,其中虚线为理论值,实线为仿真值。图25:18阶FIR滤波器理论值与仿真值对比图由表1可以看出,仿真结果与MATLAB计算出来的输出信号理论值基本吻合,且波形基本没有毛刺,达到设计要求。此外,从图25中也可以证明这点。图25理论值与仿真值所表现出来的误差,可以从三个方面进行理解:首先,用MATLAB获取滤波器系数时进行了取整运算,舍去了小数位,产生误差;其次,在本设计顶层电路的最后一级使用了截取模块,采用直接截取数据高8位的方式,这样不可

38、避免的带来了误差;最后,VHDL仿真器进行时序仿真时会存在延时问题从而影响输出结果,对于这方面的影响,可增加时钟周期的宽度来减小。主要参考文献:1潘松,王国栋.VHDL实用教程M. 成都:电子科技大学出版社,2007.2程佩青.数字信号处理教程M. 北京:清华大学出版社,2008.3张秀娟.基于DA算法的FIR数字滤波器的FPGA设计J. 计算机与数学工程,2010(6):165.4薛严冰,韩雪,邵远.基于分布式算法的FIR数字滤波器的FPGA实现J. 大连交通大学学报2009,8:84-87.5周品.MATLAB神经网络设计与应用M. 北京:清华大学出版社,2013.6刘欲晓,方强.EDA技

39、术与VHDL电路开发应用实践M. 北京:电子工业出版社,2009.7岑光.基于FPGA的FIR数字滤波器研究与设计D. 西安:西安电子科技大学生物医学工程系,2011.8王丹琦,赵惠昌.一种基于MATLAB及FPGA的FIR低通数字滤波器的设计与实现J. 电子设计工程,2010,7:131-134.9Volnei A.Pedroni.VHDL数字电路设计教程M. 北京:电子工业出版社,2013.附录AFIR低通数字滤波器的原理图附录B乘法器与加法器程序乘4乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARIT

40、H.ALL;ENTITY mult4 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(10 DOWNTO 0);END mult4;ARCHITECTURE rt OF mult4 ISSIGNAL s1:SIGNED(10 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&00;END PROCESS;A2:PROCESS(clk,s1)BEGINIF(clkevent and clk=1) THENDout=s1;END IF;END PROCESS;END rt;乘

41、7乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult7 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(11 DOWNTO 0);END mult7;ARCHITECTURE rt OF mult7 ISSIGNAL s1:SIGNED(10 DOWNTO 0);SIGNAL s2:SIGNED(9 DOWNTO 0);SIGNAL s3:SIGNED(11 DOWNTO 0);BEG

42、INA1:PROCESS(Din)BEGIN s1=Din&00;s2=Din&0;IF(Din(8)=0) THENs3=(0&s1)+(00&s2)+(000&Din);ELSEs3=(1&s1)+(11&s2)+(111&Din);END IF;END PROCESS;A2:PROCESS(clk,s3)BEGINIF(clkevent and clk=1) THENDout=s3;END IF;END PROCESS;END rt;乘9乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult9 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(12 DOWNTO 0);END mult9;ARCHITECTURE rt OF mult9 ISSIGNAL s1:SIGNED(11 DOWNTO 0);SIGNAL s2:SIGNED(12 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000;IF(Din(8)=0) THENs2=(0&s1)+(0000&Din);ELSEs2=(1&s1)

展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服