版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 一 設(shè)計(jì)目的2</b></p><p><b> 二 設(shè)計(jì)要求3</b></p><p> 2.1、基本要求3</p><p> 2.2、提高部分3</p><p>&
2、lt;b> 三 設(shè)計(jì)原理4</b></p><p> 3.1、線性FIR濾波器原理4</p><p> 3.2 設(shè)計(jì)分析6</p><p> 3.3 實(shí)驗(yàn)結(jié)果分析驗(yàn)證提示7</p><p> 3.4 DDS原理簡(jiǎn)介7</p><p><b> 四 設(shè)計(jì)思路9&l
3、t;/b></p><p> 4.1基于matlab工具的濾波器系數(shù)計(jì)算10</p><p><b> 五 設(shè)計(jì)內(nèi)容13</b></p><p> 5.1、寄存器模塊13</p><p> 5.2加法器模塊14</p><p> 5.3 減法器模塊19</p>
4、;<p> 5.4 乘法器模塊21</p><p><b> 六 結(jié)果分析29</b></p><p> 七 參考文獻(xiàn)32</p><p><b> 八 心得體會(huì)33</b></p><p> 基于FPGA的FIR濾波器的設(shè)計(jì)</p><p&g
5、t;<b> 一 設(shè)計(jì)目的</b></p><p> 為了幫助學(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ì)。主要從以下兩方面考慮:</p><p> 1、設(shè)計(jì)內(nèi)容突出FPGA及信號(hào)處理的理論和技術(shù)的綜合應(yīng)用。
6、如在數(shù)字濾波實(shí)驗(yàn)中,要求學(xué)生能夠熟悉數(shù)字濾波器的基本原理,并能運(yùn)用VHDL語言實(shí)現(xiàn)數(shù)字濾波。并采用MATLAB軟件實(shí)現(xiàn)的結(jié)果與運(yùn)用VHDL實(shí)現(xiàn)的仿真結(jié)果進(jìn)行,來驗(yàn)證其正確性。最后通過實(shí)驗(yàn)裝置進(jìn)行硬件實(shí)現(xiàn),并對(duì)結(jié)果進(jìn)行綜合分析。</p><p> 2、如何將《數(shù)字信號(hào)處理》、《集成電路原理與應(yīng)用》和《《FPGA系統(tǒng)設(shè)計(jì)與應(yīng)用》三門課程有機(jī)的結(jié)合起來,設(shè)計(jì)一實(shí)際的系統(tǒng)。由學(xué)生在所學(xué)知識(shí)的基礎(chǔ)上,查閱相關(guān)資料,自主設(shè)
7、計(jì),通過實(shí)驗(yàn)裝置進(jìn)行實(shí)現(xiàn),并對(duì)結(jié)果進(jìn)行綜合分析,尋找最佳設(shè)計(jì)方案。</p><p> 希望學(xué)生通過完成一個(gè)利用FPGA實(shí)現(xiàn)信號(hào)處理相關(guān)的課題的理論設(shè)計(jì)、程序設(shè)計(jì)和實(shí)驗(yàn)調(diào)試任務(wù),提高他們分析解決實(shí)際問題的能力。本設(shè)計(jì)要求運(yùn)用課程所學(xué)知識(shí),進(jìn)行算法實(shí)現(xiàn)、 Matlab仿真,VHDL程序設(shè)計(jì),F(xiàn)PGA開發(fā)平臺(tái)上調(diào)試,加深對(duì)FPGA在信號(hào)處理知識(shí)領(lǐng)域的理解與運(yùn)用,培養(yǎng)對(duì)FPGA系統(tǒng)的開發(fā)技能。</p>&
8、lt;p><b> 二 設(shè)計(jì)要求</b></p><p><b> 2.1、基本要求</b></p><p> 利用所學(xué)知識(shí),采用VHDL語言完成FIR濾波器的設(shè)計(jì)仿真。要求用VHDL編程設(shè)計(jì)底層文件,頂層文件可任意(可用原理圖方式或文本方式);完成仿真文件(包括MATLAB和QUARTUSII兩種仿真)并對(duì)其結(jié)果比較。</p&
9、gt;<p><b> 具體設(shè)計(jì)指標(biāo)如下:</b></p><p><b> (1)采樣頻率;</b></p><p><b> (2)截止頻率;</b></p><p> (3)輸入序列為10位(最高位為符號(hào)位);</p><p> ?。?)窗口類型為k
10、aiser窗,=0.5 ;</p><p> ?。?)濾波器長(zhǎng)度為16 ;</p><p> ?。?)輸出結(jié)果保留10位。</p><p><b> 2.2、提高部分</b></p><p> 根據(jù)所學(xué)知識(shí),設(shè)計(jì)出一個(gè)具有頻率控制功能DDS,要求輸出頻率分別為10KHz和100KHz,將輸出的兩路數(shù)字信號(hào)進(jìn)行疊加,并
11、通過所設(shè)計(jì)的FIR濾波器進(jìn)行濾波,將濾波輸出的數(shù)字信號(hào)通過D/A轉(zhuǎn)換電路輸出波形,并用示波器觀察輸出波形,并完成測(cè)試結(jié)果分析。結(jié)構(gòu)框圖如圖1所示。</p><p> 圖1 整體結(jié)構(gòu)框圖</p><p><b> 三 設(shè)計(jì)原理</b></p><p> 3.1、線性FIR濾波器原理</p><p> FIR濾波
12、器響應(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ù)和差分方程一般具有如下形式:</p><p> 根據(jù)差分方程直接畫出FIR濾波器的結(jié)構(gòu),稱為直接型結(jié)構(gòu)。如圖2所示:
13、 </p><p> 圖2 FIR濾波器直接結(jié)構(gòu)</p><p> FIR濾波器的特點(diǎn):?jiǎn)挝幻}沖響應(yīng)序列為有限個(gè);可快速實(shí)現(xiàn);可得到線性相位;濾波器階數(shù)較高。對(duì)線性時(shí)不變系統(tǒng)保持線性相位的條件是:?jiǎn)挝幻}沖響應(yīng)為偶對(duì)稱或奇對(duì)稱。即:</p><p> 為設(shè)計(jì)線性濾波器,應(yīng)保證h(n)為對(duì)稱的。</p><p> ?、?若
14、N為偶數(shù),其線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖如圖3:</p><p> 圖3 若N為偶數(shù)線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖</p><p> 圖中:“ +1 ” 對(duì)應(yīng)偶對(duì)稱情況,“ -1 ” 對(duì)應(yīng)奇對(duì)稱情況。當(dāng)n為奇數(shù)時(shí),支路斷開。</p><p> ② 若N為奇數(shù),其線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖如圖4:</p><p> 圖
15、4 N為奇數(shù)線性相位FIR濾波器的對(duì)稱結(jié)構(gòu)流圖</p><p><b> 3.2 設(shè)計(jì)分析</b></p><p> 1. 設(shè)計(jì)濾波器方案:</p><p> 因?yàn)镹=16為偶數(shù),可以按照上面第一個(gè)原理圖設(shè)計(jì)濾波器,如圖5所示。</p><p><b> 圖5</b></p>
16、<p> 本設(shè)計(jì)取為偶對(duì)稱的情況,則圖中:應(yīng)取“ +1 ”。</p><p> 由上圖可分析得到,要完成濾波器的設(shè)計(jì),需要設(shè)計(jì)的底層文件包括延時(shí)單元、加法電路單元、乘以負(fù)一單元、乘法器單元及截取10位數(shù)單元。由各單元VHDL編程后,生成相應(yīng)的符號(hào)文件。最后連接成頂層原理圖。</p><p> 3.3 實(shí)驗(yàn)結(jié)果分析驗(yàn)證提示</p><p> 1
17、)利用QUARTUSII仿真</p><p><b> 設(shè),</b></p><p><b> 取進(jìn)行仿真。</b></p><p> 2)利用MATLAB仿真</p><p> 求取,/,/,然后,同以上仿真結(jié)果進(jìn)行對(duì)比,說明濾波器設(shè)計(jì)的正確性。</p><p>
18、 3.4 DDS原理簡(jiǎn)介</p><p> 目前使用最廣泛的一種DDS 方式是利用高速存儲(chǔ)器作查找表,然后通過高速DAC 輸出已經(jīng)用數(shù)字形式存儲(chǔ)的波形。</p><p> 圖6 DDS 系統(tǒng)的基本原理圖</p><p> 圖6中虛方框部分是DDS 的核心單元,它可以采用CPLD/FPGA 來實(shí)現(xiàn)。圖中的相位累加器由N位全加器和N位累加寄存器級(jí)聯(lián)而成,可對(duì)頻
19、率控制字的二進(jìn)制碼進(jìn)行累加運(yùn)算,是典型的反饋電路。</p><p> 頻率控制字M和相位控制字分別控制DDS 輸出正(余)弦波的頻率和相位。每來一個(gè)時(shí)鐘脈沖,相位寄存器以步長(zhǎng)M遞增。相位寄存器的輸出與相位控制字相加,其結(jié)果作為正(余)弦查找表的地址。正(余)弦查找表的數(shù)據(jù)存放在ROM中,內(nèi)部存有一個(gè)周期的正弦波信號(hào)的數(shù)字幅度信息,每個(gè)查找表的地址對(duì)應(yīng)于正弦波中0°~360°范圍內(nèi)的一個(gè)相位點(diǎn)
20、。查找表把輸入的址信息映射成正(余)弦波的數(shù)字幅度信號(hào),同時(shí)輸出到數(shù)模轉(zhuǎn)換器DAC 的輸入端,DAC輸出的模擬信號(hào)經(jīng)過低通濾波器 (LPF),可得到一個(gè)頻譜純凈的正(余)弦波。</p><p> DDS 具體工作過程如下:每來一個(gè)時(shí)鐘脈沖clk,N 位全加器將頻率控制數(shù)據(jù)M 與累加寄存器輸出的累加相位數(shù)據(jù)N 相加,把相加后的結(jié)果送至累加寄存器的輸入端。累加寄存器一方面將上一時(shí)鐘周期作用后所產(chǎn)生的新的數(shù)據(jù)反饋到加
21、法器的輸入端,以使加法器在下一時(shí)鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)M 相加;另一方面將這個(gè)值作為取樣地址值送入幅度/相位轉(zhuǎn)換電路,此電路根據(jù)取樣地址輸出相應(yīng)的波形數(shù)據(jù)。最后經(jīng)D/A 轉(zhuǎn)換器和低通濾波器將波形數(shù)據(jù)轉(zhuǎn)換成所需要的模擬波形。</p><p> DDS 輸出信號(hào)的頻率由下式?jīng)Q定:q=()×clk (代表取樣點(diǎn)數(shù),M 為頻率控制字、代表存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)的多少,N 代表累加器的位數(shù),clk 代表基準(zhǔn)時(shí)鐘
22、頻率) 。調(diào)節(jié)M 可以改變?nèi)拥狞c(diǎn)數(shù),從而改變頻率。</p><p> 假定基準(zhǔn)時(shí)鐘為70MHz,累加器為16 位,則clk=70MHz ,Y==65536 (N=16),設(shè)M=12 則X==4096,所以q=(4096/65536) ×70=4.375MHz??梢姡ㄟ^設(shè)定相位累加器位數(shù)N、頻率控制字M 和基準(zhǔn)時(shí)鐘的值,就可以產(chǎn)生任一頻率的輸出。DDS 的頻率分辨率定義為:q=clk/ 由于基準(zhǔn)時(shí)鐘
23、一般是固定的,因此相位累加器的位數(shù)就決定了頻率的分辨率。</p><p><b> 四 設(shè)計(jì)思路</b></p><p> 根據(jù)課程上老師所講例題,首先使用matlab計(jì)算出符合設(shè)計(jì)要求的濾波器沖激響應(yīng)系數(shù)。后將整個(gè)電路規(guī)劃為語言編輯和原理圖編輯兩個(gè)單元,其中語言編輯部分負(fù)責(zé)編輯整個(gè)濾波器電路中所需用的單元器件,包括寄存器、加法器、減法器以及乘法器幾個(gè)單元器件;
24、原理圖編輯部分完成單元器件的電氣連接工作。整個(gè)電路的原理圖設(shè)置方案如下圖所示:</p><p> 圖 濾波器整體設(shè)計(jì)思路</p><p> 4.1基于matlab工具的濾波器系數(shù)計(jì)算:</p><p> 在matlab命令編輯窗口輸入Fdatool指令,敲擊回車可以打開Filter Design & Analysis Tool窗口(如圖4-1所示),
25、在該工具的幫助下,我們可以完成f.i.r.濾波器系數(shù)的計(jì)算工作。</p><p> 圖4-1 Filter Design & Analysis Tool窗口</p><p> Fdatool界面總共分兩大部分,一部分是design filter,在界面的下半部分,用來設(shè)置濾波器的設(shè)計(jì)參數(shù),另一部分則是特性區(qū),在界面的上半部分,用來顯示濾波器的各種特性。design filter
26、部分主要分為:</p><p> Response Type(響應(yīng)類型)選項(xiàng),包括Lowpass(低通)、Highpass(高通)、Bandpass(帶通)、Bandstop(帶阻)和特殊的濾波器。根據(jù)本次作業(yè)要求,在該選項(xiàng)中選擇Lowpass選項(xiàng)。</p><p> Design Method(設(shè)計(jì)方法)選項(xiàng),包括IIR濾波器的Butterworth(巴特沃思)法、Chebyshev
27、 Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(橢圓濾波器)法等和FIR濾波器的Equiripple法、Least-squares(最小乘方)法、Window(窗函數(shù))法等多種方法。結(jié)合本次作業(yè)要求,選擇FIR濾波器的窗函數(shù)法進(jìn)行設(shè)計(jì)。選定窗函數(shù)法后,會(huì)在右側(cè)出現(xiàn)Options區(qū)域,進(jìn)行窗函數(shù)法相關(guān)參量的設(shè)置,根據(jù)作業(yè)要求選擇Kaiser窗并設(shè)置Beta為:0.5。<
28、/p><p> Filter Order(濾波器階數(shù))選項(xiàng),定義濾波器的階數(shù),包括Specify order(指定階數(shù))和Minimum order(最小階數(shù))。在Specify order中填入所要設(shè)計(jì)的濾波器的階數(shù)(n階濾波器,specify order=n-1),如果選擇Minimum order則matlab根據(jù)所選擇的濾波器類型自動(dòng)使用最小階數(shù)。本次作業(yè)要求設(shè)計(jì)16階濾波器,所以選定Specify ord
29、er并填入15。</p><p> Frenquency Specifications選項(xiàng),可以詳細(xì)定義頻帶的各參數(shù),包括采樣頻率Fs和頻帶的截止頻率。它的具體選項(xiàng)由Response Type選項(xiàng)和Design Metho選項(xiàng)決定。我們要求的 Lowpass(低通)濾波器只需要定義Fs、Fc。采用窗函數(shù)設(shè)計(jì)濾波器時(shí),由于過渡帶是由窗函數(shù)的類型和階數(shù)所決定的,所以只需要定義通帶截止頻率,而不必定義阻帶參數(shù)。<
30、;/p><p> Magnitude Specifications選項(xiàng),可以定義幅值衰減的情況。采用窗函數(shù)設(shè)計(jì)時(shí),通帶截止頻率處的幅值衰減固定為6db,所以不必定義。</p><p> 本次作業(yè)中的參數(shù)設(shè)定結(jié)果如圖4-2所示。</p><p> 圖 4-2 濾波器參數(shù)設(shè)定結(jié)果</p><p> 參數(shù)設(shè)定完畢,單擊工具窗口下方的Design
31、 Filter按鈕,開始進(jìn)行相關(guān)參數(shù)計(jì)算。</p><p><b> 五 設(shè)計(jì)內(nèi)容</b></p><p><b> 5.1、寄存器模塊</b></p><p> 寄存器用于寄存一組二值代碼,只要求它們具有置1、置0的功能即可。在本設(shè)計(jì)中用D觸發(fā)器組成寄存器,實(shí)現(xiàn)寄存功能。本設(shè)計(jì)中使用帶異步復(fù)位rst端的D觸發(fā)器,當(dāng)
32、rst=1時(shí),輸出信號(hào)q=0,當(dāng)rst=0且上升沿脈沖到達(dá)時(shí)q=d。</p><p><b> 寄存器源程序如下:</b></p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> ENTITY dff16 IS</p>
33、<p> PORT (rst,clk: IN STD_LOGIC;</p><p> d:IN STD_LOGIC_VECTOR (9 DOWNTO 0);</p><p> q:OUT STD_LOGIC_VECTOR (9 DOWNTO 0));</p><p> END dff16;</p><p> ARCHI
34、TECTURE dff16 OF dff16 IS</p><p><b> BEGIN</b></p><p> PROCESS (rst,clk)</p><p><b> BEGIN</b></p><p> IF(rst='1')THEN </p>&l
35、t;p> q<=(OTHERS=>'0');</p><p> ELSIF(clk'EVENT AND clk='1')THEN</p><p><b> q<=d;</b></p><p><b> END IF;</b></p>&l
36、t;p> END PROCESS;</p><p> END dff16;</p><p><b> 5.2加法器模塊</b></p><p> 實(shí)現(xiàn)兩個(gè)有符號(hào)數(shù)的相加運(yùn)算。即將輸入的兩數(shù),在時(shí)鐘脈沖到來時(shí)相加運(yùn)算,輸出結(jié)果。</p><p> 在本設(shè)計(jì)中共有8個(gè)兩個(gè)10位有符號(hào)數(shù)相加產(chǎn)生一個(gè)11位有符號(hào)
37、數(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ù)的加法器電路。</p><p> 其中一個(gè)20位和22位有符號(hào)數(shù)相加產(chǎn)生23位有符號(hào)數(shù)的加法器電路為最后一級(jí),所以在
38、加法器電路中在引入低位舍去功能只保留最終10位輸出,最終保留10位輸出采用了直接取輸出23位數(shù)的高十位的方法,因此在輸出中近似等于除掉了2^13即8192以后的結(jié)果。</p><p> 10位有符號(hào)數(shù)相加產(chǎn)生一個(gè)11位有符號(hào)數(shù)的加法器設(shè)計(jì)源程序如下:</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164
39、.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY sum101011 IS</p><p> PORT(a,b: IN SIGNED(9 DOWNTO 0);</p><p> clk: IN STD_LOGIC;</p><p> s:
40、OUT SIGNED(10 DOWNTO 0));</p><p> END SUM101011;</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p&g
41、t; ENTITY sum101011 IS</p><p> PORT(a,b: IN SIGNED(9 DOWNTO 0);</p><p> clk: IN STD_LOGIC;</p><p> s:OUT SIGNED(10 DOWNTO 0));</p><p> END SUM101011;</p>&l
42、t;p> ARCHITECTURE sum101011 OF sum101011 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p><b> BEGIN </b></p><p> IF(clk'EVENT AND
43、 clk='1')THEN </p><p> s<=(a(9)&a)+(b(9)&b);</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END sum101011;</p><p>
44、 18位和19位有符號(hào)數(shù)相加產(chǎn)生20位有符號(hào)數(shù)的加法器設(shè)計(jì)源程序如下:</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY sum7023918 IS<
45、;/p><p> PORT(a: IN SIGNED(17 DOWNTO 0);</p><p> b: IN SIGNED(18 DOWNTO 0);</p><p> clk: IN STD_LOGIC;</p><p> s:OUT SIGNED(19 DOWNTO 0));</p><p> END su
46、m7023918;</p><p> ARCHITECTURE sum7023918 OF sum7023918 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p><b> BEGIN </b></p><p&
47、gt; IF(clk'EVENT AND clk='1')THEN </p><p> s<=(a(17)&a(17)&a)+(b(18)&b);</p><p><b> END IF;</b></p><p> END PROCESS;</p><p>
48、 END sum7023918;</p><p> 兩個(gè)20位有符號(hào)數(shù)相加產(chǎn)生一個(gè)21位有符號(hào)數(shù)的加法器設(shè)計(jì)源程序如下:</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p&g
49、t;<p> ENTITY sum40149919 IS</p><p> PORT(a: IN SIGNED(19 DOWNTO 0);</p><p> b: IN SIGNED(19 DOWNTO 0);</p><p> clk: IN STD_LOGIC;</p><p> s:OUT SIGNED(20 D
50、OWNTO 0));</p><p> END sum40149919;</p><p> ARCHITECTURE sum40149919 OF sum40149919 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p><
51、;b> BEGIN </b></p><p> IF(clk'EVENT AND clk='1')THEN </p><p> s<=(a(19)&a)+(b(19)&b);</p><p><b> END IF;</b></p><p> EN
52、D PROCESS;</p><p> END sum40149919;</p><p> 兩個(gè)19位有符號(hào)數(shù)相加產(chǎn)生一個(gè)20位有符號(hào)位數(shù)的加法器設(shè)計(jì):</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.al</p><p> USE ieee.s
53、td_logic_arith.all;</p><p> ENTITY sum181819 IS</p><p> PORT(a: IN SIGNED(18 DOWNTO 0);</p><p> b: IN SIGNED(18 DOWNTO 0);</p><p> clk: IN STD_LOGIC;</p><
54、;p> s:OUT SIGNED(19 DOWNTO 0));</p><p> END sum181819;</p><p> ARCHITECTURE sum181819 OF sum181819 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</
55、p><p><b> BEGIN </b></p><p> IF(clk'EVENT AND clk='1')THEN </p><p> s<=(a(18)&a)+(b(18)&b);</p><p><b> END IF;</b></p
56、><p> END PROCESS;</p><p> END sum181819;</p><p> 20位和21位有符號(hào)數(shù)相加產(chǎn)生22位有符號(hào)數(shù)的加法器,20位和22位有符號(hào)數(shù)相加產(chǎn)生23位有符號(hào)數(shù)的加法器電路設(shè)計(jì)(最后一級(jí)帶舍位)略。</p><p> 5.3 減法器模塊</p><p> 實(shí)現(xiàn)零值減去兩
57、個(gè)有符號(hào)數(shù)的減法運(yùn)算。即用零值減去輸入的兩數(shù),在時(shí)鐘脈沖到來時(shí)做減法運(yùn)算,輸出結(jié)果。</p><p> -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后面的加法器采用同樣的方式處理。</p><p>
58、; -31和-88的減法器設(shè)計(jì):</p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY sub318817 is</p><p>
59、 PORT(clk : in STD_LOGIC;</p><p> Din1 :in signed (15 downto 0);</p><p> Din2 :in signed (17 downto 0);</p><p> Dout :out signed(18 downto 0));</p><p> END sub31881
60、7;</p><p> ARCHITECTURE sub318817 of sub318817 IS</p><p> SIGNAL s1: signed(17 downto 0):=(Din1(15)&Din1(15)&Din1);</p><p> SIGNAL s2: signed(18 downto 0):=(OTHERS=>
61、39;0');</p><p><b> BEGIN</b></p><p> PROCESS(Din1,Din2,clk)</p><p><b> BEGIN</b></p><p> IF clk'event and clk='1' THEN</p
62、><p> Dout<=s2-Din2-s1;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END sub318817;</p><p> -106和-54的減法器的設(shè)計(jì):</p><p>
63、LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY sub1065417 is</p><p> PORT(clk : in STD_LOGIC;</p>&l
64、t;p> Din1 :in signed (17 downto 0);</p><p> Din2 :in signed (16 downto 0);</p><p> Dout :out signed(18 downto 0));</p><p> END sub1065417;</p><p> ARCHITECTURE
65、sub1065417 of sub1065417 IS</p><p> SIGNAL s1: signed(17 downto 0):=(Din2(16)&Din2);</p><p> SIGNAL s2: signed(18 downto 0):=(OTHERS=>'0');</p><p><b> BEGIN&
66、lt;/b></p><p> PROCESS(Din1,Din2,clk)</p><p><b> BEGIN</b></p><p> IF clk'event and clk='1' THEN</p><p> Dout<=s2-Din1-s1;</p>
67、<p><b> END IF;</b></p><p> END PROCESS;</p><p> END sub1065417;</p><p> 5.4 乘法器模塊 </p><p> 從資源和速度考慮,常系數(shù)乘法運(yùn)算可用移位相加來實(shí)現(xiàn)。將常系數(shù)分解成幾個(gè)2的冪的和形式。濾波器系數(shù)分別為-3
68、1、-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被編碼為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
69、^9-2^7+2^4+2^0、499被編碼為2^9-2^3-2^2-2^0。 </p><p> 實(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é)果。</p><p><b> 乘31電路設(shè)計(jì):</b></p><p> LIBRARY ieee;</p>
70、;<p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY mult31 IS</p><p> PORT( clk : IN STD_LOGIC;</p><p> Din : IN SIGNE
71、D (10 DOWNTO 0);</p><p> Dout : OUT SIGNED (15 DOWNTO 0));</p><p> END mult31;</p><p> ARCHITECTURE mult31 OF mult31 IS</p><p> SIGNAL s1 : SIGNED (15 DOWNTO 0);&l
72、t;/p><p> SIGNAL s2 : SIGNED (10 DOWNTO 0);</p><p> SIGNAL s3 : SIGNED (15 DOWNTO 0);</p><p><b> BEGIN</b></p><p> A1:PROCESS(Din,s1,s2,s3)</p><
73、p><b> BEGIN</b></p><p> s1<=Din&"00000";</p><p><b> s2<=Din;</b></p><p> IF (Din(10)='0') THEN </p><p> s3&l
74、t;=('0'&s1(14 downto 0))-("00000"&s2(10 DOWNTO 0));</p><p><b> ELSE </b></p><p> s3<=('1'&s1(14 downto 0))-("11111"&s2(10 DOW
75、NTO 0));</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> A2: PROCESS(clk,s3)</p><p><b> BEGIN</b></p><p> IF clk'EVENT
76、 AND clk='1' THEN</p><p><b> Dout<=s3;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END mult31;</p><p>&l
77、t;b> 乘88電路設(shè)計(jì):</b></p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_arith.all;</p><p> ENTITY mult88 IS</p><
78、;p> PORT( clk : IN STD_LOGIC;</p><p> Din : IN SIGNED (10 DOWNTO 0);</p><p> Dout : OUT SIGNED (17 DOWNTO 0));</p><p> END mult88;</p><p> ARCHITECTURE mult8
79、8 OF mult88 IS</p><p> SIGNAL s1 : SIGNED (16 DOWNTO 0);</p><p> SIGNAL s2 : SIGNED (14 DOWNTO 0);</p><p> SIGNAL s3 : SIGNED (13 DOWNTO 0);</p><p> SIGNAL s4 : SIG
80、NED (17 DOWNTO 0);</p><p><b> BEGIN</b></p><p> A1:PROCESS(Din,s1,s2,s3)</p><p><b> BEGIN</b></p><p> s1<=Din&"000000";<
81、/p><p> s2<=Din&"0000";</p><p> s3<=Din&"000";</p><p> IF (Din(10)='0') THEN </p><p> s4<=('0'&s1(16 downto 0)
82、)+("000"&s2(14 DOWNTO 0))+("0000"&s3(13 DOWNTO</p><p><b> 0));</b></p><p><b> ELSE </b></p><p> s4<=('1'&s1(16
83、downto 0))+("111"&s2(14 DOWNTO 0))+("1111"&s3(13 DOWNTO 0));</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> A2: PROCESS(clk,s4)</p
84、><p><b> BEGIN</b></p><p> IF clk'EVENT AND clk='1' THEN</p><p><b> Dout<=s4;</b></p><p><b> END IF;</b></p>
85、<p> END PROCESS;</p><p> END mult88;</p><p><b> 乘106電路設(shè)計(jì):</b></p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> US
86、E ieee.std_logic_arith.all;</p><p> ENTITY mult106 IS</p><p> PORT( clk : IN STD_LOGIC;</p><p> Din : IN SIGNED (10 DOWNTO 0);</p><p> Dout : OUT SIGNED (17 DOWN
87、TO 0));</p><p> END mult106;</p><p> ARCHITECTURE mult106 OF mult106 IS</p><p> SIGNAL s1 : SIGNED (16 DOWNTO 0);</p><p> SIGNAL s2 : SIGNED (15 DOWNTO 0);</p>
88、;<p> SIGNAL s3 : SIGNED (13 DOWNTO 0);</p><p> SIGNAL s4 : SIGNED (11 DOWNTO 0);</p><p> SIGNAL s5 : SIGNED (17 DOWNTO 0);</p><p><b> BEGIN</b></p>&l
89、t;p> A1:PROCESS(Din,s1,s2,s3,s4)</p><p><b> BEGIN</b></p><p> s1<=Din&"000000";</p><p> s2<=Din&"00000";</p><p> s
90、3<=Din&"000";</p><p> s4<=Din&'0';</p><p> IF (Din(10)='0') THEN </p><p> s5<=('0'&s1(16 downto 0))+("00"&s2(
91、15 DOWNTO 0))+("0000"&s3(13 DOWNTO 0))+("000000"&s4(11 DOWNTO 0));</p><p><b> ELSE </b></p><p> s5<=('1'&s1(16 downto 0))+("11"
92、&s2(15 DOWNTO 0))+("1111"&s3(13 DOWNTO 0))+("111111"&s4(11 DOWNTO 0));</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> A2: PROCESS
93、(clk,s5)</p><p><b> BEGIN</b></p><p> IF clk'EVENT AND clk='1' THEN</p><p><b> Dout<=s5;</b></p><p><b> END IF;</b&g
94、t;</p><p> END PROCESS;</p><p> END mult106;</p><p> 考慮到原理一樣,這里只列舉三個(gè)例子。</p><p><b> 原理圖</b></p><p><b> 六 結(jié)果分析</b></p>&l
95、t;p> 在command window內(nèi)輸入</p><p> >> fdatool</p><p><b> >> n</b></p><p><b> n =</b></p><p> Columns 1 through 12</p>&
96、lt;p> -0.0153 -0.0432 -0.0517 -0.0265 0.0343 0.1168 0.1956 0.2436 0.2436 0.1956 0.1168 0.0343</p><p> Columns 13 through 16</p><p> -0.0265 -0.0517 -0.043
97、2 -0.0153</p><p> >> f1=round(n*(2^11))</p><p><b> f1 =</b></p><p> -31 -88 -106 -54 70 239 401 499 499 401 239 70 -54 -106 -88
98、-31</p><p> >> f2=[303,134,345,98,-78,97,102,-205,412];</p><p> >> y=conv(f1,f2);</p><p> >> s=y/(2^13)</p><p><b> s =</b></p>
99、<p> Columns 1 through 12</p><p> -1.1466 -3.7620 -6.6656 -7.8081 -3.5159 6.9136 20.6246 34.8578 44.3833 44.9141 38.2875 27.8611</p><p> Columns 13 through 24</
100、p><p> 17.7001 11.2920 9.9404 12.0692 13.8990 13.0698 8.8079 2.8052 -1.5260 -3.5149 -3.6500 -1.5591</p><p><b> 仿真結(jié)果圖</b></p><p><b> 經(jīng)比較結(jié)果正
101、確。</b></p><p> DDS原理圖與仿真結(jié)果</p><p><b> 結(jié)果如下</b></p><p><b> 七 參考文獻(xiàn)</b></p><p> [1] EDA技術(shù)與CPLD/FPGA開發(fā)應(yīng)用簡(jiǎn)明教程[M]. 北京:清華大學(xué)出版社,2007.</p&g
102、t;<p> [2] EDA技術(shù)實(shí)用教程[M]. 北京:清華大學(xué)出版社,2006.</p><p> [3] 薛年喜. MATLAB在數(shù)字信號(hào)處理中的應(yīng)用[M]. 北京:清華大學(xué)出版社,2003.</p><p> [4] 程佩青. 數(shù)字信號(hào)處理教程[M]. 北京:清華大學(xué)出版社,2003.</p><p> [5] FPGA方向課設(shè)設(shè)計(jì)指導(dǎo)書
103、.中原工學(xué)院:電子信息教研室.</p><p><b> 八 心得體會(huì)</b></p><p> 為期三周的方向課程設(shè)計(jì)結(jié)束啦,在整個(gè)濾波器的設(shè)計(jì)實(shí)現(xiàn)過程中,學(xué)會(huì)了不少新的知識(shí),同時(shí)也將所學(xué)的語言有了進(jìn)一步的深刻理解,現(xiàn)在在這里談一下自己的心得體會(huì)。</p><p> 作為一個(gè)電子信息類專業(yè)的學(xué)生,F(xiàn)PGA是我們重要的專業(yè)課,是我們將來從
104、事電子設(shè)計(jì)的有力工具。通過對(duì)該課程的學(xué)習(xí),我們對(duì)電子設(shè)計(jì)自動(dòng)化有了更進(jìn)一步的理解;通過對(duì)數(shù)字濾波器的設(shè)計(jì),我們也了解了數(shù)字濾波器的基本結(jié)構(gòu)和基本特性,而且更加牢固地掌握了相關(guān)的理論知識(shí),同時(shí)也提高了自己的動(dòng)手實(shí)踐能力。這次課程設(shè)計(jì),很重要的一部分就是MATLAB的運(yùn)用,在做設(shè)計(jì)實(shí)驗(yàn)之初,因?yàn)閷?duì)matlab程序并不熟悉,僅會(huì)些基本的操作,就打算直接使用老師在課堂上給出的沖激系數(shù)。后經(jīng)網(wǎng)上資料查閱,發(fā)現(xiàn)matlab設(shè)計(jì)濾波器沖激系數(shù)的工具簡(jiǎn)
105、單易學(xué),就將設(shè)計(jì)參數(shù)要求通過matlab的Filter Design & Analysis Tool計(jì)算出符合條件的沖激響應(yīng)系數(shù)并在matlab中進(jìn)行整數(shù)化操作,通過MATLAB的使用,從而大大提高了我們對(duì)集運(yùn)算,編程與繪圖于一體的軟件的運(yùn)用能力。</p><p> 過程曲折可謂一語難盡。在此期間我們也失落過,也曾一度熱情高漲。從開始時(shí)滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)滴滴無不令我回味無長(zhǎng)。生活就
106、是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動(dòng)是人類生存生活永恒不變的話題。通過實(shí)習(xí),我才真正領(lǐng)略到“艱苦奮斗”這 一詞的真正含義,我才意識(shí)到老一輩電子設(shè)計(jì)為我們的社會(huì)付出。我想說,設(shè)計(jì)確實(shí)有些辛苦,但苦中也有樂,在如今單一的理論學(xué)習(xí)中,很少有機(jī)會(huì)能有實(shí)踐的機(jī)會(huì),但我們可以,而且設(shè)計(jì)也是一個(gè)團(tuán)隊(duì)的任務(wù),一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,我感覺我和同學(xué)們之間的距離更加近了;我想說,確實(shí)很累,但當(dāng)我們看到自
107、己所做的成果時(shí),心中也不免產(chǎn)生興奮; 我們同樣可以為社會(huì)作出我們應(yīng)該做的一切,這有什么不好?我們不斷的反問自己。也許有人不喜歡這類的工作,也許有人認(rèn) 為設(shè)計(jì)的工作有些枯燥,但我們認(rèn)為無論干什么,只要人生活的有意義就可。社會(huì)需要我們,我們也可以為社會(huì)而工作。既然如此,那還有什么必要失落呢?于是我 們決定沿著自己的路,執(zhí)著的走下去。同時(shí)我認(rèn)為我們的工作是一個(gè)團(tuán)隊(duì)的工作,團(tuán)隊(duì)需要個(gè)人,個(gè)人也離不開團(tuán)隊(duì),必須發(fā)揚(yáng)團(tuán)結(jié)協(xié)作的精神</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的fir濾波器課程設(shè)計(jì)
- 基于fpga的fir濾波器課程設(shè)計(jì)報(bào)告
- 基于fpga的fir濾波器設(shè)計(jì)
- 基于fpga的fir數(shù)字低通濾波器的課程設(shè)計(jì)
- 基于fpga的fir濾波器設(shè)計(jì)書
- 基于FPGA的高階FIR濾波器設(shè)計(jì).pdf
- 基于fpga的fir數(shù)字濾波器設(shè)計(jì)
- 基于fpga的fir數(shù)字濾波器設(shè)計(jì)
- 基于FPGA的高速高階FIR濾波器設(shè)計(jì).pdf
- 應(yīng)用VHDL基于FPGA設(shè)計(jì)FIR濾波器.pdf
- 基于dsp的fir濾波器設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 基于FPGA的浮點(diǎn)型高階FIR濾波器設(shè)計(jì).pdf
- 基于FPGA的高速FIR濾波器設(shè)計(jì)與實(shí)現(xiàn).pdf
- dsp課程設(shè)計(jì)報(bào)告--fir濾波器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于fpga的fir數(shù)字低通濾波器的設(shè)計(jì)
- 基于FPGA的FIR低通濾波器.pdf
- 基于FPGA的FIR數(shù)字濾波器的設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)基于fpga的fir數(shù)字濾波器設(shè)計(jì)
- 基于FPGA的高速FIR數(shù)字濾波器設(shè)計(jì).pdf
- 開題報(bào)告--基于fpga的fir低通數(shù)字濾波器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論