版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE22共24页1-共23页一、设计指标:设计一个16阶低通线性相位FIR滤波器;要求采样频率Fs为80KHz;截止频率Fc为10KHz;采纳函数窗法设计,且窗口类型为Kaiser,Beta为0.5;输入序列位宽为10位的有符号数(最高位为符号位);输出序列位宽为10位的有符号数(最高位为符号位)。二、线性相位fir滤波器理论:有限长脉冲响应(FIR)滤波器的系统函数只有零点,除原点外,没有极点,因而FIR滤波器总是稳定的。如果他的单位脉冲响应是非因果的,总能够便利的通过适当的移位得到因果的单位脉冲响应,所以FIR滤波器不存在稳定性和是否可实现的问题.它的另一个突出的优点是在满意肯定的对称条件时,可以实现严格的线性相位.由于线性相位滤波器不会转变输入信号的外形,而只是在时域上使信号延时,因此线性相位特性在工程实际中具有格外重要的意义,如在数据通信、图像处理等应用领域,往往要求信号在传输和处理过程中不能有明显的相位失真,因而线性相位FIR滤波器得到了广泛的应用。长度为M的因果有限冲激响应滤波器由传输函数H(z)描述:(1)它是次数为M-1的z-1的一个多项式。在时域中,上述有限冲激响应滤波器的输入输出关系为:(2)其中y(n)和x(n)分别是输出和输入序列。有限冲激响应滤波器的一种直接型实现,可由式(2)生成,M=5的情况如图2-1(a)所示。其转置,如图2—1(b)所示,是其次个直接型结构。通常一个长度为M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M—1)个双输入加法器来实现.(a)(b)图2—SEQ图2—\*ARABIC1直接型有限冲激响应滤波器结构长度为M的线性相位有限冲激响应滤波器由对称的冲激响应h(n)=h(M-1—n)或反对称的冲激响应h(n)=—h(M-1—n)描述。利用线性相位有限冲激响应滤波器的对称(或反对称)性质,可以将传输函数的直接型实现所需的乘法器总量削减一半。例如,图2-2显示了一个具有对称冲击响应的、长度为7的有限冲激响应传输函数的实现.图2—SEQ图2-\*ARABIC2线性相位有限冲激响应结构三、设计思路:依据课程上老师所讲例题,首先使用matlab计算出符合设计要求的滤波器冲激响应系数。后将整个电路规划为语言编辑和原理图编辑两个单元,其中语言编辑部分负责编辑整个滤波器电路中所需用的单元器件,包括寄存器、加法器、减法器以及乘法器几个单元器件;原理图编辑部分完成单元器件的电气连接工作。整个电路的原理图设置方案如图3—1所示:图3—1滤波器整体设计思路四、设计过程:(一)基于matlab工具的滤波器系数计算:在matlab命令编辑窗口输入Fdatool指令,敲击回车可以打开FilterDesign&AnalysisTool窗口(如图4-1所示),在该工具的帮助下,我们可以完成f。i.r.滤波器系数的计算工作。图4-SEQ图_4-\*ARABIC1FilterDesign&AnalysisTool窗口Fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。designfilter部分主要分为:ResponseType(响应类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。依据本次作业要求,在该选项中选择Lowpass选项。DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevTypei(切比雪夫i型)法、ChebyshevTypeii(切比雪夫ii型)法、Elliptic(椭圆滤波器)法等和FIR滤波器的Equiripple法、Least—squares(最小乘方)法、Window(窗函数)法等多种方法。结合本次作业要求,选择FIR滤波器的窗函数法进行设计.选定窗函数法后,会在右侧消灭Options区域,进行窗函数法相关参量的设置,依据作业要求选择Kaiser窗并设置Beta为:0.5.FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括Specifyorder(指定阶数)和Minimumorder(最小阶数)。在Specifyorder中填入所要设计的滤波器的阶数(n阶滤波器,specifyorder=n-1),如果选择Minimumorder则matlab依据所选择的滤波器类型自动使用最小阶数。本次作业要求设计16阶滤波器,所以选定Specifyorder并填入15。FrenquencySpecifications选项,可以简略定义频带的各参数,包括采样频率Fs和频带的截止频率.它的简略选项由ResponseType选项和DesignMetho选项决定。我们要求的Lowpass(低通)滤波器只需要定义Fs、Fc。采纳窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。MagnitudeSpecifications选项,可以定义幅值衰减的情况。采纳窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义.本次作业中的参数设定结果如图4—2所示。图4—SEQ图_4—\*ARABIC2滤波器参数设定结果参数设定完毕,单击工具窗口下方的DesignFilter按钮,开头进行相关参数计算。在计算结果中我们可以看到该滤波器的一些相关曲线,如幅频响应(如图4-3)、相频响应(如图4-4)、冲激响应(如图4—5)等以及简略的系数值(如图4-6).图4-SEQ图_4-\*ARABIC3幅频响应图4—SEQ图_4—\*ARABIC4相频响应图4—SEQ图_4-\*ARABIC5冲激响应图4—SEQ图_4—\*ARABIC6所设计滤波器冲激系数计算的结果可通过File下拉菜单中的Export命令取出,点击Export打开Export对话框(如图4-7),点击OK按钮可将滤波器系数数据存放到当前工作空间,并以Num命名。图4-SEQ图_4—\*ARABIC7冲激系数输出对话框保存并关闭滤波器设计分析工具回到matlab主窗口,在命令编辑区输入Num可得到工具的计算结果(如图4-8)。图4—SEQ图_4-\*ARABIC8输出在matlab的冲激系数对FIR滤波器的系数进行调整,做整数化操作(如图4-9)。可得到滤波器整数化的系数为[-31—88—106-547023940149949940123970-54-106-88-31]图4—SEQ图_4—\*ARABIC9整数化后的冲激系数(二)单元器件的语言编辑:1、寄存器模块寄存器用于寄存一组二值代码,只要求它们具有置1、置0的功能即可.在本设计中用D触发器组成寄存器,实现寄存功能。本设计中使用带异步复位rst端的D触发器,当rst=1时,输出信号q=0,当rst=0且上升沿脉冲到达时q=d.程序代码如下:-——————————————-——LIBRARYieee;USEieee。std_logic_1164。all;--————-—-——-——-————-—-—-—-—ENTITYdff16ISPORT(rst,clk:INSTD_LOGIC;d:INSTD_LOGIC_VECTOR(9DOWNTO0);q:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDdff16;——-——--——--——-————————-—ARCHITECTUREdff16OFdff16ISBEGINPROCESS(rst,clk)BEGINIF(rst=’1')THENq<=(OTHERS=>’0');ELSIF(clk’EVENTANDclk=’1’)THENq<=d;ENDIF;ENDPROCESS;ENDdff16;—-—--—-—--——————仿真结果如图4-10所示:图4—SEQ图_4-\*ARABIC10寄存器仿真结果2、加法器模块实现两个有符号数的相加运算.即将输入的两数,在时钟脉冲到来时相加运算,输出结果。在本设计中共有8个两个10位有符号数相加产生一个11位有符号数的加法器、一个18位和19位有符号数相加产生20位有符号数的加法器、一个两个20位有符号数相加产生一个21位有符号数的加法器、一个两个19位有符号数相加产生一个20位有符号位数的加法器、一个20位和21位有符号数相加产生22位有符号数的加法器,以及一个20位和22位有符号数相加产生23位有符号数的加法器电路.其中一个20位和22位有符号数相加产生23位有符号数的加法器电路为最后一级,所以在加法器电路中在引入低位舍去功能只保留最终10位输出,最终保留10位输出采纳了直接取输出23位数的高十位的方法,因此在输出中近似等于除掉了2^13即8192以后的结果.10位有符号数相加产生一个11位有符号数的加法器设计:————--—--——--—--———LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith。all;—-—-——-—--—-—--——ENTITYsum101011ISPORT(a,b:INSIGNED(9DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(10DOWNTO0));ENDSUM101011;—-—-—-———-————-———ARCHITECTUREsum101011OFsum101011ISBEGINPROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENs<=(a(9)&a)+(b(9)&b);ENDIF;ENDPROCESS;ENDsum101011;——--—-———-———-———-————仿真结果如图4—11所示:图4—SEQ图_4-\*ARABIC11两10位相加产生11位加法器仿真结果18位和19位有符号数相加产生20位有符号数的加法器设计:-———-——-—--——-—--———-—LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith。all;———-——-——--——-—ENTITYsum7023918ISPORT(a:INSIGNED(17DOWNTO0);b:INSIGNED(18DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(19DOWNTO0));ENDsum7023918;——-—--—————--—-ARCHITECTUREsum7023918OFsum7023918ISBEGINPROCESS(clk)BEGINIF(clk’EVENTANDclk=’1')THENs〈=(a(17)&a(17)&a)+(b(18)&b);ENDIF;ENDPROCESS;ENDsum7023918;--———--——-—-—-—-———-——仿真结果如图4-12所示:图4—SEQ图_4—\*ARABIC1218位19位相加产生20位数仿真结果两个20位有符号数相加产生一个21位有符号数的加法器设计:-—-——--——--————-———LIBRARYieee;USEieee.std_logic_1164。all;USEieee.std_logic_arith。all;-———————--——--—ENTITYsum40149919ISPORT(a:INSIGNED(19DOWNTO0);b:INSIGNED(19DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(20DOWNTO0));ENDsum40149919;-————--——————-ARCHITECTUREsum40149919OFsum40149919ISBEGINPROCESS(clk)BEGINIF(clk’EVENTANDclk=’1’)THENs〈=(a(19)&a)+(b(19)&b);ENDIF;ENDPROCESS;ENDsum40149919;————-—-——-—-—-——-仿真结果如图4-13所示:图4-SEQ图_4—\*ARABIC13两20位相加产生21位数仿真结果两个19位有符号数相加产生一个20位有符号位数的加法器设计:-——-—-———-—--—-—LIBRARYieee;USEieee。std_logic_1164.all;USEieee.std_logic_arith.all;——-——-—-————-————-——-—ENTITYsum181819ISPORT(a:INSIGNED(18DOWNTO0);b:INSIGNED(18DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(19DOWNTO0));ENDsum181819;————————--——-——-—-ARCHITECTUREsum181819OFsum181819ISBEGINPROCESS(clk)BEGINIF(clk’EVENTANDclk=’1')THENs〈=(a(18)&a)+(b(18)&b);ENDIF;ENDPROCESS;ENDsum181819;———--——--—-—-——-———--—仿真结果如图4—14所示:图4—SEQ图_4—\*ARABIC14两19位相加产生20位数仿真结果20位和21位有符号数相加产生22位有符号数的加法器:————--——————-—-———LIBRARYieee;USEieee。std_logic_1164.all;USEieee。std_logic_arith。all;—————-————————————-ENTITYsum192021ISPORT(a:INSIGNED(19DOWNTO0);b:INSIGNED(20DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(21DOWNTO0));ENDsum192021;--——-—————-———ARCHITECTUREsum192021OFsum192021ISBEGINPROCESS(clk)BEGINIF(clk’EVENTANDclk=’1’)THENs〈=(a(19)&a(19)&a)+(b(20)&b);ENDIF;ENDPROCESS;ENDsum192021;--————————-——-—仿真结果如图4—15所示:图4-SEQ图_4-\*ARABIC1520位和21相加产生22位数仿真结果20位和22位有符号数相加产生23位有符号数的加法器电路设计(最后一级带舍位):-—-—-—-—-—--—————-—-—-LIBRARYieee;USEieee.std_logic_1164。all;USEieee。std_logic_arith。all;—-—--—--—-———--——-— ENTITYsum192110ISPORT(a:INSIGNED(19DOWNTO0);b:INSIGNED(21DOWNTO0);clk:INSTD_LOGIC;s:OUTSIGNED(9DOWNTO0));ENDsum192110;--—--—-—————--ARCHITECTUREsum192110OFsum192110ISBEGINPROCESS(clk)VARIABLEc:SIGNED(22DOWNTO0);BEGINIF(clk'EVENTANDclk='1’)THENc:=(a(19)&a(19)&a(19)&a)+(b(21)&b);ENDIF;s<=c(22DOWNTO13);ENDPROCESS;ENDsum192110;—-———--——仿真结果如图4—16所示:图4—SEQ图_4—\*ARABIC1620位22位相加产生被截短的10位数仿真结果3、减法器模块:实现零值减去两个有符号数的减法运算。即用零值减去输入的两数,在时钟脉冲到来时做减法运算,输出结果。—31和—88的乘结果都只包含了乘系数31和88的数值,并没有将两个负号代入,所以两乘法器后面的加法器运算改为减法器模块,采纳0-31*累加结果-88*累加结果的方法,实现(-31)*累加结果+(-88)*累加结果的计算。-106和-54后面的加法器采纳同样的方式处理.—31和—88的减法器设计:—————-————-—LIBRARYieee;USEieee。std_logic_1164。all;USEieee。std_logic_arith.all;-———-—--—————ENTITYsub318817isPORT(clk:inSTD_LOGIC;Din1:insigned(15downto0);Din2:insigned(17downto0);Dout:outsigned(18downto0));ENDsub318817;——-———————-—--ARCHITECTUREsub318817ofsub318817ISSIGNALs1:signed(17downto0):=(Din1(15)&Din1(15)&Din1);SIGNALs2:signed(18downto0):=(OTHERS=>'0');BEGINPROCESS(Din1,Din2,clk)BEGINIFclk'eventandclk='1'THENDout<=s2-Din2-s1;ENDIF;ENDPROCESS;ENDsub318817;————--—--—-—————-仿真结果如图4-17所示:图4-SEQ图_4—\*ARABIC17—31和—88减法器的仿真结果—106和-54的减法器的设计:——-——-————-——-————--LIBRARYieee;USEieee.std_logic_1164。all;USEieee。std_logic_arith.all;————————-——-—ENTITYsub1065417isPORT(clk:inSTD_LOGIC;Din1:insigned(17downto0);Din2:insigned(16downto0);Dout:outsigned(18downto0));ENDsub1065417;——-———-—-————-ARCHITECTUREsub1065417ofsub1065417ISSIGNALs1:signed(17downto0):=(Din2(16)&Din2);SIGNALs2:signed(18downto0):=(OTHERS=>’0');BEGINPROCESS(Din1,Din2,clk)BEGINIFclk’eventandclk='1'THENDout<=s2—Din1—s1;ENDIF;ENDPROCESS;ENDsub1065417;—-————--———-————-仿真结果如图4—18所示:图4—SEQ图_4—\*ARABIC18—106和-54减法器的仿真结果4、乘法器模块:从资源和速度考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幂的和形式。滤波器系数分别为—31、—88、-106、-54、70、239、401、499、499、401、239、70、-54、-106、-88、—31。算法:其中带负号数先乘去负号的整数部分,在后面的求和中做减法运算.编码方式如下:31被编码为2^5—2^0、88被编码为2^6+2^4+2^3、106被编码为2^6+2^5+2^3+2^1、54被编码为2^6-2^3—2^1、70被编码为2^6+2^2+2^1、239被编码为2^8—2^4-2^0、401被编码为2^9-2^7+2^4+2^0、499被编码为2^9-2^3-2^2—2^0。实现输入带符号数据与固定数据两个二进制数的乘法运算.当到达时钟上升沿时,将两数输入,运算并输出结果。乘31电路设计:-———-——-——--—————-—LIBRARYieee;USEieee。std_logic_1164.all;USEieee。std_logic_arith.all;——--—--—--—--—ENTITYmult31ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(15DOWNTO0));ENDmult31;--—--—————--——-——-—ARCHITECTUREmult31OFmult31ISSIGNALs1:SIGNED(15DOWNTO0);SIGNALs2:SIGNED(10DOWNTO0);SIGNALs3:SIGNED(15DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1〈=Din&"00000";s2〈=Din;IF(Din(10)=’0')THENs3〈=('0’&s1(14downto0))—("00000”&s2(10DOWNTO0));ELSEs3<=(’1'&s1(14downto0))-("11111"&s2(10DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s3)BEGINIFclk’EVENTANDclk='1’THENDout<=s3;ENDIF;ENDPROCESS;ENDmult31;-——-——-——--—-—--—--—--仿真结果如图4—19所示:图4—SEQ图_4—\*ARABIC19乘31仿真结果乘88电路设计:———-——-———-——-——-——LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith。all;--—--——-———ENTITYmult88ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(17DOWNTO0));ENDmult88;—--——-———————--—-—-———ARCHITECTUREmult88OFmult88ISSIGNALs1:SIGNED(16DOWNTO0);SIGNALs2:SIGNED(14DOWNTO0);SIGNALs3:SIGNED(13DOWNTO0);SIGNALs4:SIGNED(17DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1〈=Din&"000000";s2<=Din&"0000”;s3<=Din&”000";IF(Din(10)='0’)THENs4〈=('0'&s1(16downto0))+("000”&s2(14DOWNTO0))+("0000”&s3(13DOWNTO0));ELSEs4〈=(’1'&s1(16downto0))+(”111”&s2(14DOWNTO0))+("1111"&s3(13DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s4)BEGINIFclk’EVENTANDclk=’1’THENDout〈=s4;ENDIF;ENDPROCESS;ENDmult88;—-———--————--————仿真结果如图4—20所示:图4—SEQ图_4—\*ARABIC20乘88仿真结果乘106电路设计:—--——-—-———-—-———--LIBRARYieee;USEieee。std_logic_1164。all;USEieee。std_logic_arith.all;--——--—-————-———-—--——ENTITYmult106ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(17DOWNTO0));ENDmult106;———-————-—————-——-—ARCHITECTUREmult106OFmult106ISSIGNALs1:SIGNED(16DOWNTO0);SIGNALs2:SIGNED(15DOWNTO0);SIGNALs3:SIGNED(13DOWNTO0);SIGNALs4:SIGNED(11DOWNTO0);SIGNALs5:SIGNED(17DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3,s4)BEGINs1〈=Din&"000000”;s2〈=Din&"00000”;s3<=Din&”000”;s4<=Din&'0';IF(Din(10)='0’)THENs5〈=(’0'&s1(16downto0))+("00"&s2(15DOWNTO0))+("0000”&s3(13DOWNTO0))+(”000000"&s4(11DOWNTO0));ELSEs5〈=('1’&s1(16downto0))+("11”&s2(15DOWNTO0))+(”1111"&s3(13DOWNTO0))+("111111”&s4(11DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s5)BEGINIFclk'EVENTANDclk='1'THENDout〈=s5;ENDIF;ENDPROCESS;ENDmult106;———--——--———--————--—-仿真结果如图4—21所示:图4—SEQ图_4—\*ARABIC21乘106仿真结果乘54电路设计:—-————————-LIBRARYieee;USEieee。std_logic_1164.all;USEieee.std_logic_arith。all;—————-——--—-———-—--ENTITYmult54ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(16DOWNTO0));ENDmult54;—-——--—————-—-—————-——ARCHITECTUREmult54OFmult54ISSIGNALs1:SIGNED(16DOWNTO0);SIGNALs2:SIGNED(13DOWNTO0);SIGNALs3:SIGNED(11DOWNTO0);SIGNALs4:SIGNED(16DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1<=Din&”000000";s2〈=Din&”000";s3<=Din&'0’;IF(Din(10)=’0')THENs4〈=('0'&s1(15downto0))—(”00"&s2(13DOWNTO0))—("0000"&s3(11DOWNTO0));ELSEs4〈=(’1'&s1(15downto0))-("11”&s2(13DOWNTO0))-(”1111”&s3(11DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s4)BEGINIFclk’EVENTANDclk=’1’THENDout〈=s4;ENDIF;ENDPROCESS;ENDmult54;—--———-———仿真结果如图4-22所示:图4—SEQ图_4—\*ARABIC22乘54仿真结果乘70电路设计:—--——-———--—-LIBRARYieee;USEieee.std_logic_1164.all;USEieee。std_logic_arith.all;——-——-———-————ENTITYmult70ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(17DOWNTO0));ENDmult70;-—-———-——--————-—-—ARCHITECTUREmult70OFmult70ISSIGNALs1:SIGNED(16DOWNTO0);SIGNALs2:SIGNED(12DOWNTO0);SIGNALs3:SIGNED(11DOWNTO0);SIGNALs4:SIGNED(17DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1<=Din&"000000”;s2〈=Din&”00";s3<=Din&'0’;IF(Din(10)='0')THENs4<=(’0’&s1(16downto0))+(”00000"&s2(12DOWNTO0))+(”000000”&s3(11DOWNTO0));ELSEs4<=('1’&s1(16downto0))+(”11111”&s2(12DOWNTO0))+(”111111”&s3(11DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s4)BEGINIFclk'EVENTANDclk='1’THENDout〈=s4;ENDIF;ENDPROCESS;ENDmult70;--—-———-———-仿真结果如图4-23所示:图4-SEQ图_4—\*ARABIC23乘70仿真结果乘239电路设计:—-——————--——-—-—LIBRARYieee;USEieee。std_logic_1164.all;USEieee.std_logic_arith。all;-————--————-———————ENTITYmult239ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(18DOWNTO0));ENDmult239;———--——-—-——--——--—ARCHITECTUREmult239OFmult239ISSIGNALs1:SIGNED(18DOWNTO0);SIGNALs2:SIGNED(14DOWNTO0);SIGNALs3:SIGNED(10DOWNTO0);SIGNALs4:SIGNED(18DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1<=Din&"00000000";s2<=Din&"0000”;s3<=Din;IF(Din(10)='0')THENs4<=('0'&s1(17downto0))—(”0000"&s2(14DOWNTO0))-(”00000000"&s3(10DOWNTO0));ELSEs4<=('1’&s1(17downto0))—(”1111”&s2(14DOWNTO0))-("11111111"&s3(10DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s4)BEGINIFclk'EVENTANDclk=’1’THENDout〈=s4;ENDIF;ENDPROCESS;ENDmult239;———--—-——-——--——仿真结果如图4-24所示:图4—SEQ图_4—\*ARABIC24乘239仿真结果乘401电路设计:—--———-——-—-—--—-—————LIBRARYieee;USEieee.std_logic_1164。all;USEieee。std_logic_arith。all;—--——-————-—--ENTITYmult401ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(19DOWNTO0));ENDmult401;——-——-——-—————-——--ARCHITECTUREmult401OFmult401ISSIGNALs1:SIGNED(19DOWNTO0);SIGNALs2:SIGNED(17DOWNTO0);SIGNALs3:SIGNED(14DOWNTO0);SIGNALs4:SIGNED(10DOWNTO0);SIGNALs5:SIGNED(19DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3,s4)BEGINs1<=Din&"000000000”;s2〈=Din&”0000000";s3〈=Din&”0000";s4<=Din;IF(Din(10)='0’)THENs5<=(’0’&s1(18downto0))—(”00”&s2(17DOWNTO0))+("00000"&s3(14DOWNTO0))+(”000000000”&s4(10DOWNTO0));ELSEs5〈=(’1’&s1(18downto0))—(”11”&s2(17DOWNTO0))+(”11111”&s3(14DOWNTO0))+(”111111111"&s4(10DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s5)BEGINIFclk'EVENTANDclk='1’THENDout<=s5;ENDIF;ENDPROCESS;ENDmult401;——--—-—-—-——-————--—-—仿真结果如图4—25所示:图4-SEQ图_4—\*ARABIC25乘401仿真结果乘499电路设计:—-—————--———————--—LIBRARYieee;USEieee.std_logic_1164。all;USEieee。std_logic_arith。all;—————--——-—-——————--—-ENTITYmult499ISPORT(clk:INSTD_LOGIC;Din:INSIGNED(10DOWNTO0);Dout:OUTSIGNED(19DOWNTO0));ENDmult499;—-—-——-——-———-—--—--—-ARCHITECTUREmult499OFmult499ISSIGNALs1:SIGNED(19DOWNTO0);SIGNALs2:SIGNED(13DOWNTO0);SIGNALs3:SIGNED(12DOWNTO0);SIGNALs4:SIGNED(10DOWNTO0);SIGNALs5:SIGNED(19DOWNTO0);BEGINA1:PROCESS(Din,s1,s2,s3,s4)BEGINs1〈=Din&"000000000”;s2<=Din&”000";s3<=Din&”00";s4〈=Din;IF(Din(10)=’0’)THENs5〈=(’0'&s1(18downto0))-("000000”&s2(13DOWNTO0))-("0000000"&s3(12DOWNTO0))—("000000000"&s4(10DOWNTO0));ELSEs5〈=('1’&s1(18downto0))—(”111111”&s2(13DOWNTO0))-("1111111”&s3(12DOWNTO0))—("111111111”&s4(10DOWNTO0));ENDIF;ENDPROCESS;A2:PROCESS(clk,s5)BEGINIFclk'EVENTANDclk='1'THENDout<=s5;ENDIF;ENDPROCESS;ENDmult499;———-———-——————-—仿真结果如图4—26所示:图4-SEQ图_4-\*ARABIC26乘499仿真结果(三)原理图编辑将语言编辑的单元器件分别创建元件,将元器件按设计思路中的图3—1连接搭建成整体的滤波器电路.其中clk和rst信号采纳了总线名称的连接方式。原理图电路编辑结果如图4—27所示:图4—SEQ图_4—\*ARABIC27滤波器原理图编辑结果为了与matlab的conv函数结果做比对在输出端额外引入了s输出端口,用来显示无截短的滤波器输出结果(23位).仿真结果如图4—28所示:图4-SEQ图_4—\*ARABIC28滤波器仿真结果(四)仿真结果验证:利用matlab的conv函数可以验证FIR滤波器卷积的结果,在表4-1中通过比对来进行对结果的说明。随机输入序列[—454,-39,55,463,—331,-52,128,26]。表4—SEQ表\*ARABIC1仿真结果验证滤波器仿真无截短输出23位conv函数输出滤波器仿真截断输出10位conv函数除2^13(8196)14074
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汕尾职业技术学院《科学计算与数据可视化》2023-2024学年第一学期期末试卷
- 公司租赁员工合同范例
- 2024年珠宝翻新修复服务合同3篇
- 租赁合同范例与
- 法律英文合同范例
- 2024至2030年无热再生吸附式压缩空气干燥机项目投资价值分析报告
- 陕西学前师范学院《热力涡轮机械原理》2023-2024学年第一学期期末试卷
- 私人住宅租房合同范例
- 2024年高效复式真空滤油机项目可行性研究报告
- 增资扩股服务合同范例
- 纪检监察干部实务培训
- 3.1《中国科学技术史序言(节选)》课件
- 旅游业VR体验馆建设与管理计划
- 2024-2025学年北师大版小学五年级上学期期末英语试题及答案指导
- 语文修辞-【专练02】 修辞手法考点专训(表达效果 主观题1)(教师版)
- 奖牌设计 课件 2024-2025学年人教版(2024)初中美术七年级上册
- 第六单元(整体教学课件)七年级语文上册大单元教学名师备课系列(统编版2024)
- 幼儿园聘用人员管理制度
- (新版)中级制鞋工技能鉴定理论考试题库大全-上(单选题)
- 信息系统安全措施应急处理预案模版(四篇)
- 女生穿搭技巧学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论