基于FPGA的FIR滤波器设计_第1页
基于FPGA的FIR滤波器设计_第2页
基于FPGA的FIR滤波器设计_第3页
基于FPGA的FIR滤波器设计_第4页
基于FPGA的FIR滤波器设计_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

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

文档简介

1、基于FPGA勺FIR滤波器设计、设计目的为了帮助学生深入理解和消化基本理论、进一步提高综合使用能力并且锻炼 独立解决问题的能力,我们将数字信号处理、集成电路原理和使用和FPGA 系统设计和使用几门课程融合在一起开设的FPGAg合实验课程设计。本次完成的是利用FPG外完成FIR滤波器的设计、程序设计和实验调试任务。二、设计要求(1)基本要求利用所学知识,采用 VHDL语言完成FIR滤波器的设计仿真。要求用 VHDL 编程设计底层文件,顶层文件可任意(可用原理图方式或文本方式);完成仿真文件(包括MATLAB口 QUARTUSI两种仿真)并对其结果比较。具体设计指标如下:(1)采样频率0=80KH

2、z ;(2)截止频率Fc =10KHz .(3)输入序列为10位(最高位为符号位);(4)窗口 类型为 kaiser 窗,=0.5 ;(5)滤波器长度为16 ;(6)输出结果保留10位。(2)提高部分根据所学知识,设计出一个具有频率控制功能DDS要求输出频率分别为10KHz和100KHz将输出的两路数字信号进彳T叠加,并通过所设计的FIR滤波器进行滤波,将滤波输出的数字信号通过 D/A转换电路输出波形,并用示波器 观察输出波形,并完成测试结果分析。结构框图如图1-1所示。图2-1整体结构框图三、设计原理3.1 FIR滤波器由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全 可以

3、表征系统。当我们处理有限的离散数据时, 线形系统的响应(包括对冲击的 响应)也是有限的。若线性系统仅是一个空间滤波器,则通过简单地观察它对冲 击的响应,我们就可以完全确定该滤波器。通过这种方式确定的滤波器称为有限 冲击响应(FIR)滤波器。3.2 线性FIR滤波器原理FIR滤波器响应(简称FIR)系统的单位脉冲响应h(n)为有限长序列,系统 函数H(z)在有限z平面上不存在极点,其运算结构中不存在反馈支路,即没有环路。如果h(n)的长度为N,则它的系统函数和差分方程一般N 1H(z)=£ h(n)z 八有如下形式:n 0N 1y(n) = " h(m)x(n -m) m =

4、0根据差分方程直接画出FIR滤波器的结构,称为直接型结构。如图3-1所示:图3-1 FIR滤波器直接结构FIR滤波器的特点:单位脉冲响应序列为有限个;可快速实现;可得到线性 相位;滤波器阶数较高。对线性时不变系统保持线性相位的条件是:单位脉冲响应为偶对称或奇对称。即:为设计线性滤波器,应保证h(n)为对称的。0 n : 0 h(n)= 若N为偶数,其缕明ft.2IR滤闹的晒结构流图如图3-2所示:图中:“ +1”对应偶对称情况,“ -1 ”对应奇对称情况。当n为奇数 时,支路断开。若N为奇数,其线性相位FIR滤波器的对称结构流图如图3-3:刎图3-3 N为奇数线性相位FIR滤波器的对称结构流图

5、其中y (n)和x (n)分别是输出和输入序列。有限冲激响应滤波器的一种 直接型实现,可由式(2)生成,M=5的情况如图3-4 (a)所示。其转置,如图 3-4 (b)所示,是第二个直接型结构。通常一个长度为 M的有限冲激响应滤波器由M个系数描述,并且需要M个乘法器和(M-1)个双输入加法器来实现图3-4 (a)直接型一长度为M的线性相位有限冲激响应滤波器由对称的冲激响应h(n)= h(M-1-n)或反对称的冲激响应 h (n) =-h (M-1-n)描述。利用线性相位有限冲激响应滤 波器的对称(或反对称)性质,可以将传输函数的直接型实现所需的乘法器总量 减少一半。例如,图3-5显示了一个具有

6、对称冲击响应的、长度为7的有限冲激响应传输函数的实现。四、设计方案因为N=16为偶数,根据老师上课时所讲,可以按照上面第一个原理图设计 滤波器,如图4-1所示。图4-1若N为偶数线性相位 FIR滤波器的对称结构流图本设计取h(n)为偶对称的情况,则图中:应取“+1 ”。由上图可分析得到,要完成滤波器的设计,需要设计的底层文件包括延时单元、加法电路单元、乘以负一单元、乘法器单元及截取10位数单元。由各单元VHD闾程后,生成相应的 符号文件。最后连接成顶层原理图。整个电路的原理图设置方案如图4-2所示:Din9.0d+命段H+中K+曲6-1-1-1-1-1-1-1<-< -<4-

7、<44<1z z z z z Z 厂 z图4- 2滤波器整体设计方案原理图五、设计内容及结果分析首先使用matlab计算出符合设计要求的滤波器冲激响应系数。后将整个电 路规划为语言编辑和原理图编辑两个单元,其中语言编辑部分负责编辑整个滤波 器电路中所需用的单元器件,包括寄存器、加法器、减法器以及乘法器几个单元 器件;最后将所有的器件连接成顶层原理图。在进行编译及仿真。5.1基于matlab的FIR滤波器系数计算在matlab命令编辑窗口输入 Fdatool指令,再点回车即可打开FilterDesign & Analysis Tool 窗口,在该工具的帮助下,我们就可以完成f

8、.i.r. 滤波器系数的计算。Fdatool界面总共分两大部分,一部分是 design filter ,在 界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的 上半部分,用来显示滤波器的各种特性。design filter部分主要分为:ResponseType (响应类型)选项,包括Lowpass (低通)、Highpass (高通)、 Bandpass (带通)、Bandstop (带阻)和特殊的滤波器。根据本次作业要求,在 该选项 中选择 Lowpass选项。Design Method (设计方法)选项,包括 IIR 滤波器的Butterworth (巴特沃思)法、Ch

9、ebyshev Type i (切比雪夫 i 型)法、Chebyshev Type ii (切比 雪夫ii型)法、Elliptic (椭圆滤波器)法等和 Window (窗函数)法等多种 方法。结合本次课设要求,选if¥ FIR滤波器的窗函数法进行设计。 选定窗函数法 后,会在右侧出现Options区域,进行窗函数法相关参量的设置, 根据作业要求 选择Kaiser窗并设置Beta为:0.5。Filter Order (滤波器阶数)选项,定义滤波器的阶数,包括Specify order (指定阶数)和 Minimum order (最小阶数)。在Specify order 中填入所要设

10、 计的滤波器的阶数(n阶滤波器,specify order =n-1 ),如果选择 Minimumorder 则matlab根据所选择的滤波器类型自动使用最小阶数。本次作业要求设计16阶滤波器,所以选定Specify order 并填入15Frenquency Specifications 选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Response Type选项和Design Metho选项决定。我们要求的Lowpass (低通)滤波器只需要定义 Fs=80 KH乙Fc=10 KHz.本次课设中的参数全部设定后的结果如图5-1所示。4 Filter Pc

11、sign & Analrsi3 Tool - Fimt itlcdr fda *心间区 目底 为向如反 亡I艮I 国田碧电田广展国回 中CLtrert Filler hiomiBtioniFlter 等led配的onsSlructi/e.IDired-Fartn FfiOrcter:50写 WuYmSeuree:Defilried旧加I+Store Fiter .DFiler Manag三r .FsZ2 f(ltHi)图5-1 参数全部设定后图Ready参数设定完毕,单击工具窗口下方的 Design Filter按钮,就开始进行相关参数计算。在计算结果中可以看到该滤波器的一些相关曲线,

12、如幅频响应(如图5-2)、相频响应(如图5-3)、冲激响应(如图5-4)等。图形如下幻曲直,J Fil Lei Dexiih I XmLyxia Tual 一 I unL 1E Ic-d. Cda tJE*iib 工乜t qu)rxi e Tual1口 tihHhLp方。当Di阳用FX七酩曰口旧点去口厂口目口国日电CKl-FfflTFF 15ViMDnvwaFeRQ Ijbfi .iDbcmfrifts F tiiai. Oons-图5-2幅频响应曲线OrSec 15Swm C'wirefi-> fl Itei Bedi pi An.41 j0i s: To*l J unt it

13、Xc-d. fd& aEil» tEiicahiL 的i靠上口白口百正田月父力 E §! t HI j曰了国目一口mrt Ffl rr Esrufan _ HtSSifr 由gxmt图5-3相频响应曲线图5-4冲激响应计算的结果可通过File下拉菜单中的Export命令取出,点击Export打开 Export对话框(如图5-5),点击Export按钮可将滤波器系数数据存放到当前工 作空间,并以Nu*名。图5-5冲激系数输出对话框保存并关闭滤波器设计分析工具回到matlab主窗口,在命令编辑区输入Num可得到工具的计算结果(如图5-6)。» NwnColum

14、ns 1 through 8-0.0153-0.D432-0.0517-0.02650.03430.116S0. 19560.2436Columns 9 throueh 16Q. 2430 0B IS56 0. 11630. Q343-Q. 0统5-Q.Q517-0JQL53图5-6输出在matlab的冲激系数对FIR滤波器的系数进行调整,做整数化操作。可得到滤波器整数化的系数 为卜31 -88 -106 -54 70 239 401 499 499 401 239 70-54 -106 -88 -31,如图 5-7 所示:>> round (Bim* (2 11)-31=88 =

15、106-54702394D149949940123970-54 -106Coliwns 15 through 16-88=31图5-7 整数化后的冲激系数5.2单元器件的编辑及仿真5.2.1、 寄存器模块在本次课设中延迟单元可用寄存器来替代,寄存器用于寄存一组二值代码,触发器,当rst=1只要求它们具有置1、置0的功能即可。在本设计中使用带异步复位 rst端白D时,输出信号q=0,当rst=0且上升沿脉冲到达时q=d,即延迟了一个在周期其程序代码如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY jicunqi ISPORT (rst,clk:

16、 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 ISPROCESS (rst,clk)BEGINIF(rst='1')THENq<=(OTHERS=>'0');ELSIF(clk'EVENT ANDclk='1')THENq<=d;END IF;END PROCESS;END dff16;BEGIN图5-8寄存器模块仿

17、真结果由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-9所示图5-9 寄存器元件图5.2.2、 加法器模块即实现两个有符号数的相加运算。即将输入的两数,在时钟脉冲到来时相加 运算,输出结果。在本设计中共有 8个:两个10位有符号数相加产生一个11位有符号数的加法器、一个18位和19位有符号数相加产生20位有符号数的加法器、一个两个20位有符号数相加产生 一个21位有符号数的加法器、一个两个 19位有符号数相加产生一个20位有符号位数的加法器、一个20位和21位有符号数相加产生22位有符号数的加法器, 以及一个20位和22位有符号数相加产生23位有符号数的加

18、法器电路。具体如下:两个10位有符号数相加产生一个 由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add101011 ISPORT(a,b: IN SIGNED(9 DOWNTO 0);clk: IN STD_LOGIC;s:OUT SIGNED(10 DOWNTO 0);END add101011;ARCHITECTURE sum101011 OF add101011程序编译后就可进行仿真,仿真结果如图11位有符号数的加法器设计:ISBEGINPROCESS(cl

19、k)BEGINIF(clk'EVENT AND clk='1')THEN s<=(a(9)&a)+(b(9)&b);END IF;END PROCESS;END sum101011;5-10所示:C:47.G n? Inrleivat47.6 ns Slait40 ¥1a*邛 *E 酬一呵。n3绝也上S1a_1M-P19Q-。严图5-10 两个10位有符号数相加结果波形图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-11所示addlOIOI1图5-11两个10位有符号数相加元件图18位和19位有符号

20、数相加产生 由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add181920 ISPORT(a: IN SIGNED(17 DOWNTO 0);b: IN SIGNED(18 DOWNTO 0);20位有符号数的加法器设计:clk: IN STD_LOGIC;s:OUT SIGNED(19 DOWNTO 0);END add181920;ARCHITECTURE sum7023918 OFadd181920 ISBEGINPROCESS(clk)BEGINIF(cl

21、k'EVENT AND clk="1")THEN二ips 10. 0 4±0ns 30. 0D5 4。. 口m 50. Dns &0.0ns 7Q.0 ns 90. 0 ns 90. 0 ns 100.0ms 110. Dks一j.一A.Ji更jc匚D pi:107 X"驾我二晒门一曰跟.X 型1羽 工一w】/X"声|曳.用两个20位有符号数相加产生一个由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY a

22、dd202021 ISPORT(a: IN SIGNED(19 DOWNTO 0);b: IN SIGNED(19 DOWNTO 0);clk: IN STD_LOGIC;s:OUT SIGNED(20 DOWNTO 0);END add202021;ARCHITECTURE sum40149919 OF21位有符号数的加法器设计:add202021 ISBEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk="1")THEN s<=(a(19)&a)+(b(19)&b);END IF;END PROCESS;EN

23、D sum40149919;END IF;END PROCESS;END sum7023918;s<=(a(17)&a(17)&a)+(b(18)&b);程序编译后就可进行仿真,仿真结果如图5-12所示:0 pi.就et31 43 mHe旧M:丁SW:End.【£州4Tt X?瑞噩 M77琼丽X7刁的丽X 简"入北I呢 X 式。乔工:第H0 )-阻叮16TL喇飞笈2SBE")g丽 :0而4gsM为桀6弼_ 42加帐6T 回话550 LZ86TE图5-1218位和19位有符号数相加结果波形图由上图可知,和预期相符,即设计正确,再将其生成

24、为一个元件以便后来调 用,其生成图如图5-13所示 ! ti ! it ! htbbhbb :( r b it i,« itb i add1819201i;1 矶亿,0st19.O T一叩区.i !:inst)ibl I )« 1!« !(! Bld ail I i>& I il M Ki I d »1 I 品图5-1318位和19位有符号数相加元件图程序编译后就可进行仿真,仿真结果如图 5-14所示:耳Li2题.Q as如p nt60. y M&.Q AE100.0 AS120 p M3 P/1峥。clk j_r_r_th1-1_

25、11_1_1_11_1_1_11_UriHl .回b 国=:1366 I况1陆 工7£的1£工-弓11”。工-£5为5;(T&SSTK-Bao”工-2*qT2X "4051 乂7吧的口乂4才35匕 1加州孔 淮必iZZ:T*265X3双?9 XTLB2RL X ST6 :K:刃口1 机1 :门99的;3W-4】1135,3506咫 XSI立 工31】前2 X-眨非LT 工T3311乂 r30羽花如43'I -425912 707795 乂7849到 X-3宜53 工 35歼55 犬423口36丫 4EB5 Y2BL655ZE63X -45

26、5B0D X-66Bia7 X 3T22E1 犬3331E> Ma&li Time Bar0 pi J BoHter:籁65n$ Intav 46.65 m Staci:EHA英晶图5-14 两个20位有符号数相加结果波形图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-15所示ISBEGINPROCESS(clk)BEGIN图5-15两个20位有符号数相加元件图 两个19位有符号数相加产生一个20位有符号位数的加法器设计:由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee

27、.std_logic_arith.all;ENTITY add191920 ISARCHITECTURE sum181819 OF add191920程序编译后就可进行仿真,仿真结果如图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;IF(clk'EVENT AND clk='1')THEN s<=(a(18)&a)+(b(18)&b);END IF;END PROCE

28、SS;END sum181819;5-16所示:A亮曳Muslei Time Bdth国 小 | Pohtef 咨而 n- Irtavd; 45 76 ns Sterh:TBS56T X 3183E )1口1156 丫 IT舶H4L% J -M254 丫 TEE033 f 735978 1 -5225 )-沃39&H/不丽恒那 芝期第7敷 班由 敞野1能之淞 鸡的1#f夜死门|熨意-LT愧弼 财图5-16 两个19位有符号数相加结果波形图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调 用,其生成图如图5-17所示:add10192O7-'a18.O$119

29、0' b16 0 j1 elk 3 inst图5-17 两个19位有符号数相加元件图20位和21位有符号数相加产生由分析可写出如下程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY add202122 ISPORT(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 O

30、F add202122程序编译后就可进行仿真,仿真结果如图22位有符号数的加法器:ISBEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THEN s<=(a(19)&a(19)&a)+(b(20)&b);END IF;END PROCESS;END sum192021;5-18所示:片 Mastar Time BarDps 向二门:;24.46 ns Inteivaf:24.nsEndt :A) IE IQ. Q ive 即中 ns 30,0 ns: <0 0 nt W Q ns &

31、0.0. he 丁口 0 ns 即 Q 片£ n11I ii 1r:-3636M 工 73656 K】rBC那 jT2434)-UT63s£ 曲轩蛇 工-44)622g X -MGS68 1IT4用5【 匿 E&& X -35 空加 f 856ad )18】5£B)5T8319匚一网 13to T YEQT 刖 犬-801* 、55洋6钎 nte gM5Bi nor£92425 就默卫TT" 郭公君咻: 舱口眄 曲叔-54263口 *CT近百 渊f-】CI99ia图5-18 20位和21位有符号数相加结果波形图由上图可知,和预期

32、相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-19所示:add 20 2122 1 fi19 .0s21.01b20.0elk in st图5-19 20位和21位有符号数相加元件图(6) 20位和22位有符号数相加产生23位有符号数的加法器电路设计(最后一级带舍位):在此加法器电路中在引入低位舍去功能只保留最终10位输出,最终保留10位输出采用了直接取输出23位数的高十位的方法,因此在输出中近似等于除掉 了 2A13即8192以后的结果。为了比较,特又引出了一个23位全输出引脚(quan) 其程序如下:LIBRARY ieee;USE ieee.std_logic_11

33、64.all;USE ieee.std_logic_arith.all;ENTITY add202223 ISPORT(a: IN SIGNED(19 DOWNTO 0);b: IN SIGNED(21 DOWNTO 0);quan: OUT SIGNED(22 DOWNTO0);clk: IN STD_LOGIC;s:OUT SIGNED(9 DOWNTO 0);END add202223;ARCHITECTURE sum192110 OF add202223程序编译后就可进行仿真,仿真结果如图ISBEGINPROCESS(clk)VARIABLE c:SIGNED(22 DOWNTO 0)

34、;BEGINIF(clk'EVENT AND clk="1")THENc:=(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所示昼 Ma期I Time BarAD pcm. a nz 20.0 nz 3D (?4*5D 0 ns.6DJ?nsTD.a ms: 英讨M白j f E1网elk111 f 1111【1111至1 田.139M3 X -110650_x_一莉的工由 Y -

35、k21T白狗丝 田b7T 割锚X S552X -111 16 的 M 106 口用】_x_呜能iX45 国 quani: 0 y-63fT2S5一* T嬴工-1IE3R 犬 TM 竺 12 工13M5QS41GET 之-R U1T制 烟内1+祥的 S 50 X-73' T1 Y-N& TBS &i&a51F 136 Nmm Pointer18.37 ns IderT:IB 37 nt Btarl:End图5-2020位和22位有符号数相加结果波形图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-21所示;1quan(22.O

36、一七sS.O elk'i Firsthi3MiBMTiuaiiniMii图 5-2120位和22位有符号数相加元件图5.2.3、减法器模块:它实现零值减去两个有符号数的减法运算。即用零值减去输入的两数,在时 钟脉冲到来时做减法运算,输出结果。注意:-31和-88的乘结果都只包含了乘系数 31和88的数值,并没有将两 个负号代入,所以两乘法器后面的加法器运算改为减法器模块,采用 0-31*累加 结果-88*累加结果的方法,实现(-31) *累加结果+ (-88) *累加结果的计算。-106和-54后面的加法器采用同样的方式处理。-31和-88的减法器设计:由分析可写出如下程序:LIBRA

37、RY 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 downto0):=(Din1(15)&Din1(15)

38、&Din1);SIGNAL s2: signed(18 downto 0):=(OTHERS=>'0');BEGINPROCESS(Din1,Din2,clk)BEGINIF clk'event and clk='1' THEN Dout<=s2-Din2-s1;END IF;END PROCESS;END sub318817;程序编译后就可进行仿真,仿真结果如图5-22所示:20 9 159 HS60 9311 ? sl® .n 8gf3 w口 pH J即elk_o_OT_lj-L_r-L_r-L_r_L_rn_r-|_O

39、j-iOr-L2 L Dini-师口 I方元& K釜曲 I期若4 I -陋 1398I汨SQL X短蜉19 X需1羽l 乂仃芮4 1”列的X 2T仲解a LG叵I;76333 X-113472X UT447 X-4L581 X-821 X 15397 工-1O40S 工 73595 X 5txR1 工 IE4sg4 X 7卯的 1110100 X -55603 近&持国 Dout:3 黑:上触;朱;为TE#. 1 /1 3 * 30SZZ * 153J7JI -.3455 (;Ju6L /-£口30束.L IE 旅券 3153 ,归中纪Mailer Tims Bar0

40、的 jJJPbirtei:G2 C rA 茶 氢 电A图5-2231和-88的减法器结果仿真图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-23所示; jien31B8 elk卜口周【15.句 Lpin2T7Q ! inti图5-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

41、 signed (17 downto 0);Din2 :in signed (16 downto 0);Dout :out signed(18 downto 0);END jian10654;ARCHITECTURE sub1065417 of jian10654 ISSIGNAL s1: signed(17 downto 0):=(Din2(16)&Din2);SIGNAL s2: signed(18 downto 0):=(OTHERS=>'0');BEGINPROCESS(Din1,Din2,clk)BEGINIF clk'event and clk

42、='1' THENDout<=s2-Din1-s1;END PROCESS;END IF;END sub1065417;程序编译后就可进行仿真,仿真结果如图5-24所示:4A 英 乳* J Porter25.13 rsInterval25.13nsSlaitEnd:Mbit#RO国口 H可Dia2338回DoulMastei lime 日幽)j>S3 mq 2也.q H 30.92 40,050.060.0 n= T"皿 SO.tf yu.9 n, 100.p w no pI| I-|-I-I II I-I: ESI M叩971宣 厂1139s 厂丽两X

43、1 0ai倒 工431门 X I凝孺 X 91390a总咨246 X 词4货 X a334 冠丽1:X 96TX Z8645X -E3S54-X T1 的9 X 共549 X -2fl3 乔54加工 20ssi图 5-24-106和-54的减法器结果仿真图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-25所示;jianl0054-clk一,Di M 17-0|T Dih2W 0|instDoi41fi Q图 5-25-106和-54的减法器元件图5.24乘法器模块:实现输入带符号数据和固定数据两个二进制数的乘法运算。当到达时钟上开沿时,将两数输入,运算并

44、输出结果。从资源和速度方面考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幕的和形式,然后再分别进行运算。滤波器系数分别为 -31、-88、-106、-54、70、239、401、499、499、401、239、70、-54、-106、-88、-31 o算法:其中带负号数先乘去负号的整数部分, 在后面的求和中做减法运算。编码方式如下:31被编码为 2A5-2A0、88被编码为 2A6+2A4+2A3、106被编码为2A6+2A5+2A3+2A1、54 被编码为 2A6-2A3-2A1、70 被编码为 2A6+2A2+2A1、239被编码为2A8-2A4-2A0、401被编码为2A

45、9-2A7+2A4+2A0、499被编码为2A9-2A3-2A2-2A0。具体如下:乘31电路设计:由分析可写出如下程序:LIBRARY ieee;PORT( clk : IN STD_LOGIC;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult31 ISDin : IN SIGNED (10 DOWNTO 0);Dout : OUT SIGNED (15 DOWNTO0);END mult31;ELSEARCHITECTURE mul31 OF mult31 IS SIGNAL s1 : SIGNED (

46、15 DOWNTO 0); SIGNAL s2 : SIGNED (10 DOWNTO 0); SIGNAL s3 : SIGNED (15 DOWNTO 0); BEGINA1:PROCESS(Din,s1,s2,s3)BEGINs1<=Din&"00000”;s2<=Din;IF (Din(10)='0') THEN s3<=('0'&s1(14 0)-("00000"&s2(10 DOWNTO 0);downtos3<=('1'&s1(14 0)-(&qu

47、ot;11111"&s2(10 DOWNTO 0);END IF;END PROCESS;A2: PROCESS(clk,s3)BEGINIF clk'EVENT AND clk='1' THENDout<=s3;END IF;END PROCESS;downtoEND mul31;程序编译后就可进行仿真,仿真结果如图 5-26所示:ARCHITECTURE mult88 OF mult88 ISSIGNAL s1 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (14 DOWNTO 0);SIGNAL s3

48、: SIGNED (13 DOWNTO 0);SIGNAL s4 : SIGNED (17 DOWNTO 0);BEGINA1:PROCESS(Din,s1,s2,s3)BEGIN图5-26乘31电路结果仿真图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-27所示;i=-irrrrrrr ,rsrsiwMiwiBiBiTifnTiTi'i'THTiTiTi-n1 mult31Euu-elkDoutl5 01Din10 0;instI:、,|iiirqnirq,.,图5-27 乘31电路元件图乘88电路设计:由分析可写出如下程序:LIBRA

49、RY 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;END IF;END PROCESS;A2: PROCESS(clk,s4)BEGINIF clk'EVENT AND clk='1' THENDout<=s4;END IF;END PROCESS;END mu

50、lt88;s1<=Din&"000000”;s2<=Din&"0000"s3<=Din&"000"IF (Din(10)="0") THENs4<=('0'&s1(16 downto 0)+("000"&s2(14 DOWNTO 0)+("0000"&s3(13 DOWNTO 0);ELSEs4<=('1'&s1(16 downto 0)+("111"

51、;&s2(14DOWNTO 0)+("1111"&s3(13 DOWNTO 0);程序编译后就可进行仿真,仿真结果如图 5-28所示:Mastei Time Gv:Ponter:Interval:50.71 mHa.Ti4-20.0 ns40. q its的.。TjEI106. 口34D.O its .leo.d :nxelk3E)口inD»ul_TTTTTTTTTTTTTl_TT rL rT rT rT_m_n_rL rT r*图5-28 乘88电路结果仿真图由上图可知,和预期相符,即设计正确,再将其生成为一个元件以便后来调用,其生成图如图5-2

52、9所示; IIIIJIIIIIIHImult83elkDout17,0 一Din10 0in st5-29 乘88电路元件图图乘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);SIGNAL s3 : SIGNED (13 DOWNTO 0);SIGNAL s4 : SIGNED (11 DOWNTO 0);SIGNAL s5

53、 : SIGNED (17 DOWNTO 0);BEGINA1:PROCESS(Din,s1,s2,s3,s4)BEGINs1<=Din&"000000"s2<=Din&"00000"s3<=Din&"000"s4<=Din&'0'IF (Din(10)="0") THENDout : OUT SIGNED (17 DOWNTO 0);END mult106;ARCHITECTURE mult106 OF mult106 ISSIGNAL s1

54、 : SIGNED (16 DOWNTO 0);SIGNAL s2 : SIGNED (15 DOWNTO 0);s5<=('0'&s1(16 downtoDOWNTO 0)+("0000"&s3(13 DOWNTO 0)+("000000"&s4(11 DOWNTO 0); ELSE s5<=('1'&s1(16 downto0)+("00"&s2(150)+("11"&s2(15DOWNTO 0)+("1111"&s3(13 DOWNTO 0)+("111111"&s4(11 DOWNTO 0);END IF;END PROCESS;A2: PROCESS(clk

温馨提示

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

评论

0/150

提交评论