基于FPGA的FIR濾波器設(shè)計(jì)_第1頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)_第2頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)_第3頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)_第4頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的FIR濾波器設(shè)計(jì)一 、設(shè)計(jì)目的為了幫助學(xué)生深入理解和消化基本理論、進(jìn)一步提高綜合應(yīng)用能力并且鍛煉獨(dú)立解決問題的能力,我們將數(shù)字信號(hào)處理、集成電路原理與應(yīng)用和FPGA系統(tǒng)設(shè)計(jì)與應(yīng)用幾門課程融合在一起開設(shè)的FPGA綜合實(shí)驗(yàn)課程設(shè)計(jì)。本次完成的是利用FPGA來(lái)完成FIR濾波器的設(shè)計(jì)、程序設(shè)計(jì)和實(shí)驗(yàn)調(diào)試任務(wù)。二、設(shè)計(jì)要求(1)基本要求利用所學(xué)知識(shí),采用VHDL語(yǔ)言完成FIR濾波器的設(shè)計(jì)仿真。要求用VHDL編程設(shè)計(jì)底層文件,頂層文件可任意(可用原理圖方式或文本方式);完成仿真文件(包括MATLAB和QUARTUSII兩種仿真)并對(duì)其結(jié)果比較。具體設(shè)計(jì)指標(biāo)如下:(1)采樣頻率;(2)截止頻率

2、;(3)輸入序列為10位(最高位為符號(hào)位);(4)窗口類型為kaiser窗,=0.5 ;(5)濾波器長(zhǎng)度為16 ;(6)輸出結(jié)果保留10位。(2)提高部分 根據(jù)所學(xué)知識(shí),設(shè)計(jì)出一個(gè)具有頻率控制功能DDS,要求輸出頻率分別為10KHz和100KHz,將輸出的兩路數(shù)字信號(hào)進(jìn)行疊加,并通過所設(shè)計(jì)的FIR濾波器進(jìn)行濾波,將濾波輸出的數(shù)字信號(hào)通過D/A轉(zhuǎn)換電路輸出波形,并用示波器觀察輸出波形,并完成測(cè)試結(jié)果分析。結(jié)構(gòu)框圖如圖1-1所示。圖2-1 整體結(jié)構(gòu)框圖三、設(shè)計(jì)原理3.1 FIR濾波器由線性系統(tǒng)理論可知,在某種適度條件下,輸入到線性系統(tǒng)的一個(gè)沖擊完全可以表征系統(tǒng)。當(dāng)我們處理有限的離散數(shù)據(jù)時(shí),線形系統(tǒng)

3、的響應(yīng)(包括對(duì)沖擊的響應(yīng))也是有限的。若線性系統(tǒng)僅是一個(gè)空間濾波器,則通過簡(jiǎn)單地觀察它對(duì)沖擊的響應(yīng),我們就可以完全確定該濾波器。通過這種方式確定的濾波器稱為有限沖擊響應(yīng)(FIR)濾波器。3.2 線性FIR濾波器原理FIR濾波器響應(yīng)(簡(jiǎn)稱FIR)系統(tǒng)的單位脈沖響應(yīng)為有限長(zhǎng)序列,系統(tǒng)函數(shù)在有限z平面上不存在極點(diǎn),其運(yùn)算結(jié)構(gòu)中不存在反饋支路,即沒有環(huán)路。如果的長(zhǎng)度為N,則它的系統(tǒng)函數(shù)和差分方程一般具有如下形式:根據(jù)差分方程直接畫出FIR濾波器的結(jié)構(gòu),稱為直接型結(jié)構(gòu)。如圖3-1所示: 圖3-1 FIR濾波器直接結(jié)構(gòu)FIR濾波器的特點(diǎn):?jiǎn)挝幻}沖響應(yīng)序列為有限個(gè);可快速實(shí)現(xiàn);可得到線性相位;濾波器階數(shù)較高

4、。對(duì)線性時(shí)不變系統(tǒng)保持線性相位的條件是:?jiǎn)挝幻}沖響應(yīng)為偶對(duì)稱或奇對(duì)稱。即:為設(shè)計(jì)線性濾波器,應(yīng)保證h(n)為對(duì)稱的。 若N為偶數(shù),其線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖如圖3-2所示:圖3-2 若N為偶數(shù)線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖圖中:“ +1 ”對(duì)應(yīng)偶對(duì)稱情況,“ -1 ”對(duì)應(yīng)奇對(duì)稱情況。當(dāng)n為奇數(shù)時(shí),支路斷開。 若N為奇數(shù),其線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖如圖3-3:圖3-3 N為奇數(shù)線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖其中y(n)和x(n)分別是輸出和輸入序列。有限沖激響應(yīng)濾波器的一種直接型實(shí)現(xiàn),可由式(2)生成,M=5的情況如圖3-4(a)所示。其轉(zhuǎn)置,如圖3-4(b)所示,是

5、第二個(gè)直接型結(jié)構(gòu)。通常一個(gè)長(zhǎng)度為M的有限沖激響應(yīng)濾波器由M個(gè)系數(shù)描述,并且需要M個(gè)乘法器和(M-1)個(gè)雙輸入加法器來(lái)實(shí)現(xiàn)。圖3-4(a)直接型一圖3-4(b)直接型二長(zhǎng)度為M的線性相位有限沖激響應(yīng)濾波器由對(duì)稱的沖激響應(yīng)h(n)=h(M-1-n)或反對(duì)稱的沖激響應(yīng)h(n)=-h(M-1-n)描述。利用線性相位有限沖激響應(yīng)濾波器的對(duì)稱(或反對(duì)稱)性質(zhì),可以將傳輸函數(shù)的直接型實(shí)現(xiàn)所需的乘法器總量減少一半。例如,圖3-5顯示了一個(gè)具有對(duì)稱沖擊響應(yīng)的、長(zhǎng)度為7的有限沖激響應(yīng)傳輸函數(shù)的實(shí)現(xiàn)。圖3- 5 線性相位有限沖激響應(yīng)結(jié)構(gòu)四、設(shè)計(jì)方案因?yàn)镹=16為偶數(shù),根據(jù)老師上課時(shí)所講,可以按照上面第一個(gè)原理圖設(shè)計(jì)

6、濾波器,如圖4-1所示。圖4-1若N為偶數(shù)線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖本設(shè)計(jì)取為偶對(duì)稱的情況,則圖中:應(yīng)取“ +1 ”。由上圖可分析得到,要完成濾波器的設(shè)計(jì),需要設(shè)計(jì)的底層文件包括延時(shí)單元、加法電路單元、乘以負(fù)一單元、乘法器單元及截取10位數(shù)單元。由各單元VHDL編程后,生成相應(yīng)的符號(hào)文件。最后連接成頂層原理圖。整個(gè)電路的原理圖設(shè)置方案如圖4-2所示:圖4- 2 濾波器整體設(shè)計(jì)方案原理圖五、設(shè)計(jì)內(nèi)容及結(jié)果分析首先使用matlab計(jì)算出符合設(shè)計(jì)要求的濾波器沖激響應(yīng)系數(shù)。后將整個(gè)電路規(guī)劃為語(yǔ)言編輯和原理圖編輯兩個(gè)單元,其中語(yǔ)言編輯部分負(fù)責(zé)編輯整個(gè)濾波器電路中所需用的單元器件,包括寄存器、加法

7、器、減法器以及乘法器幾個(gè)單元器件;最后將所有的器件連接成頂層原理圖。在進(jìn)行編譯及仿真。5.1基于matlab的FIR濾波器系數(shù)計(jì)算在matlab命令編輯窗口輸入Fdatool指令,再點(diǎn)回車即可打開Filter Design & Analysis Tool窗口,在該工具的幫助下,我們就可以完成f.i.r.濾波器系數(shù)的計(jì)算。Fdatool界面總共分兩大部分,一部分是design filter,在界面的下半部分,用來(lái)設(shè)置濾波器的設(shè)計(jì)參數(shù),另一部分則是特性區(qū),在界面的上半部分,用來(lái)顯示濾波器的各種特性。design filter部分主要分為:ResponseType(響應(yīng)類型)選項(xiàng),包括Low

8、pass(低通)、Highpass(高通)、Bandpass(帶通)、Bandstop(帶阻)和特殊的濾波器。根據(jù)本次作業(yè)要求,在該選項(xiàng)中選擇Lowpass選項(xiàng)。Design Method(設(shè)計(jì)方法)選項(xiàng),包括IIR濾波器的Butterworth(巴特沃思)法、Chebyshev Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(橢圓濾波器)法等和Window(窗函數(shù))法等多種方法。結(jié)合本次課設(shè)要求,選擇FIR濾波器的窗函數(shù)法進(jìn)行設(shè)計(jì)。選定窗函數(shù)法后,會(huì)在右側(cè)出現(xiàn)Options區(qū)域,進(jìn)行窗函數(shù)法相關(guān)參量的設(shè)置,根據(jù)作業(yè)要求選擇Kais

9、er窗并設(shè)置Beta為:0.5。Filter Order(濾波器階數(shù))選項(xiàng),定義濾波器的階數(shù),包括Specify order(指定階數(shù))和Minimum order(最小階數(shù))。在Specify order中填入所要設(shè)計(jì)的濾波器的階數(shù)(n階濾波器,specify ordern-1),如果選擇Minimum order則matlab根據(jù)所選擇的濾波器類型自動(dòng)使用最小階數(shù)。本次作業(yè)要求設(shè)計(jì)16階濾波器,所以選定Specify order并填入15。Frenquency Specifications選項(xiàng),可以詳細(xì)定義頻帶的各參數(shù),包括采樣頻率Fs和頻帶的截止頻率。它的具體選項(xiàng)由ResponseTyp

10、e選項(xiàng)和Design Metho選項(xiàng)決定。我們要求的Lowpass(低通)濾波器只需要定義Fs=80 KHz、Fc=10 KHz。本次課設(shè)中的參數(shù)全部設(shè)定后的結(jié)果如圖5-1所示。圖5-1 參數(shù)全部設(shè)定后圖參數(shù)設(shè)定完畢,單擊工具窗口下方的Design Filter按鈕,就開始進(jìn)行相關(guān)參數(shù)計(jì)算。在計(jì)算結(jié)果中可以看到該濾波器的一些相關(guān)曲線,如幅頻響應(yīng)(如圖5-2)、相頻響應(yīng)(如圖5-3)、沖激響應(yīng)(如圖5-4)等。圖形如下:圖5-2 幅頻響應(yīng)曲線圖5-3 相頻響應(yīng)曲線圖5-4 沖激響應(yīng)計(jì)算的結(jié)果可通過File下拉菜單中的Export命令取出,點(diǎn)擊Export打開Export對(duì)話框(如圖5-5),點(diǎn)擊

11、Export按鈕可將濾波器系數(shù)數(shù)據(jù)存放到當(dāng)前工作空間,并以Num命名。圖5-5 沖激系數(shù)輸出對(duì)話框保存并關(guān)閉濾波器設(shè)計(jì)分析工具回到matlab主窗口,在命令編輯區(qū)輸入Num可得到工具的計(jì)算結(jié)果(如圖5-6)。圖 5-6 輸出在matlab的沖激系數(shù)對(duì)FIR濾波器的系數(shù)進(jìn)行調(diào)整,做整數(shù)化操作??傻玫綖V波器整數(shù)化的系數(shù)為-31 -88 -106 -54 70 239 401 499 499 401 239 70 -54 -106 -88 -31,如圖 5-7所示:圖5-7整數(shù)化后的沖激系數(shù)5.2 單元器件的編輯及仿真、寄存器模塊在本次課設(shè)中延遲單元可用寄存器來(lái)替代,寄存器用于寄存一組二值代碼,只要

12、求它們具有置1、置0的功能即可。在本設(shè)計(jì)中使用帶異步復(fù)位rst端的D觸發(fā)器,當(dāng)rst=1時(shí),輸出信號(hào)q=0,當(dāng)rst=0且上升沿脈沖到達(dá)時(shí)q=d,即延遲了一個(gè)在周期。其程序代碼如下: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-8所示:圖5-8 寄存器模塊仿真結(jié)果由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-9 所示。圖 5-9寄存器元件圖、加法器模塊即實(shí)現(xiàn)兩個(gè)有符號(hào)數(shù)的相加運(yùn)算。即將輸入的兩數(shù),在時(shí)鐘脈沖到來(lái)時(shí)相加

14、運(yùn)算,輸出結(jié)果。在本設(shè)計(jì)中共有8個(gè):兩個(gè)10位有符號(hào)數(shù)相加產(chǎn)生一個(gè)11位有符號(hào)數(shù)的加法器、一個(gè)18位和19位有符號(hào)數(shù)相加產(chǎn)生20位有符號(hào)數(shù)的加法器、一個(gè)兩個(gè)20位有符號(hào)數(shù)相加產(chǎn)生一個(gè)21位有符號(hào)數(shù)的加法器、一個(gè)兩個(gè)19位有符號(hào)數(shù)相加產(chǎn)生一個(gè)20位有符號(hào)位數(shù)的加法器、一個(gè)20位和21位有符號(hào)數(shù)相加產(chǎn)生22位有符號(hào)數(shù)的加法器,以及一個(gè)20位和22位有符號(hào)數(shù)相加產(chǎn)生23位有符號(hào)數(shù)的加法器電路。具體如下: 兩個(gè)10位有符號(hào)數(shù)相加產(chǎn)生一個(gè)11位有符號(hào)數(shù)的加法器設(shè)計(jì):由分析可寫出如下程序: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、就可進(jìn)行仿真,仿真結(jié)果如圖5-10所示:圖5-10 兩個(gè)10位有符號(hào)數(shù)相加結(jié)果波形圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-11所示圖5-11 兩個(gè)10位有符號(hào)數(shù)相加元件圖2 18位和19位有符號(hào)數(shù)相加產(chǎn)生20位有符號(hào)數(shù)的加法器設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-12所示:圖5-12 18位和19位有符號(hào)數(shù)相加結(jié)果波形圖由上圖可知,

18、與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-13 所示圖5-13 18位和19位有符號(hào)數(shù)相加元件圖3 兩個(gè)20位有符號(hào)數(shù)相加產(chǎn)生一個(gè)21位有符號(hào)數(shù)的加法器設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-14所示:圖 5-14 兩個(gè)20位有符號(hào)數(shù)相加結(jié)果波形圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-15所示圖 5-15 兩個(gè)20位有

20、符號(hào)數(shù)相加元件圖兩個(gè)19位有符號(hào)數(shù)相加產(chǎn)生一個(gè)20位有符號(hào)位數(shù)的加法器設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-16所示:圖 5-16兩個(gè)19位有符號(hào)數(shù)相加結(jié)果波形圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-17所示圖 5-17兩個(gè)19位有符號(hào)數(shù)相加元件圖 20位和21位有符號(hào)數(shù)相加產(chǎn)生22位有符號(hào)數(shù)的加法器:由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-18所示:圖 5-18 20位和21位有符號(hào)數(shù)相加結(jié)果波形圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-19 所示圖5-19 20位和21位有符號(hào)數(shù)相加元件圖 20位和22位有符號(hào)數(shù)相加產(chǎn)生23位有符號(hào)數(shù)的加法器電路設(shè)計(jì)(最后一級(jí)帶舍位):在此加法器電路中在引入低位舍去功能只保留最終10位輸出,最終保留10位輸出采用了直接取輸出23位數(shù)的高十位的方法,因此在輸出中

24、近似等于除掉了213即8192以后的結(jié)果。為了比較,特又引出了一個(gè)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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-20所示圖 5-20 20位和22位有符號(hào)數(shù)相加 結(jié)果波形

26、圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-21所示;圖 5-21 20位和22位有符號(hào)數(shù)相加元件圖、減法器模塊:它實(shí)現(xiàn)零值減去兩個(gè)有符號(hào)數(shù)的減法運(yùn)算。即用零值減去輸入的兩數(shù),在時(shí)鐘脈沖到來(lái)時(shí)做減法運(yùn)算,輸出結(jié)果。注意:-31和-88的乘結(jié)果都只包含了乘系數(shù)31和88的數(shù)值,并沒有將兩個(gè)負(fù)號(hào)代入,所以兩乘法器后面的加法器運(yùn)算改為減法器模塊,采用0-31*累加結(jié)果-88*累加結(jié)果的方法,實(shí)現(xiàn)(-31)*累加結(jié)果+(-88)*累加結(jié)果的計(jì)算。-106和-54后面的加法器采用同樣的方式處理。 -31和-88的減法器設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-22所示:圖5-22 31和-88的減法器結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-23 所示;圖5-

29、23 -31和-88的減法器元件圖-106和-54的減法器的設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-24 所示:圖 5-24 -106和-54的減法器結(jié)果仿真圖由上圖可知

31、,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-25 所示;圖 5-25 -106和-54的減法器元件圖、乘法器模塊:實(shí)現(xiàn)輸入帶符號(hào)數(shù)據(jù)與固定數(shù)據(jù)兩個(gè)二進(jìn)制數(shù)的乘法運(yùn)算。當(dāng)?shù)竭_(dá)時(shí)鐘上升沿時(shí),將兩數(shù)輸入,運(yùn)算并輸出結(jié)果。從資源和速度方面考慮,常系數(shù)乘法運(yùn)算可用移位相加來(lái)實(shí)現(xiàn)。將常系數(shù)分解成幾個(gè)2的冪的和形式,然后再分別進(jìn)行運(yùn)算。濾波器系數(shù)分別為-31、-88、-106、-54、70、239、401、499、499、401、239、70、-54、-106、-88、-31。算法:其中帶負(fù)號(hào)數(shù)先乘去負(fù)號(hào)的整數(shù)部分,在后面的求和中做減法運(yùn)算。編碼方式如下: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電路設(shè)計(jì): 由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-26 所示:圖 5-

35、26 乘31電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-27所示;圖5-27 乘31電路元件圖乘88電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-28所示:圖 5-28 乘88電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-29所示;圖 5-29 乘88電路元件圖乘106電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-30所示:圖 5-30 乘106電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-31所示;圖 5-31 乘106電路元件圖 乘54電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-32所示:圖 5-32乘54電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-33所示;圖 5-33 乘54電路元件圖 乘70電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-34所示:圖5-34 乘70電路結(jié)果仿真圖由上圖可知,與預(yù)期相符

49、,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-35所示;圖5-35 乘70電路元件圖乘239電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-36所示:圖 5-36 乘239電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-37所示;圖5-37 乘239電路元件圖乘401電路設(shè)計(jì):由分析可寫出如下程序: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;程序編譯后就可進(jìn)行仿真,仿真結(jié)果如圖5-38所示:圖 5-38 乘401電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計(jì)正確,再將其生成為一個(gè)元件以便后來(lái)調(diào)用,其生成圖如圖5-39所示;圖5-39 乘401電路元件圖 乘499電路設(shè)計(jì):由分析可寫出如下程序: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論