版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于FPGA的FIR滤波器设计一 、设计目的为了帮助学生深入理解和消化基本理论、进一步提高综合应用能力并且锻炼独立解决问题的能力,我们将数字信号处理、集成电路原理与应用和FPGA系统设计与应用几门课程融合在一起开设的FPGA综合实验课程设计。本次完成的是利用FPGA来完成FIR滤波器的设计、程序设计和实验调试任务。二、设计要求(1)基本要求利用所学知识,采用VHDL语言完成FIR滤波器的设计仿真。要求用VHDL编程设计底层文件,顶层文件可任意(可用原理图方式或文本方式);完成仿真文件(包括MATLAB和QUARTUSII两种仿真)并对其结果比较。具体设计指标如下:(1)采样频率;(2)截止频率
2、;(3)输入序列为10位(最高位为符号位);(4)窗口类型为kaiser窗,=0.5 ;(5)滤波器长度为16 ;(6)输出结果保留10位。(2)提高部分 根据所学知识,设计出一个具有频率控制功能DDS,要求输出频率分别为10KHz和100KHz,将输出的两路数字信号进行叠加,并通过所设计的FIR滤波器进行滤波,将滤波输出的数字信号通过D/A转换电路输出波形,并用示波器观察输出波形,并完成测试结果分析。结构框图如图1-1所示。图2-1 整体结构框图三、设计原理3.1 FIR滤波器由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。当我们处理有限的离散数据时,线形系统
3、的响应(包括对冲击的响应)也是有限的。若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。通过这种方式确定的滤波器称为有限冲击响应(FIR)滤波器。3.2 线性FIR滤波器原理FIR滤波器响应(简称FIR)系统的单位脉冲响应为有限长序列,系统函数在有限z平面上不存在极点,其运算结构中不存在反馈支路,即没有环路。如果的长度为N,则它的系统函数和差分方程一般具有如下形式:根据差分方程直接画出FIR滤波器的结构,称为直接型结构。如图3-1所示: 图3-1 FIR滤波器直接结构FIR滤波器的特点:单位脉冲响应序列为有限个;可快速实现;可得到线性相位;滤波器阶数较高
4、。对线性时不变系统保持线性相位的条件是:单位脉冲响应为偶对称或奇对称。即:为设计线性滤波器,应保证h(n)为对称的。 若N为偶数,其线性相位FIR滤波器的对称结构流图如图3-2所示:图3-2 若N为偶数线性相位FIR滤波器的对称结构流图图中:“ +1 ”对应偶对称情况,“ -1 ”对应奇对称情况。当n为奇数时,支路断开。 若N为奇数,其线性相位FIR滤波器的对称结构流图如图3-3:图3-3 N为奇数线性相位FIR滤波器的对称结构流图其中y(n)和x(n)分别是输出和输入序列。有限冲激响应滤波器的一种直接型实现,可由式(2)生成,M=5的情况如图3-4(a)所示。其转置,如图3-4(b)所示,是
5、第二个直接型结构。通常一个长度为M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M-1)个双输入加法器来实现。图3-4(a)直接型一图3-4(b)直接型二长度为M的线性相位有限冲激响应滤波器由对称的冲激响应h(n)=h(M-1-n)或反对称的冲激响应h(n)=-h(M-1-n)描述。利用线性相位有限冲激响应滤波器的对称(或反对称)性质,可以将传输函数的直接型实现所需的乘法器总量减少一半。例如,图3-5显示了一个具有对称冲击响应的、长度为7的有限冲激响应传输函数的实现。图3- 5 线性相位有限冲激响应结构四、设计方案因为N=16为偶数,根据老师上课时所讲,可以按照上面第一个原理图设计
6、滤波器,如图4-1所示。图4-1若N为偶数线性相位FIR滤波器的对称结构流图本设计取为偶对称的情况,则图中:应取“ +1 ”。由上图可分析得到,要完成滤波器的设计,需要设计的底层文件包括延时单元、加法电路单元、乘以负一单元、乘法器单元及截取10位数单元。由各单元VHDL编程后,生成相应的符号文件。最后连接成顶层原理图。整个电路的原理图设置方案如图4-2所示:图4- 2 滤波器整体设计方案原理图五、设计内容及结果分析首先使用matlab计算出符合设计要求的滤波器冲激响应系数。后将整个电路规划为语言编辑和原理图编辑两个单元,其中语言编辑部分负责编辑整个滤波器电路中所需用的单元器件,包括寄存器、加法
7、器、减法器以及乘法器几个单元器件;最后将所有的器件连接成顶层原理图。在进行编译及仿真。5.1基于matlab的FIR滤波器系数计算在matlab命令编辑窗口输入Fdatool指令,再点回车即可打开Filter Design & Analysis Tool窗口,在该工具的帮助下,我们就可以完成f.i.r.滤波器系数的计算。Fdatool界面总共分两大部分,一部分是design filter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。design filter部分主要分为:ResponseType(响应类型)选项,包括Low
8、pass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。根据本次作业要求,在该选项中选择Lowpass选项。Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(椭圆滤波器)法等和Window(窗函数)法等多种方法。结合本次课设要求,选择FIR滤波器的窗函数法进行设计。选定窗函数法后,会在右侧出现Options区域,进行窗函数法相关参量的设置,根据作业要求选择Kais
9、er窗并设置Beta为:0.5。Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify order(指定阶数)和Minimum order(最小阶数)。在Specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),如果选择Minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。本次作业要求设计16阶滤波器,所以选定Specify order并填入15。Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由ResponseTyp
10、e选项和Design Metho选项决定。我们要求的Lowpass(低通)滤波器只需要定义Fs=80 KHz、Fc=10 KHz。本次课设中的参数全部设定后的结果如图5-1所示。图5-1 参数全部设定后图参数设定完毕,单击工具窗口下方的Design Filter按钮,就开始进行相关参数计算。在计算结果中可以看到该滤波器的一些相关曲线,如幅频响应(如图5-2)、相频响应(如图5-3)、冲激响应(如图5-4)等。图形如下:图5-2 幅频响应曲线图5-3 相频响应曲线图5-4 冲激响应计算的结果可通过File下拉菜单中的Export命令取出,点击Export打开Export对话框(如图5-5),点击
11、Export按钮可将滤波器系数数据存放到当前工作空间,并以Num命名。图5-5 冲激系数输出对话框保存并关闭滤波器设计分析工具回到matlab主窗口,在命令编辑区输入Num可得到工具的计算结果(如图5-6)。图 5-6 输出在matlab的冲激系数对FIR滤波器的系数进行调整,做整数化操作。可得到滤波器整数化的系数为-31 -88 -106 -54 70 239 401 499 499 401 239 70 -54 -106 -88 -31,如图 5-7所示:图5-7整数化后的冲激系数5.2 单元器件的编辑及仿真、寄存器模块在本次课设中延迟单元可用寄存器来替代,寄存器用于寄存一组二值代码,只要
12、求它们具有置1、置0的功能即可。在本设计中使用带异步复位rst端的D触发器,当rst=1时,输出信号q=0,当rst=0且上升沿脉冲到达时q=d,即延迟了一个在周期。其程序代码如下:LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY jicunqi ISPORT (rst,clk: IN STD_LOGIC; d:IN STD_LOGIC_VECTOR (9 DOWNTO 0); q:OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END jicunqi;ARCHITECTURE dff16 OF jicunqi ISBEGIN
13、 PROCESS (rst,clk) BEGIN IF(rst='1')THEN q<=(OTHERS=>'0'); ELSIF(clk'EVENTAND clk='1')THEN q<=d; END IF; END PROCESS;END dff16;程序编译后就可进行仿真,仿真结果如图5-8所示:图5-8 寄存器模块仿真结果由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-9 所示。图 5-9寄存器元件图、加法器模块即实现两个有符号数的相加运算。即将输入的两数,在时钟脉冲到来时相加
14、运算,输出结果。在本设计中共有8个:两个10位有符号数相加产生一个11位有符号数的加法器、一个18位和19位有符号数相加产生20位有符号数的加法器、一个两个20位有符号数相加产生一个21位有符号数的加法器、一个两个19位有符号数相加产生一个20位有符号位数的加法器、一个20位和21位有符号数相加产生22位有符号数的加法器,以及一个20位和22位有符号数相加产生23位有符号数的加法器电路。具体如下: 两个10位有符号数相加产生一个11位有符号数的加法器设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic
15、_arith.all;ENTITY add101011 IS PORT(a,b: IN SIGNED(9 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(10 DOWNTO 0);END add101011;ARCHITECTURE sum101011 OF add101011 ISBEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN s<=(a(9)&a)+(b(9)&b); END IF; END PROCESS;END sum101011;程序编译后
16、就可进行仿真,仿真结果如图5-10所示:图5-10 两个10位有符号数相加结果波形图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-11所示图5-11 两个10位有符号数相加元件图2 18位和19位有符号数相加产生20位有符号数的加法器设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add181920 IS PORT(a: IN SIGNED(17 DOWNTO 0); b: IN SIGNED(18 DOWNTO 0);
17、clk: IN STD_LOGIC; s:OUT SIGNED(19 DOWNTO 0);END add181920;ARCHITECTURE sum7023918 OF add181920 ISBEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN s<=(a(17)&a(17)&a)+(b(18)&b); END IF; END PROCESS;END sum7023918;程序编译后就可进行仿真,仿真结果如图5-12所示:图5-12 18位和19位有符号数相加结果波形图由上图可知,
18、与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-13 所示图5-13 18位和19位有符号数相加元件图3 两个20位有符号数相加产生一个21位有符号数的加法器设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add202021 IS PORT(a: IN SIGNED(19 DOWNTO 0); b: IN SIGNED(19 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(20 DOWNTO 0);
19、END add202021;ARCHITECTURE sum40149919 OF add202021 ISBEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN s<=(a(19)&a)+(b(19)&b); END IF; END PROCESS;END sum40149919;程序编译后就可进行仿真,仿真结果如图5-14所示:图 5-14 两个20位有符号数相加结果波形图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-15所示图 5-15 两个20位有
20、符号数相加元件图两个19位有符号数相加产生一个20位有符号位数的加法器设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add191920 IS PORT(a: IN SIGNED(18 DOWNTO 0); b: IN SIGNED(18 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(19 DOWNTO 0);END add191920;ARCHITECTURE sum181819 OF add191920 ISBEGIN
21、 PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN s<=(a(18)&a)+(b(18)&b); END IF; END PROCESS;END sum181819;程序编译后就可进行仿真,仿真结果如图5-16所示:图 5-16两个19位有符号数相加结果波形图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-17所示图 5-17两个19位有符号数相加元件图 20位和21位有符号数相加产生22位有符号数的加法器:由分析可写出如下程序:LIBRARY ieee;USE
22、 ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add202122 IS PORT(a: IN SIGNED(19 DOWNTO 0); b: IN SIGNED(20 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(21 DOWNTO 0);END add202122;ARCHITECTURE sum192021 OF add202122 ISBEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN s&l
23、t;=(a(19)&a(19)&a)+(b(20)&b); END IF; END PROCESS;END sum192021;程序编译后就可进行仿真,仿真结果如图5-18所示:图 5-18 20位和21位有符号数相加结果波形图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-19 所示图5-19 20位和21位有符号数相加元件图 20位和22位有符号数相加产生23位有符号数的加法器电路设计(最后一级带舍位):在此加法器电路中在引入低位舍去功能只保留最终10位输出,最终保留10位输出采用了直接取输出23位数的高十位的方法,因此在输出中
24、近似等于除掉了213即8192以后的结果。为了比较,特又引出了一个23位全输出引脚(quan)。其程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add202223 IS PORT(a: IN SIGNED(19 DOWNTO 0); b: IN SIGNED(21 DOWNTO 0); quan: OUT SIGNED(22 DOWNTO 0); clk: IN STD_LOGIC; s:OUT SIGNED(9 DOWNTO 0);END add202223;ARCHITEC
25、TURE sum192110 OF add202223 ISBEGIN PROCESS(clk) VARIABLE c:SIGNED(22 DOWNTO 0); BEGIN IF(clk'EVENT AND clk='1')THEN c:=(a(19)&a(19)&a(19)&a)+(b(21)&b); END IF; s<=c(22 DOWNTO 13); quan<= c; END PROCESS;END sum192110;程序编译后就可进行仿真,仿真结果如图5-20所示图 5-20 20位和22位有符号数相加 结果波形
26、图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-21所示;图 5-21 20位和22位有符号数相加元件图、减法器模块:它实现零值减去两个有符号数的减法运算。即用零值减去输入的两数,在时钟脉冲到来时做减法运算,输出结果。注意:-31和-88的乘结果都只包含了乘系数31和88的数值,并没有将两个负号代入,所以两乘法器后面的加法器运算改为减法器模块,采用0-31*累加结果-88*累加结果的方法,实现(-31)*累加结果+(-88)*累加结果的计算。-106和-54后面的加法器采用同样的方式处理。 -31和-88的减法器设计:由分析可写出如下程序:LIBRARY
27、 ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY jian3188 isPORT(clk : in STD_LOGIC; Din1 :in signed (15 downto 0); Din2 :in signed (17 downto 0); Dout :out signed(18 downto 0);END jian3188;ARCHITECTURE sub318817 of jian3188 ISSIGNAL s1: signed(17 downto 0):=(Din1(15)&Din1(1
28、5)&Din1);SIGNAL s2: signed(18 downto 0):=(OTHERS=>'0');BEGIN PROCESS(Din1,Din2,clk) BEGIN IF clk'event and clk='1' THEN Dout<=s2-Din2-s1; END IF; END PROCESS;END sub318817;程序编译后就可进行仿真,仿真结果如图5-22所示:图5-22 31和-88的减法器结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-23 所示;图5-
29、23 -31和-88的减法器元件图-106和-54的减法器的设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY jian10654 isPORT(clk : in STD_LOGIC; Din1 :in signed (17 downto 0); Din2 :in signed (16 downto 0); Dout :out signed(18 downto 0);END jian10654;ARCHITECTURE sub1065417 of jian10654
30、 ISSIGNAL s1: signed(17 downto 0):=(Din2(16)&Din2);SIGNAL s2: signed(18 downto 0):=(OTHERS=>'0');BEGIN PROCESS(Din1,Din2,clk) BEGIN IF clk'event and clk='1' THEN Dout<=s2-Din1-s1; END IF; END PROCESS;END sub1065417;程序编译后就可进行仿真,仿真结果如图5-24 所示:图 5-24 -106和-54的减法器结果仿真图由上图可知
31、,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-25 所示;图 5-25 -106和-54的减法器元件图、乘法器模块:实现输入带符号数据与固定数据两个二进制数的乘法运算。当到达时钟上升沿时,将两数输入,运算并输出结果。从资源和速度方面考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幂的和形式,然后再分别进行运算。滤波器系数分别为-31、-88、-106、-54、70、239、401、499、499、401、239、70、-54、-106、-88、-31。算法:其中带负号数先乘去负号的整数部分,在后面的求和中做减法运算。编码方式如下:31被编码为25-2
32、0、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 mult31 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT S
33、IGNED (15 DOWNTO 0);END mult31;ARCHITECTURE mul31 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; IF (Din(10)='0') THEN s3<=('0'&s1(
34、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 clk'EVENT AND clk='1' THEN Dout<=s3; END IF; END PROCESS;END mul31;程序编译后就可进行仿真,仿真结果如图5-26 所示:图 5-
35、26 乘31电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-27所示;图5-27 乘31电路元件图乘88电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult88 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (17 DOWNTO 0);END mult88;ARCHITECTURE mult88
36、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) BEGIN s1<=Din&"000000" s2<=Din&"0000" s3<=Din&"000" IF (Din(10)='0'
37、;) 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 clk
38、39;EVENT AND clk='1' THEN Dout<=s4; END IF; END PROCESS;END mult88;程序编译后就可进行仿真,仿真结果如图5-28所示:图 5-28 乘88电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-29所示;图 5-29 乘88电路元件图乘106电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult106 ISPORT( clk
39、: 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 DOWNTO 0);SIGNAL s3 : SIGNED (13 DOWNTO 0);SIGNAL s4 : SIGNED (11 DOWNTO 0);SIGNAL s5 : SIGNED (17 DOWNTO 0);BEGIN A1:P
40、ROCESS(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)+(
41、"000000"&s4(11 DOWNTO 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 clk'EVENT AND clk='1' THEN Dout<=s5
42、; END IF; END PROCESS;END mult106;程序编译后就可进行仿真,仿真结果如图5-30所示:图 5-30 乘106电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-31所示;图 5-31 乘106电路元件图 乘54电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult54 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO
43、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,s2,s3) BEGIN s1<=Din&"000000" s2<=Din&&qu
44、ot;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
45、 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clk'EVENT AND clk='1' THEN Dout<=s4; END IF; END PROCESS;END mult54;程序编译后就可进行仿真,仿真结果如图5-32所示:图 5-32乘54电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-33所示;图 5-33 乘54电路元件图 乘70电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.a
46、ll;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 (12 DOWNTO 0);SIGNAL s3 : SIGNED (11 DOWNTO 0);SIGNAL s4 : SIGNED (1
47、7 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<
48、;=('1'&s1(16 downto 0)+("11111"&s2(12 DOWNTO 0)+("111111"&s3(11 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clk'EVENT AND clk='1' THEN Dout<=s4; END IF; END PROCESS;END mult70;程序编译后就可进行仿真,仿真结果如图5-34所示:图5-34 乘70电路结果仿真图由上图可知,与预期相符
49、,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-35所示;图5-35 乘70电路元件图乘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 (18 DOWNTO 0);END mult239;ARCHITECTURE mult239 OF mult239 ISSIGNAL
50、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(1
51、7 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 clk'EVENT AND clk='1
52、9; THEN Dout<=s4; END IF; END PROCESS;END mult239;程序编译后就可进行仿真,仿真结果如图5-36所示:图 5-36 乘239电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-37所示;图5-37 乘239电路元件图乘401电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult401 ISPORT( clk : IN STD_LOGIC; Din : IN
53、 SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (19 DOWNTO 0);END mult401;ARCHITECTURE mult401 OF mult401 ISSIGNAL s1 : SIGNED (19 DOWNTO 0);SIGNAL s2 : SIGNED (17 DOWNTO 0);SIGNAL s3 : SIGNED (14 DOWNTO 0);SIGNAL s4 : SIGNED (10 DOWNTO 0);SIGNAL s5 : SIGNED (19 DOWNTO 0);BEGIN A1:PROCESS(Din,s1,s2,s3,s4)
54、BEGIN s1<=Din&"000000000" s2<=Din&"0000000" s3<=Din&"0000" s4<=Din; IF (Din(10)='0') THEN s5<=('0'&s1(18 downto 0)-("00"&s2(17 DOWNTO 0)+("00000"&s3(14 DOWNTO 0)+("000000000"&s4(10
55、DOWNTO 0); ELSE s5<=('1'&s1(18 downto 0)-("11"&s2(17 DOWNTO 0)+("11111"&s3(14 DOWNTO 0)+("111111111"&s4(10 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s5) BEGIN IF clk'EVENT AND clk='1' THEN Dout<=s5; END IF; END PROCESS;END
56、 mult401;程序编译后就可进行仿真,仿真结果如图5-38所示:图 5-38 乘401电路结果仿真图由上图可知,与预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-39所示;图5-39 乘401电路元件图 乘499电路设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult499 ISPORT( clk : IN STD_LOGIC; Din : IN SIGNED (10 DOWNTO 0); Dout : OUT SIGNED (19 DOWNTO 0);END mult499;ARCHITECTURE mult499 OF mult499 ISSIGNAL s1 : SIGNED (19 DOWNTO 0);SIGNAL s2 : SIGNED (13 DOWNTO 0);SIGNAL s3 : SIGN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冀少版八年级生物上册第五单元第二节食品保存技术课件
- 探险宾馆安全活动规则
- 电子产品卖场租赁联营协议
- 住宅小区物业管理租赁合同
- 离婚协议书中退休金处理
- 电子电器印刷质量评估准则
- 烘焙店设备安装合同
- 汽车销售广告施工合同文本格式
- 人力资源项目薪资激励策略
- 保险业用电合同管理规定
- 2024年广西高考生物试卷真题(含答案)
- 中国铁路国际有限公司招聘考试试卷2022
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 古代小说戏曲专题-形考任务2-国开-参考资料
- 高中学生物理教学论文7篇
- 守株待兔演讲稿
- 串并联电路说课稿
- 画法几何习题集第六章答案大连理工大学版
- 中控考勤管理系统数据库结构
- 医院关键财务管理岗位定期轮换与交接制度
- 设备包机管理实施细则
评论
0/150
提交评论