用VHDL設(shè)計(jì)FIR數(shù)字低通濾波器課件_第1頁
用VHDL設(shè)計(jì)FIR數(shù)字低通濾波器課件_第2頁
用VHDL設(shè)計(jì)FIR數(shù)字低通濾波器課件_第3頁
用VHDL設(shè)計(jì)FIR數(shù)字低通濾波器課件_第4頁
用VHDL設(shè)計(jì)FIR數(shù)字低通濾波器課件_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、安徽大學(xué)本科畢業(yè)論文(設(shè)計(jì)、創(chuàng)作)題目: 用VHDL設(shè)計(jì)FIR低通數(shù)字濾波器 學(xué)生姓名: 學(xué)號(hào): 院(系): 電子信息工程學(xué)院 專業(yè): 電子信息工程 入學(xué)時(shí)間: 二九 年 九 月導(dǎo)師姓名: 職稱/學(xué)位: 導(dǎo)師所在單位: 安徽大學(xué)電子信息工程學(xué)院 完成時(shí)間: 二一三 年 六 月29用VHDL設(shè)計(jì)FIR低通數(shù)字濾波器摘 要數(shù)字濾波器在語音與圖像處理生物醫(yī)學(xué)信號(hào)處理通信以及電力系統(tǒng)中有著廣泛的應(yīng)用,它在過濾噪聲、提高信噪比等方面有著重要的意義。本文首先分析了幾種主要的FIR濾波器的實(shí)現(xiàn)方案,經(jīng)過比較,最終采用了利用單位沖激響應(yīng)的對(duì)稱特性的方案。然后根據(jù)FIR低通數(shù)字濾波器的原理與濾波特性,利用MAT

2、LAB中的FDATOOL工具設(shè)計(jì)了一定性能的FIR低通濾波器,獲取濾波器的相應(yīng)系數(shù)并且將其進(jìn)行量化。最后在MAX+PLUS環(huán)境下運(yùn)用VHDL語言和原理圖混合輸入方式實(shí)現(xiàn)了18階FIR低通數(shù)字濾波器,利用MAX+PLUS的仿真器對(duì)設(shè)計(jì)進(jìn)行仿真得到相應(yīng)的濾波仿真結(jié)果,并與MATLAB計(jì)算出來的理論值進(jìn)行比較。此外,還對(duì)理論值與實(shí)際值的誤差進(jìn)行了分析。關(guān)鍵詞:FIR數(shù)字濾波器;MATLAB;VHDL語言;MAX+PLUS Design FIR Low-pass Digital Filter Using VHDLAbstractDigital filter has been widely used i

3、n speech and image processing, biomedical signal processing, communications and power system, which has important significance in filtering noise and improving the signal-noise. At first, this paper analyzes several main scheme of the realization of FIR filter, after comparing, finally adopts the sc

4、heme of using the symmetrical characteristic of the unit impulse response. and then, based on the principle of FIR low pass digital filter and filter characteristics, use FDATOOL of MATLAB tools to design certain properties of the FIR low pass filter, get corresponding filter coefficients and quanti

5、fy it. At last, I use VHDL language and schematic hybrid approach to achieve the 18-order FIR low-pass digital filter in the environment of MAX + PLUS , and make use of MAX + PLUS simulators to simulate the design to get the corresponding filter simulation results which are used to compare with the

6、MATLAB calculated theoretical value. Furthermore, the error between the theoretical value and the actual value are analyzed.Keywords: FIR digital filter;MATLAB;VHDL language;MAX+PLUS 目錄1 引言11.1 論文背景介紹11.2 論文的主要研究?jī)?nèi)容11.3 工作平臺(tái)介紹21.3.1 MATLAB介紹21.3.2 MAX+PLUS22 FIR濾波器22.1 FIR濾波器的基本概念22.2 FIR濾波器的特點(diǎn)22.3 F

7、IR濾波器的結(jié)構(gòu)與原理33 方案分析與設(shè)計(jì)53.1 FIR濾波器的設(shè)計(jì)方案53.2 FIR濾波器指標(biāo)設(shè)計(jì)73.2.1 基于MATLAB的濾波器參數(shù)設(shè)置74 用VHDL設(shè)計(jì)FIR低通數(shù)字濾波器94.1 寄存器104.2 加法器模塊124.3 乘法器模塊134.4 減法器模塊144.5 截取模塊155 FIR濾波器仿真166 結(jié)論17主要參考文獻(xiàn)19附錄A20附錄B21致謝311 引言1.1 論文背景介紹數(shù)字濾波器是數(shù)字信號(hào)處理系統(tǒng)中一種基本的處理部件,濾波是指依據(jù)噪聲與有用信號(hào)頻譜特性的不同,提取有用的信號(hào),濾除不需要的信號(hào),達(dá)到改變輸入信號(hào)中所含頻率分量的相對(duì)比例的目的。數(shù)字濾波器是一個(gè)離散的

8、系統(tǒng),該系統(tǒng)應(yīng)用的對(duì)象是離散信號(hào)。若用數(shù)字濾波器處理模擬信號(hào),則需要對(duì)輸入的模擬信號(hào)進(jìn)行限帶、抽樣、量化和編碼等一系列操作。當(dāng)離散信號(hào)通過特定的數(shù)字濾波器時(shí),濾波器可以提取信號(hào)所含有的有用信息,這就是數(shù)字濾波器的功能。從結(jié)構(gòu)上看,數(shù)字濾波器可由數(shù)字乘法器、加法器和延時(shí)單元組成。數(shù)字濾波器可以從兩個(gè)方面來劃分,按頻率響應(yīng)特性來分,可分為低通、高通、帶通、帶阻濾波器;按單位脈沖響應(yīng)長(zhǎng)度來分,可分為有限長(zhǎng)單位脈沖響應(yīng)(FIR)濾波器和無限長(zhǎng)單位脈沖響應(yīng)(IIR)濾波器1。FIR濾波器與IIR濾波器各有特點(diǎn),在選擇時(shí)可以從實(shí)際應(yīng)用時(shí)的要求出發(fā),從多方面考慮加以選擇2。在用FIR濾波器設(shè)計(jì)和實(shí)現(xiàn)某些特定

9、的應(yīng)用時(shí),會(huì)比IIR濾波器更有優(yōu)勢(shì),例如用頻率抽樣設(shè)計(jì)法設(shè)計(jì)理想正交變換器、線性調(diào)頻器等網(wǎng)絡(luò),會(huì)很靈活。在大多數(shù)數(shù)字信號(hào)處理的場(chǎng)合,數(shù)字濾波器被要求具有能對(duì)輸入的信號(hào)實(shí)時(shí)處理并能進(jìn)行復(fù)雜的運(yùn)算等功能,這些需求越來越普遍,也成為某些數(shù)字濾波器的性能指標(biāo)。在速度方面,F(xiàn)PGA表現(xiàn)出了特有的優(yōu)勢(shì)。FPGA擁有豐富的連線資源和規(guī)范完整的內(nèi)部邏輯塊整列,非常適合用于高并行度結(jié)構(gòu)和細(xì)粒度的FIR濾波器的實(shí)現(xiàn),相對(duì)于串行運(yùn)算的通用DSP芯片來說,可擴(kuò)展性與并行性都更好3。在效率、性價(jià)比、功能和使用靈活性方面有優(yōu)勢(shì)的FPGA數(shù)字信號(hào)處理器,正在通信電力系統(tǒng)圖像處理等領(lǐng)域發(fā)揮著巨大的作用。運(yùn)用分布式算法實(shí)現(xiàn)的F

10、PGA濾波器具有運(yùn)算速度與采樣數(shù)據(jù)的寬度成正比的突出優(yōu)點(diǎn),適合設(shè)計(jì)高速高階的FIR濾波器,在節(jié)省硬件資源和提高系統(tǒng)運(yùn)行速度方面有相當(dāng)大的優(yōu)勢(shì)。另外,可移植性較好,在設(shè)計(jì)不同參數(shù)的濾波器時(shí),只需改變查找表的內(nèi)容就可以滿足具體的實(shí)際需要4。因此,這種方法在高速數(shù)字信號(hào)處理中將有很廣的應(yīng)用領(lǐng)域。1.2 論文的主要研究?jī)?nèi)容本文討論FIR濾波器的多種實(shí)現(xiàn)方案并對(duì)其進(jìn)行比較。選擇利用具有嚴(yán)格線性FIR濾波器的單位沖激響應(yīng)的對(duì)稱特性的方案,用MATLAB中的FDATOOL工具設(shè)計(jì)一定性能的FIR低通數(shù)字濾波器,獲取濾波器的單位脈沖響應(yīng)序列,并進(jìn)行量化。使用VHDL語言設(shè)計(jì)濾波器的基本結(jié)構(gòu),例如:延時(shí)單元、加

11、法器、乘法器、減法器等;在頂層模塊中采用原理圖輸入方式實(shí)現(xiàn)各元件的互連。用MAX+PLUS對(duì)本設(shè)計(jì)進(jìn)行編譯仿真,并與MATLAB計(jì)算出來的理論值進(jìn)行對(duì)比分析。1.3 工作平臺(tái)介紹1.3.1 MATLAB介紹MATLAB(Matrix Laboratory的縮寫)是美國MathWorks公司推出的面向科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的商業(yè)數(shù)學(xué)軟件。如今,MATLAB的功能不僅是解決矩陣與數(shù)值計(jì)算,它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化、以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供一個(gè)全面的解決方案,并

12、在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平5。由于功能非常強(qiáng)大,很多著作在進(jìn)行理論驗(yàn)證或說明一些現(xiàn)象時(shí)都使用MATLAB作為輔助工具。在高校的推廣和應(yīng)用下,MATLAB已成為很多大學(xué)課程,如信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理等的基本教學(xué)工具。1.3.2 MAX+PLUSMAX+PLUS是Altera公司上一代的PLD開發(fā)軟件,提供FPGA/CPLD開發(fā)集成環(huán)境。MAX+PLUS界面友好,使用方便,被稱為業(yè)界最易學(xué)易用的EDA軟件。MAX+PLUS支持VHDL、原理圖和Verilog語言文本文件,以及波形和EDIF等文件作為設(shè)計(jì)輸入,

13、并支持這些文件的混合設(shè)計(jì),提供的設(shè)計(jì)環(huán)境與結(jié)構(gòu)無關(guān),使設(shè)計(jì)者能方便快速地進(jìn)行設(shè)計(jì)輸入、迅速處理和器件的編程。MAX+PLUS還擁有門級(jí)仿真器,可以進(jìn)行功能和時(shí)序仿真,并產(chǎn)生精確的仿真結(jié)果。在適配之后,MAX+PLUS生成供時(shí)序仿真用的VHDL、EDIF和Verilog 3種不同格式的網(wǎng)表文件1。MAX+PLUS具有以下特點(diǎn):(1)開放的界面,與結(jié)構(gòu)無關(guān);(2)完全集成化,豐富的設(shè)計(jì)庫;(3)設(shè)計(jì)環(huán)境可用戶化;(4)支持各種硬件描述語言(HDL)輸入;(5)具有OpenCore(開放核)特征;2 FIR濾波器2.1 FIR濾波器的基本概念FIR濾波器是數(shù)字信號(hào)處理系統(tǒng)中最基本的元器件,主要用來實(shí)

14、現(xiàn)信號(hào)的預(yù)處理、帶選、防混疊、抽選/插補(bǔ)、濾波和視頻卷積等功能,它可以做成具有嚴(yán)格的線性相位的同時(shí)也具有任意的幅頻特性。此外,F(xiàn)IR濾波器能用快速傅里葉算法(FFT)來處理信號(hào)從而提高運(yùn)算效率并且濾波器是穩(wěn)定的,這些特點(diǎn)與其單位抽樣響應(yīng)是有限長(zhǎng)的有關(guān)。因此,F(xiàn)IR濾波器在通信、模式識(shí)別、圖像處理等領(lǐng)域有著非常廣泛的應(yīng)用6。2.2 FIR濾波器的特點(diǎn)FIR數(shù)字濾波器可以是穩(wěn)定的并且可具有良好的線性相位,這些優(yōu)點(diǎn)是它能廣泛應(yīng)用于數(shù)字信號(hào)處理領(lǐng)域的關(guān)鍵。有限沖激響應(yīng)(FIR)濾波器的特點(diǎn)2:(1)FIR濾波器的單位抽樣響應(yīng)是有限長(zhǎng)的,因而濾波器性能穩(wěn)定;(2)既可以具有嚴(yán)格的線性相位,又可以具有任意

15、的幅度;(3)能用因果系統(tǒng)來實(shí)現(xiàn),這是因?yàn)槿魏畏且蚬邢揲L(zhǎng)序列經(jīng)過一定的延時(shí),都能變成因果有限長(zhǎng)序列;(4)FIR有利于對(duì)數(shù)字信號(hào)的處理,方便編程,計(jì)算速度快,便于信號(hào)的實(shí)時(shí)處理;(5)FIR濾波器比較大的缺點(diǎn)就是要取得良好的衰減特性,H(Z)的階次比IIR濾波器要高;(6)IIR濾波器的各種變換方法不適合FIR濾波器的設(shè)計(jì),這是其系統(tǒng)函數(shù)決定的。2.3 FIR濾波器的結(jié)構(gòu)與原理FIR數(shù)字濾波器是一個(gè)線性時(shí)不變系統(tǒng)(LTI),其單位沖激響應(yīng)的z變換為 (1)式(1)系統(tǒng)差分方程為 (2)由式(2)可知n時(shí)刻濾波器的輸出值只決定于n時(shí)刻濾波器的輸入值以及過去N-1個(gè)輸入值,畫出其網(wǎng)絡(luò)結(jié)構(gòu),如圖1

16、所示,這種結(jié)構(gòu)稱為直接型。對(duì)于圖1所示的直接型結(jié)構(gòu),可以知道N+1個(gè)系數(shù)才能描述N階FIR濾波器,N階FIR濾波器得用N+1個(gè)乘法器和N個(gè)兩輸入加法器來實(shí)現(xiàn)。圖1:直接型結(jié)構(gòu)如果FIR濾波器的單位沖激響應(yīng)h(n)滿足式(3)所示的對(duì)稱條件: ,n=0,1,M (3)則該因果系統(tǒng)具有嚴(yán)格的線性相位。利用此對(duì)稱性制作n階FIR濾波器可減少一半的乘法器:當(dāng)n為偶數(shù)時(shí),需要n/2個(gè)乘法器;當(dāng)n為奇數(shù)時(shí),則需要(n+1)/2個(gè)乘法器。在實(shí)際的電路中要盡可能的減少乘法器的使用,這是因?yàn)殡娐返闹谱鞒杀九c乘法器的數(shù)目成正相關(guān),電路的運(yùn)行速度與乘法器的數(shù)目成負(fù)相關(guān)。當(dāng)M為偶數(shù)時(shí),式(2)可化為 (4)把式(3)

17、帶入式(4)得到 (5)對(duì)應(yīng)的偶數(shù)型網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示:圖2:偶數(shù)型結(jié)構(gòu)同理,當(dāng)M為奇數(shù)時(shí),式(2)可化為 (6)對(duì)應(yīng)的奇數(shù)型網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示:圖3:奇數(shù)型結(jié)構(gòu)3 方案分析與設(shè)計(jì)3.1 FIR濾波器的設(shè)計(jì)方案FIR濾波器的設(shè)計(jì)方案相當(dāng)多,一般情況下每個(gè)方案都有側(cè)重的地方和適用的范圍,設(shè)計(jì)時(shí)會(huì)考慮速度、資源、結(jié)構(gòu)、穩(wěn)定性等問題,有時(shí)會(huì)做出折中的選擇。下面介紹幾種方案并分析比較。方案一:此方案是引用圖1所示的直接型結(jié)構(gòu),它沒有經(jīng)過任何化簡(jiǎn),采用并行運(yùn)算的方式進(jìn)行。該方案速度快,通用性強(qiáng),適合參數(shù)可變的FIR濾波器1;但是要實(shí)現(xiàn)高階濾波器則會(huì)占用大量的資源,對(duì)于資源緊缺的FPGA來說,不實(shí)際。方案

18、二:本方案利用了具有嚴(yán)格線性FIR濾波器的單位沖激響應(yīng)的對(duì)稱特性,采用圖2和圖3的結(jié)構(gòu),這樣就可以減少一半的乘法運(yùn)算,節(jié)省資源。其運(yùn)算采用并行方式,不過所選的結(jié)構(gòu)要由濾波器階數(shù)的奇偶性來確定,可見此結(jié)構(gòu)非常適合參數(shù)固定的FIR濾波器。方案三:若要用FPGA實(shí)現(xiàn)參數(shù)可變的FIR濾波器,則其網(wǎng)絡(luò)結(jié)構(gòu)必須是通用型的。方案三的網(wǎng)絡(luò)結(jié)構(gòu)仍采用直接型,只是在進(jìn)行乘法運(yùn)算時(shí),用串行乘法代替并行乘法,拿更多的運(yùn)行時(shí)間來換取少占資源。串行乘法器模塊圖如圖4所示,圖中的AB是兩個(gè)N位的乘數(shù)。串行乘法器的工作原理是:首先將輸入數(shù)據(jù)B通過并串轉(zhuǎn)換器使并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),從數(shù)學(xué)的角度來看即將其寫成幾個(gè)2的冪的和的形

19、式;接著A和轉(zhuǎn)換后的數(shù)據(jù)B進(jìn)入乘法器,運(yùn)算結(jié)果通過加法器;最后將加法器的輸出進(jìn)行循環(huán)移位累加,N次移位相加后輸出結(jié)果。圖4:串行乘法器方案四:本方案使用乘法表來實(shí)現(xiàn)乘法運(yùn)算,用查表的方式來得到兩輸入數(shù)的乘積結(jié)果,即把兩乘數(shù)作為ROM的地址,對(duì)應(yīng)的單元數(shù)據(jù)就是乘積。此方法精度高,速度快,結(jié)構(gòu)簡(jiǎn)單,適合參數(shù)固定,數(shù)據(jù)位數(shù)少的濾波器,如果數(shù)據(jù)位數(shù)多則就不合適1。方案四的結(jié)構(gòu)圖如圖5所示:圖5:采用乘法表的濾波器結(jié)構(gòu)方案五:本方案綜合了方案三方案四,有了較好的改進(jìn),基本原理如下:假設(shè)濾波器是N階的M位,則系統(tǒng)的差分方程為 (7)可表示為 (8)由式(7)可以得到該方案的結(jié)構(gòu),如圖6所示,其中的用串行時(shí)

20、序來實(shí)現(xiàn),用移位寄存器來實(shí)現(xiàn),用N個(gè)1W乘法器來實(shí)現(xiàn), 用加法樹來實(shí)現(xiàn)。此外,要實(shí)現(xiàn)用方案五制作的FIR濾波器的濾波功能,除了需要上述的串行時(shí)序、移位寄存器、N個(gè)1W乘法器、加法樹外,還需要設(shè)計(jì)一個(gè)總控制單元用于協(xié)調(diào)各部件按照設(shè)定的時(shí)序運(yùn)行,完成FIR濾波操作。圖6:方案五結(jié)構(gòu)圖以上討論了五種制作FIR濾波器的方法,各有優(yōu)缺點(diǎn),結(jié)合自己本身的情況和方案的設(shè)計(jì)難易程度綜合考慮,決定選擇方案二的結(jié)構(gòu)來完成本次的畢業(yè)論文。3.2 FIR濾波器指標(biāo)設(shè)計(jì)本文設(shè)計(jì)的FIR低通數(shù)字濾波器的設(shè)計(jì)指標(biāo)為:(1)濾波器階數(shù)為18階;(2)采用Kaiser窗函數(shù)設(shè)計(jì),Beta為0.5;(3)采樣頻率Fs為48KHZ

21、,截止頻率Fc為10KHZ;(4)輸入序列位寬為8位的有符號(hào)數(shù);(5)輸出序列的位寬為8位的有符號(hào)數(shù)。3.2.1 基于MATLAB的濾波器參數(shù)設(shè)置在MATLAB的命令編輯窗口中輸入Fdatool指令,回車后即可打開Filter Design & Analysis Tool窗口,如圖7所示,利用此工具,可以快速的完成FIR濾波器系數(shù)的計(jì)算工作。由圖7可知Fdatool界面可分為兩大部分,在界面的上半部分是特性區(qū),用來顯示濾波器的各種特性;界面的下半部分則是濾波器設(shè)計(jì)區(qū),用來設(shè)置濾波器的參數(shù)。圖7:Filter Design & Analysis Tool窗口按照設(shè)計(jì)指標(biāo)的參數(shù)要求,輸入相應(yīng)的參數(shù)

22、,設(shè)置好的參數(shù)如圖8所示:圖8:濾波器參數(shù)設(shè)置單擊工具窗口下方的Design Filter按鈕,開始進(jìn)行相關(guān)參數(shù)計(jì)算。此時(shí),可以看到該濾波器的一些相關(guān)曲線,如圖9幅頻響應(yīng)、圖10相頻響應(yīng)、圖11沖激響應(yīng)。圖9:幅頻響應(yīng)圖10:相頻響應(yīng)圖11:沖激響應(yīng)運(yùn)算的結(jié)果通過File下拉菜單中的Export命令取出,并將濾波器的系數(shù)存放到當(dāng)前工作空間,并且以Num命名。保存并關(guān)閉濾波器設(shè)計(jì)分析工具回到MATLAB主窗口,在命令編輯區(qū)輸入Num可得到工具的計(jì)算結(jié)果7。對(duì)FIR濾波器的系數(shù)進(jìn)行調(diào)整,做整數(shù)化操作后得到濾波器的系數(shù)如圖12所示。圖12:整數(shù)化后的沖激系數(shù)4 用VHDL設(shè)計(jì)FIR低通數(shù)字濾波器FI

23、R低通數(shù)字濾波器可分為以下五種模塊:寄存器加法器乘法器減法器截取模塊,完成所需的相關(guān)模塊后在頂層文件中進(jìn)行連接,綜合,以實(shí)現(xiàn)低通濾波功能。本文的FIR低通濾波器的原理圖如圖13所示。圖中的寄存器模塊有兩個(gè)不同的功能,乘法器級(jí)之后的只起到信號(hào)延時(shí)的作用,目的是為了整體仿真時(shí)內(nèi)部信號(hào)在時(shí)序上的一致性。圖13:FIR低通濾波器的原理圖4.1 寄存器寄存器用來寄存一組二值代碼,對(duì)其觸發(fā)器只要求具有置0置1的功能即可。本文用D觸發(fā)器組成兩種不同的寄存器,實(shí)現(xiàn)寄存功能。(1)具有異步復(fù)位功能,當(dāng)rst=1時(shí),輸出信號(hào)Dout=0;當(dāng)rst=0且clk上升沿脈沖到達(dá)時(shí)Dout=Din;如圖14所示。 圖14

24、:第一種寄存器 程序如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY reg8 ISPORT(rst:IN STD_LOGIC; clk:IN STD_LOGIC; Din:IN SIGNED(7 DOWNTO 0); Dout:OUT SIGNED(7 DOWNTO 0);END reg8;ARCHITECTURE rt OF reg8 ISBEGINPROCESS(clk,rst)BEGINIF (rst=1 )THENDout0);ELSIF(clkEVENT AND cl

25、k=1) THENDout=Din;END IF;END PROCESS;END rt;仿真結(jié)果如圖15所示:圖15:寄存器仿真結(jié)果(2)不具有異步復(fù)位功能,僅起到數(shù)據(jù)暫存作用,在電路中的作用是使得電路中的信號(hào)在時(shí)序上保持一致。如圖16所示,程序與第一種類似。圖16:第二種寄存器4.2 加法器模塊加法器用來完成兩個(gè)有符號(hào)數(shù)的相加運(yùn)算。在時(shí)鐘信號(hào)上升沿到達(dá)時(shí),對(duì)輸入的兩有符號(hào)數(shù)進(jìn)行相加運(yùn)算后輸出結(jié)果。加法器有并行進(jìn)位和串行進(jìn)位兩種組成方式:串行進(jìn)位加法器運(yùn)算速度慢,資源占用少,而并行加法器剛好相反。本文所用的加法器都采用并行進(jìn)位方式,共有以下幾種加法器:兩個(gè)8位有符號(hào)數(shù)相加產(chǎn)生9位有符號(hào)數(shù)的加法

26、器、11位和13位有符號(hào)數(shù)相加產(chǎn)生14位有符號(hào)數(shù)的加法器、兩個(gè)13位有符號(hào)數(shù)相加產(chǎn)生14位有符號(hào)數(shù)的加法器、12位和14位有符號(hào)數(shù)相加產(chǎn)生15位有符號(hào)數(shù)的加法器、11位和15位有符號(hào)數(shù)相加產(chǎn)生16位有符號(hào)數(shù)的加法器、15位和16位有符號(hào)數(shù)相加產(chǎn)生17位有符號(hào)數(shù)的加法器、14位和16位有符號(hào)數(shù)相加產(chǎn)生17位有符號(hào)數(shù)的加法器、14位和17位有符號(hào)數(shù)相加產(chǎn)生18位有符號(hào)數(shù)的加法器。僅以15位有符號(hào)數(shù)加16位有符號(hào)數(shù)生成17位有符號(hào)數(shù)的加法器為例,其模塊框圖如圖17所示。圖17:加法器結(jié)構(gòu)圖程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD

27、_LOGIC_ARITH.ALL;ENTITY add151617 ISPORT(clk:IN STD_LOGIC; Din1:IN SIGNED(14 DOWNTO 0); Din2:IN SIGNED(15 DOWNTO 0); Dout:OUT SIGNED(16 DOWNTO 0);END add151617;ARCHITECTURE rt OF add151617 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=(Din1(14)&Din1(14)&Din1)+(Din2(15)&Din2);END IF;END PRO

28、CESS;END rt;仿真結(jié)果如圖18所示:圖18:加法器仿真結(jié)果4.3 乘法器模塊本文設(shè)計(jì)的乘法器具有對(duì)輸入數(shù)據(jù)進(jìn)行固定的放大作用,即乘法器的系數(shù)是固定的。乘法器在時(shí)鐘信號(hào)上升沿到達(dá)時(shí),完成輸入的有符號(hào)數(shù)與濾波器系數(shù)這兩個(gè)數(shù)的乘法運(yùn)算,之后輸出結(jié)果??紤]速度和資源,確定系數(shù)的乘法運(yùn)算可以用移位相加來實(shí)現(xiàn),即將系數(shù)分解成幾個(gè)2的冪的和形式8。本文設(shè)計(jì)的FIR低通數(shù)字濾波器系數(shù)分別為-9、-4、10、11、-7、-23、-4、50、99、99、50、-4、-23、-7、11、10、-4、-9。由于采用了偶數(shù)型的對(duì)稱結(jié)構(gòu),濾波器的系數(shù)只需要使用一半,即乘法器數(shù)目減半。在編寫程序時(shí),所有的系數(shù)都先

29、當(dāng)成正值,在后面的求和運(yùn)算時(shí)改為減法運(yùn)算即可。 以乘99乘法器為例,其模塊框圖如圖19所示。圖19:乘99乘法器結(jié)構(gòu)圖乘99乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult99 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(15 DOWNTO 0);END mult99;ARCHITECTURE rt OF mult99 ISSIGNAL s1:SIGNED(14 DOWNTO 0

30、);SIGNAL s2:SIGNED(13 DOWNTO 0);SIGNAL s3:SIGNED(9 DOWNTO 0);SIGNAL s4:SIGNED(15 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000000;s2=Din&00000;s3=Din&0;IF(Din(8)=0) THENs4=(0&s1)+(00&s2)+(00000&s3)+(0000000&Din);ELSEs4=(1&s1)+(11&s2)+(11111&s3)+(1111111&Din);END IF;END PROCESS;A2:PROCESS(clk,s4)BEG

31、INIF(clkevent and clk=1) THENDout=s4;END IF;END PROCESS;END rt;仿真結(jié)果如圖20所示:圖20:乘99乘法器仿真結(jié)果4.4 減法器模塊減法器的原理與加法器類似,區(qū)別僅在于輸出結(jié)果為兩數(shù)的差值。當(dāng)時(shí)鐘信號(hào)上升沿到來時(shí),實(shí)現(xiàn)兩個(gè)有符號(hào)數(shù)的相減操作,并輸出結(jié)果。本文采用18位有符號(hào)數(shù)減去17位有符號(hào)數(shù)生成18位有符號(hào)數(shù)的減法器,其結(jié)構(gòu)框圖與加法器差別不大。程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY sub181718 ISPO

32、RT(clk:IN STD_LOGIC; Din1:IN SIGNED(17 DOWNTO 0); Din2:IN SIGNED(16 DOWNTO 0); Dout:OUT SIGNED(17 DOWNTO 0);END sub181718;ARCHITECTURE rt OF sub181718 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=Din1-(Din2(16)&Din2);END IF;END PROCESS;END rt;仿真結(jié)果如下圖21所示:圖21:減法器仿真結(jié)果4.5 截取模塊減法器的下一級(jí)是電路的最后一級(jí)

33、,減法器的輸出為18位有符號(hào)數(shù),按照設(shè)計(jì)要求輸出為8位數(shù)據(jù),所以截取模塊將減法器輸出的18位數(shù)據(jù)低位舍去直接輸出高8位,因此截取后的輸出近似等于除掉了28即256后的結(jié)果。模塊結(jié)構(gòu)圖如圖22所示:圖22:截取模塊結(jié)構(gòu)圖程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cut188 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(17 DOWNTO 0); Dout:OUT SIGNED(7 DOWNTO 0);END cut188;ARCHITECTURE

34、 rt OF cut188 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=1) THENDout=Din(17 downto 10);END IF;END PROCESS;END rt;仿真結(jié)果如圖23所示:圖23:截取模塊仿真結(jié)果5 FIR濾波器仿真MAX+PLUS仿真器的Grid size項(xiàng)(此項(xiàng)用來設(shè)置時(shí)鐘脈沖的周期)設(shè)置為50ns,End time(結(jié)束時(shí)間)設(shè)置為5.0us。任意設(shè)定輸入的信號(hào)為:Din98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0

35、, 98,0,0,0,76,0,0,0,98,0,0,0,76,0,0,0,98,0 。得到的仿真結(jié)果如圖24所示:圖24:18階FIR濾波器濾波結(jié)果6 結(jié)論用MATLAB計(jì)算FIR低通濾波器的輸出結(jié)果,運(yùn)算公式為yn=conv(xn,hn),與仿真器得到的結(jié)果如下表1所示:表1:仿真結(jié)果驗(yàn)證輸出結(jié)果yn理論值仿真結(jié)果MATLAB卷積值/256經(jīng)仿真器仿真-0.8613255-0.38282550.9570 01.05271-1.3379254-2.49802530.359405.601658.093887.384875.445354.380943.808634.179745.123056.2

36、6176y06.00396Y16.00396y26.26176y35.12305y43.51173y53.51173y65.12305y76.26176y86.00396y96.00396y106.26176y115.12305y123.51173y133.51173y145.12305y156.26176y166.00396y176.00396MAX+PLUS的仿真器支持四種類型的數(shù):二進(jìn)制、四進(jìn)制、八進(jìn)制、十六進(jìn)制9。當(dāng)進(jìn)行減法運(yùn)算時(shí),如果被減數(shù)小于減數(shù)則被減數(shù)會(huì)向高位借位,使輸出結(jié)果為正。在此情況下,如果仿真器結(jié)果顯示255,實(shí)際的數(shù)為-1、254則為-2、253實(shí)際為-3。對(duì)于仿真器輸

37、出的是正數(shù)還是負(fù)數(shù),要通過上級(jí)減法器的兩個(gè)輸入信號(hào)的仿真波形圖來判斷。修正表1中的數(shù)據(jù)后,用MATLAB制作18階FIR濾波器理論值與仿真值對(duì)比圖如圖25所示,其中虛線為理論值,實(shí)線為仿真值。圖25:18階FIR濾波器理論值與仿真值對(duì)比圖由表1可以看出,仿真結(jié)果與MATLAB計(jì)算出來的輸出信號(hào)理論值基本吻合,且波形基本沒有毛刺,達(dá)到設(shè)計(jì)要求。此外,從圖25中也可以證明這點(diǎn)。圖25理論值與仿真值所表現(xiàn)出來的誤差,可以從三個(gè)方面進(jìn)行理解:首先,用MATLAB獲取濾波器系數(shù)時(shí)進(jìn)行了取整運(yùn)算,舍去了小數(shù)位,產(chǎn)生誤差;其次,在本設(shè)計(jì)頂層電路的最后一級(jí)使用了截取模塊,采用直接截取數(shù)據(jù)高8位的方式,這樣不可

38、避免的帶來了誤差;最后,VHDL仿真器進(jìn)行時(shí)序仿真時(shí)會(huì)存在延時(shí)問題從而影響輸出結(jié)果,對(duì)于這方面的影響,可增加時(shí)鐘周期的寬度來減小。主要參考文獻(xiàn):1潘松,王國棟.VHDL實(shí)用教程M. 成都:電子科技大學(xué)出版社,2007.2程佩青.數(shù)字信號(hào)處理教程M. 北京:清華大學(xué)出版社,2008.3張秀娟.基于DA算法的FIR數(shù)字濾波器的FPGA設(shè)計(jì)J. 計(jì)算機(jī)與數(shù)學(xué)工程,2010(6):165.4薛嚴(yán)冰,韓雪,邵遠(yuǎn).基于分布式算法的FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)J. 大連交通大學(xué)學(xué)報(bào)2009,8:84-87.5周品.MATLAB神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)與應(yīng)用M. 北京:清華大學(xué)出版社,2013.6劉欲曉,方強(qiáng).EDA技

39、術(shù)與VHDL電路開發(fā)應(yīng)用實(shí)踐M. 北京:電子工業(yè)出版社,2009.7岑光.基于FPGA的FIR數(shù)字濾波器研究與設(shè)計(jì)D. 西安:西安電子科技大學(xué)生物醫(yī)學(xué)工程系,2011.8王丹琦,趙惠昌.一種基于MATLAB及FPGA的FIR低通數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)J. 電子設(shè)計(jì)工程,2010,7:131-134.9Volnei A.Pedroni.VHDL數(shù)字電路設(shè)計(jì)教程M. 北京:電子工業(yè)出版社,2013.附錄AFIR低通數(shù)字濾波器的原理圖附錄B乘法器與加法器程序乘4乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARIT

40、H.ALL;ENTITY mult4 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(10 DOWNTO 0);END mult4;ARCHITECTURE rt OF mult4 ISSIGNAL s1:SIGNED(10 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&00;END PROCESS;A2:PROCESS(clk,s1)BEGINIF(clkevent and clk=1) THENDout=s1;END IF;END PROCESS;END rt;乘

41、7乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult7 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(11 DOWNTO 0);END mult7;ARCHITECTURE rt OF mult7 ISSIGNAL s1:SIGNED(10 DOWNTO 0);SIGNAL s2:SIGNED(9 DOWNTO 0);SIGNAL s3:SIGNED(11 DOWNTO 0);BEG

42、INA1:PROCESS(Din)BEGIN s1=Din&00;s2=Din&0;IF(Din(8)=0) THENs3=(0&s1)+(00&s2)+(000&Din);ELSEs3=(1&s1)+(11&s2)+(111&Din);END IF;END PROCESS;A2:PROCESS(clk,s3)BEGINIF(clkevent and clk=1) THENDout=s3;END IF;END PROCESS;END rt;乘9乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;

43、ENTITY mult9 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(12 DOWNTO 0);END mult9;ARCHITECTURE rt OF mult9 ISSIGNAL s1:SIGNED(11 DOWNTO 0);SIGNAL s2:SIGNED(12 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000;IF(Din(8)=0) THENs2=(0&s1)+(0000&Din);ELSEs2=(1&s1)+(1111&Din);END IF;EN

44、D PROCESS;A2:PROCESS(clk,s2)BEGINIF(clkevent and clk=1) THENDout=s2;END IF;END PROCESS;END rt;乘10乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult10 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(12 DOWNTO 0);END mult10;ARCHITECTURE rt OF mu

45、lt10 ISSIGNAL s1:SIGNED(11 DOWNTO 0);SIGNAL s2:SIGNED(9 DOWNTO 0);SIGNAL s3:SIGNED(12 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000;s2=Din&0;IF(Din(8)=0) THENs3=(0&s1)+(000&s2);ELSEs3=(1&s1)+(111&s2);END IF;END PROCESS;A2:PROCESS(clk,s3)BEGINIF(clkevent and clk=1) THENDout=s3;END IF;END PROCESS;END

46、 rt;乘11乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY mult11 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(12 DOWNTO 0);END mult11;ARCHITECTURE rt OF mult11 ISSIGNAL s1:SIGNED(11 DOWNTO 0);SIGNAL s2:SIGNED(9 DOWNTO 0);SIGNAL s3:SIGNED(12 DOWN

47、TO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&000;s2=Din&0;IF(Din(8)=0) THENs3=(0&s1)+(000&s2)+(0000&Din);ELSEs3=(1&s1)+(111&s2)+(1111&Din);END IF;END PROCESS;A2:PROCESS(clk,s3)BEGINIF(clkevent and clk=1) THENDout=s3;END IF;END PROCESS;END rt;乘23乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_L

48、OGIC_ARITH.ALL;ENTITY mult23 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(13 DOWNTO 0);END mult23;ARCHITECTURE rt OF mult23 ISSIGNAL s1:SIGNED(12 DOWNTO 0);SIGNAL s2:SIGNED(10 DOWNTO 0);SIGNAL s3:SIGNED(9 DOWNTO 0);SIGNAL s4:SIGNED(13 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din

49、&0000;s2=Din&00;s3=Din&0;IF(Din(8)=0) THENs4=(0&s1)+(000&s2)+(0000&s3)+(00000&Din);ELSEs4=(1&s1)+(111&s2)+(1111&s3)+(11111&Din);END IF;END PROCESS;A2:PROCESS(clk,s4)BEGINIF(clkevent and clk=1) THENDout=s4;END IF;END PROCESS;END rt;乘50乘法器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_

50、ARITH.ALL;ENTITY mult50 ISPORT(clk:IN STD_LOGIC; Din:IN SIGNED(8 DOWNTO 0); Dout:OUT SIGNED(14 DOWNTO 0);END mult50;ARCHITECTURE rt OF mult50 ISSIGNAL s1:SIGNED(13 DOWNTO 0);SIGNAL s2:SIGNED(12 DOWNTO 0);SIGNAL s3:SIGNED(9 DOWNTO 0);SIGNAL s4:SIGNED(14 DOWNTO 0);BEGINA1:PROCESS(Din)BEGIN s1=Din&0000

51、0;s2=Din&0000;s3=Din&0;IF(Din(8)=0) THENs4=(0&s1)+(00&s2)+(00000&s3);ELSEs4=(1&s1)+(11&s2)+(11111&s3);END IF;END PROCESS;A2:PROCESS(clk,s4)BEGINIF(clkevent and clk=1) THENDout=s4;END IF;END PROCESS;END rt;8位有符號(hào)數(shù)加8位有符號(hào)數(shù)生成9位有符號(hào)數(shù)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY add889 ISPORT(clk:IN STD_LOGIC; Din1:IN SIGNED(7 DOWNTO 0); Din2:IN S

溫馨提示

  • 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. 人人文庫網(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)論