基于FPGA的IIR濾波器設(shè)計_第1頁
基于FPGA的IIR濾波器設(shè)計_第2頁
基于FPGA的IIR濾波器設(shè)計_第3頁
基于FPGA的IIR濾波器設(shè)計_第4頁
基于FPGA的IIR濾波器設(shè)計_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 基于FPGA的IIR濾波器設(shè)計摘 要:數(shù)字信號處理在科學(xué)和工程技術(shù)許多領(lǐng)域中得到廣泛的應(yīng)用,與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得較高的選擇性,故本課題采用一種基于FPGA的IIR數(shù)字濾波器的設(shè)計方案,首先分析了IIR數(shù)字濾波器的原理及設(shè)計方法,然后通過MAX+PLUS的設(shè)計平臺,采用自頂向下的模塊化設(shè)計思想將整個IIR數(shù)字濾波器分為:時序控制、延時、補(bǔ)碼乘加和累加四個功能模塊。分別對各模塊采用VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合。仿真結(jié)果表明,本課題所設(shè)計的IIR數(shù)字濾波器運算速度較快,系數(shù)改變靈活,有較好的參考價值。關(guān)鍵詞:電子設(shè)計自動化,IIR數(shù)字濾波器,現(xiàn)場可編

2、程門陣列,硬件描述語言第42頁 共38頁The design for IIR digital filter based on FPGAAbstract: Digital signal processing is widely used in lots of fields, such as in science and project technique. Compared with FIR digital filter, IIR digital filter can get high selectivity with low factorial. A kind of IIR digital f

3、ilter design method was introduced in the paper, which is based on FPGA. By used the design plant of MAX+PLUS, we adopt blocking method named “Top-down ” and divide the entire IIR digital filter into four blocks, which are Clock control, Time delay, Multiply-addition and Progression. After described

4、 with VHDL, we do emulate and synthesis to each block. The result shows that, the introduced IIR digital filter runs fast, and the coefficient changes agility. It has high worth for consulting.Key words: Electronic Design Automation, IIR Digital Filter, Field Programmable Gate Array, very High Speed

5、 Integrated Circuit Hardware Description Language (VHDL)目 錄序言1第1章 IIR數(shù)字濾波器及其硬件實現(xiàn)方法21.1 IIR數(shù)字濾波器概念21.1.1 IIR數(shù)字濾波器的原理21.1.2 IIR數(shù)字濾波器的基本結(jié)構(gòu)21.1.3 IIR數(shù)字濾波器的設(shè)計方法31.2 IIR數(shù)字濾波器的硬件實現(xiàn)方案4第2章 EDA技術(shù)和可編程邏輯器件82.1 電子設(shè)計自動化EDA技術(shù)82.2 可編程邏輯器件82.2.1 可編程邏輯器件簡介82.2.2 使用FPGA器件進(jìn)行開發(fā)的優(yōu)點92.2.3 FPGA設(shè)計的開發(fā)流程92.3 硬件描述語言VHDL及數(shù)字系統(tǒng)設(shè)計

6、方法102.3.1 硬件描述語言VHDL簡介102.3.2 利用VHDL設(shè)計數(shù)字系統(tǒng)10第3章 IIR數(shù)字濾波器的設(shè)計與仿真結(jié)果分析113.1 IIR數(shù)字濾波器各模塊的設(shè)計與仿真結(jié)果分析113.1.1 時序控制模塊的設(shè)計與仿真結(jié)果分析113.1.2 延時模塊的設(shè)計與仿真結(jié)果分析123.1.3 補(bǔ)碼乘加模塊的設(shè)計與仿真結(jié)果分析123.1.4 累加模塊的設(shè)計與仿真結(jié)果分析143.1.5 頂層模塊設(shè)計143.2 IIR數(shù)字濾波器的仿真與結(jié)果分析153.2.1 IIR數(shù)字濾波器的系統(tǒng)設(shè)計153.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結(jié)果分析163.2.3 高階IIR數(shù)字濾波器的實現(xiàn)17結(jié)束語19參考文獻(xiàn)

7、20致 謝21附錄1 各模塊VHDL程序22附錄2 英文翻譯29 基于FPGA的IIR濾波器設(shè)計序 言隨著EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大和深入,EDA技術(shù)在電子信息、通信、自動控制及計算機(jī)應(yīng)用等領(lǐng)域的重要性日益突出。這些技術(shù)的使用使得現(xiàn)代電子產(chǎn)品的體積減小、性能增強(qiáng)、集成化程度提高,與此同時其可編程能力也得以提高。在使用EDA進(jìn)行電子設(shè)計時,設(shè)計人員可按照“自頂向下”的設(shè)計方法,對整個系統(tǒng)進(jìn)行方案設(shè)計和功能劃分,采用硬件描述語言(DHL)完成系統(tǒng)行為級設(shè)計,最后通過綜合器和適配器生成最終的目標(biāo)器件。VHDL語言是EDA設(shè)計中常用的一種IEEE標(biāo)準(zhǔn)語言,其具有覆蓋面廣、描述能力強(qiáng)、可讀性好、支

8、持大規(guī)模設(shè)計及邏輯單元利用等優(yōu)點,因此受到越來越多的電子工程師的青睞1。本次設(shè)計采用EDA技術(shù)中的模塊化設(shè)計思想,就IIR數(shù)字濾波器中的一些關(guān)鍵電路進(jìn)行設(shè)計,主要內(nèi)容包括:時序控制模塊、延時模塊、補(bǔ)碼乘加模塊、累加模塊和IIR數(shù)字濾波器的頂層設(shè)計。分別對各模塊采用VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合,取得了較好的設(shè)計效果。實驗結(jié)果表明,本課題所設(shè)計的IIR數(shù)字濾波器具有運算速度快,系數(shù)改變靈活方便等特點。第1章 IIR數(shù)字濾波器及其硬件實現(xiàn)方法1.1 IIR數(shù)字濾波器概念數(shù)字濾波器是完成信號濾波處理功能的,用有限精度算法實現(xiàn)的離散時間線性非時變系統(tǒng)2。輸入一組數(shù)字量,通過運算輸出的是另一組數(shù)字

9、量。數(shù)字濾波器具有穩(wěn)定性好、精度高、靈活性大等突出優(yōu)點。隨著數(shù)字技術(shù)的發(fā)展,用數(shù)字技術(shù)設(shè)計濾波器的功能越來越受到人們的注意和廣泛的應(yīng)用。1.1.1 IIR數(shù)字濾波器的原理一個數(shù)字濾波器的系統(tǒng)函數(shù)可以表示為2:= (1.1.1)直接由得出表示輸入輸出關(guān)系的常系數(shù)線性差分方程為: (1.1.2)式中、為濾波系數(shù),當(dāng)均為零時,該濾波器為FIR數(shù)字濾波器,當(dāng)不均為零時,則為IIR數(shù)字濾波器。與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得高的選擇性,所用的存儲單元少,成本低、信號延遲小,并且IIR數(shù)字濾波器可以借助于模擬濾波器的設(shè)計成果,設(shè)計工作量相對較小,為此,本文就IIR數(shù)字濾波器進(jìn)行

10、相關(guān)討論。 1.1.2 IIR數(shù)字濾波器的基本結(jié)構(gòu)IIR數(shù)字濾波器有直接型、級聯(lián)型和并聯(lián)型三種基本結(jié)構(gòu)2。由IIR數(shù)字濾波器的階差分方程(1.1.2)式可知,設(shè)=2,則網(wǎng)絡(luò)結(jié)構(gòu)如圖1-1所示。x(n)a0b1a2b0a1y(n)z-1z-1圖1-1 直接型結(jié)構(gòu) 1.1.3 IIR數(shù)字濾波器的設(shè)計方法IIR數(shù)字濾波器的設(shè)計方法通常有模擬轉(zhuǎn)換法、零極點累試法和優(yōu)化設(shè)計法2。1. IIR數(shù)字濾波器的模擬轉(zhuǎn)換設(shè)計法利用模擬濾波器成熟的理論和設(shè)計方法來設(shè)計IIR數(shù)字濾波器是經(jīng)常使用的方法。設(shè)計過程是:按照技術(shù)要求設(shè)計一個模擬濾波器,得到濾波器的傳輸函數(shù),再按一定的轉(zhuǎn)換關(guān)系將轉(zhuǎn)換成數(shù)字濾波器的系統(tǒng)函數(shù)。將

11、傳輸函數(shù)從s平面轉(zhuǎn)移到z平面的方法有多種,但工程上常用的是脈沖響應(yīng)不變法和雙線性變換法。2. IIR數(shù)字濾波器的零極點累試法上述介紹的模擬轉(zhuǎn)換設(shè)計法實際上是數(shù)字濾波器的一種間接設(shè)計方法,而且幅度特性受到所選模擬濾波器特性的限制。例如巴特沃斯低通幅度特性是單調(diào)下降,而切比雪夫低通特性帶內(nèi)或帶外有上、下波動等,對于要求任意幅度特性的濾波器,則不適合采用這種方法。下述介紹的在數(shù)字域直接設(shè)計IIR數(shù)字濾波器的設(shè)計方法,其特點是適合設(shè)計任意幅度特性的濾波器。在IIR數(shù)字濾波器的直接設(shè)計法中零極點累試法較為常用,設(shè)單位脈沖響應(yīng)的零極點表達(dá)式為2: (1.1.3)按照(1.1.3)式,系統(tǒng)特性取決于系統(tǒng)零極

12、點的分布,通過分析,我們知道系統(tǒng)極點位置主要影響系統(tǒng)幅度特性峰值位置及其尖銳程度,零點位置主要影響系統(tǒng)幅度特性的谷值位置及其凹下的程度;且通過零極點分析的幾何作圖法可以定性地畫出其幅度特性。上面的結(jié)論及方法提供了一種直接設(shè)計濾波器的方法。這種設(shè)計方法是根據(jù)其幅度特性先確定零極點位置,再按照確定的零極點寫出其系統(tǒng)函數(shù),畫出其幅度特性,并與希望的進(jìn)行比較,如不滿足要求。可通過移動零極點位置或增加(減少)零極點,進(jìn)行修正。3.優(yōu)化設(shè)計法IIR 數(shù)字濾波器除模擬轉(zhuǎn)換設(shè)計法和零極點累試法外,還有一種直接在頻域或者時域中進(jìn)行設(shè)計,聯(lián)立方程后需要計算機(jī)作輔助運算的方法,即所謂的優(yōu)化設(shè)計法。1.2 IIR數(shù)字

13、濾波器的硬件實現(xiàn)方案濾波器的實現(xiàn)主要包括兩大類:DSPTMS320系列芯片的實現(xiàn)和ISP器件的實現(xiàn)(主要包括FPGA和CPLD)。其中利用DSPTMS320系列芯片實現(xiàn)濾波時速度較慢,而利用ISP器件實現(xiàn)時,其運算速度比DSP器件要快好多倍。FPGA的實現(xiàn)包括其自帶的核的實現(xiàn)方法和自編程實現(xiàn)方法。核的實現(xiàn)方法雖然好用并且結(jié)構(gòu)縝密,但一般情況下使用的權(quán)限都會受到注冊購買的限制,因此基于FPGA的自編程實現(xiàn)方法成了濾波器實現(xiàn)的首選3。以下簡要介紹IIR數(shù)字濾波器的設(shè)計方案和基于FPGA的實現(xiàn)方法4。1.方案一:直接相乘累加式對于二階的IIR數(shù)字濾波器,其傳遞函數(shù)為: (1.2.1)濾波器信號流圖見

14、圖1-1,在第n時刻,是當(dāng)時的輸入樣本; 是n時刻的IIR濾波器的輸出: (1.2.2)因此,可以用硬件乘法器和硬件加法器來實現(xiàn)乘法和加法。由式(1.2.2)可以看出,按照這種設(shè)計方法,要用到5個乘法器和6個加法器。對于FPGA的設(shè)計來說,這種方法的缺點是比較耗費資源。2.方案二:基于ROM查表法的VHDL結(jié)構(gòu)化設(shè)計采用ROM查表的方法,主要是為了避免使用硬件乘法器。二階IIR的一般表示形式為: (1.2.3)其中是輸入序列,是輸出序列,和是系數(shù)。假設(shè)輸入序列為位2的補(bǔ)碼,并以定點表示,并<1,對于可以表示為: (1.2.4)式中:表示的第位,上標(biāo)為0的是符號位,因此可以定義一個5bit

15、為變量的函數(shù)為: (1.2.5)由此可以得到:- (1.2.6)由于函數(shù)僅有32種可能取值,因此可以設(shè)計一個32*b位的ROM構(gòu)成的如圖1-3描述的基于ROM的實現(xiàn)結(jié)構(gòu)。數(shù)據(jù)輸入串行移入SR1和SR2,由抽頭處得到,每計算出一個值后,便并行加載到SR3中,然后串行移入SR4,并在抽頭處得到和。ROM的輸入地址由組成。按此方法設(shè)計的優(yōu)點是避免了占主要運算量的乘法運算,節(jié)省了FPGA的硬件資源,缺點與FIR濾波器利用ROM方法設(shè)計相同,即使用不夠靈活。當(dāng)系數(shù)發(fā)生變化時,更改ROM內(nèi)的數(shù)據(jù)十分不便,特別是當(dāng)階數(shù)比較大時,ROM內(nèi)的數(shù)據(jù)較多,程序外的運算量也很大,修改數(shù)據(jù)更為不便。 圖1-2 ROM查

16、表法實現(xiàn)框圖3.方案三:基于ROM查表法的改進(jìn)型設(shè)計此方法結(jié)合了直接相乘累加式和ROM查表法的優(yōu)點,使得設(shè)計靈活,設(shè)計周期短,節(jié)省資源。二階IIR的一般表示形式為: (1.2.6)這里是輸入序列,是輸出序列,和是系數(shù)。設(shè)輸入序列為位2的補(bǔ)碼,并以定點表示,并<1,對于可以表示為: (1.2.7)式中:表示的第位,上標(biāo)為0的是符號位,因此可以定義一個5bit為變量的函數(shù)為: (1.2.8)同理可得: (1.2.9)由此可以得到: (1.2.10)令,可以推出: (1.2.11)從式(1.2.11)中可以看出,可以用一個五路8位*1位乘法器在8個時鐘周期內(nèi)實現(xiàn)上述算式。其加法可以直接調(diào)用軟件

17、的庫實現(xiàn)。本方案實現(xiàn)結(jié)構(gòu)如圖1-3所示。X(n)X(n-1)X(n-2)X(n-1)X(n-2)輸入b0kb1ka0ka2ka1k輸出Y(n)累 加 器 圖1-3 改進(jìn)型實現(xiàn)框圖圖1-3中的作為FPGA接口上的A/D器件的轉(zhuǎn)換數(shù)據(jù)輸入寄存器,各寄存器內(nèi)的數(shù)據(jù)與各自的系數(shù)的最高位相乘后,送入累加器相加,并且其和向左移一位,以實現(xiàn)乘2運算。下一個時鐘,寄存器內(nèi)數(shù)據(jù)與其系數(shù)的次高位相乘,再送入累加器與其數(shù)據(jù)相加,再左移一位。接下的6個時鐘進(jìn)行類似的操作。第8個時鐘后,累加器將其數(shù)據(jù)輸出,即,并對累加器清零,同時將寄存器數(shù)據(jù)送入寄存器,將寄存器數(shù)據(jù)送入寄存器,同理,。接著再進(jìn)行下一次運算。對上述三種方

18、法相比較而言,方案三實現(xiàn)較為方便簡潔,在節(jié)省了FPGA硬件資源的同時,使得設(shè)計靈活,設(shè)計周期大為縮短,故本設(shè)計在方案三為基礎(chǔ)上作改進(jìn)后,來實現(xiàn)IIR數(shù)字濾波器的。第2章 EDA技術(shù)和可編程邏輯器件2. 1 電子設(shè)計自動化EDA技術(shù)EDA是Electronic Design Automation的縮寫,意為電子設(shè)計自動化,即利用計算機(jī)自動完成電子系統(tǒng)的設(shè)計?;仡櫧?0年的電子設(shè)計技術(shù)的發(fā)展歷程,可將EDA技術(shù)分為三個階段4:七十年代為CAD(Computer Aide Design)階段。這個階段主要分別研制了一個個單獨的軟件工具,主要有電路模擬、邏輯模擬、版圖編輯、PCB布局布線等,通過計算機(jī)

19、的使用,從而可以把設(shè)計人員從大量繁瑣、重復(fù)的計算和繪圖工作中解脫出來。八十年代為CAE階段。這個階段在集成電路與電子系統(tǒng)方法學(xué),以及設(shè)計工具集成方面取得了眾多成果,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè)計和結(jié)構(gòu)設(shè)計,并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實現(xiàn)了工程設(shè)計。九十年代為EDA階段,盡管CAD/CAE技術(shù)取得了巨大的成功,但在整個設(shè)計過程中,自動化和智能化程度還不高,各種EDA軟件界面千差萬別,學(xué)習(xí)實用困難直接影響到設(shè)計環(huán)節(jié)間的銜接。基于以上不足,人們開始追求貫穿整個設(shè)計過程的自動化,即電子系統(tǒng)設(shè)計自動化。2. 2可編程邏輯器件2.2.1可編程邏輯器件簡介可編程陣

20、列邏輯器件PAL(Programmable Array Logic)和通用陣列邏輯器件GAL(Generic Array Logic)都屬于簡單PLD。隨著技術(shù)的發(fā)展,簡單PLD在集成度和性能方面的局限性也暴露出來。其寄存器、I/O引腳、時鐘資源的數(shù)目有限,沒有內(nèi)部互連,因此包括復(fù)雜可編程邏輯器件CPLD(Complex PLD)和現(xiàn)場可編程門陣列器件FPGA(Field Programmable Gate Array)在內(nèi)的復(fù)雜PLD迅速發(fā)展起來,并向著高密度、高速度、低功耗以及結(jié)構(gòu)體系更靈活、適用范圍更廣闊的方向發(fā)展。FPGA具備陣列型PLD的特點,結(jié)構(gòu)又類似掩膜可編程門陣列,因而具有更高

21、的集成度和更強(qiáng)大的邏輯實現(xiàn)功能,使設(shè)計變得更加靈活和易實現(xiàn)。相對于 CPLD,它還可以將配置數(shù)據(jù)存儲在片外的EPROM或者計算機(jī)上,設(shè)計人員可以控制加載過程,在現(xiàn)場修改器件的邏輯功能,即所謂的現(xiàn)場可編程。所以FPGA得到了更普遍的應(yīng)用。2.2.2使用FPGA器件進(jìn)行開發(fā)的優(yōu)點使用FPGA器件設(shè)計數(shù)字電路,不僅可以簡化設(shè)計過程,而且可以降低整個系統(tǒng)的體積和成本,增加系統(tǒng)的可靠性。使用FPGA器件設(shè)計數(shù)字系統(tǒng)電路的主要優(yōu)點如下:1.增大功能密集度功能密集度是指在給定的空間能集成的邏輯功能數(shù)量??删幊踢壿嬓酒瑑?nèi)的組件門數(shù)高,一片F(xiàn)PGA可代替幾十片乃至上百片中小規(guī)模的數(shù)字集成電路芯片。用FPGA實現(xiàn)

22、數(shù)字系統(tǒng)時用的芯片數(shù)量少,從而減少印刷板面積和數(shù)目,最終導(dǎo)致系統(tǒng)規(guī)模的減小。2.縮短設(shè)計周期由于FPGA器件集成度高,使用時印刷線路板電路布局布線簡單。FPGA器件的可編程性和靈活性,決定了用它設(shè)計一個系統(tǒng)所需時間比傳統(tǒng)方法大為縮短。3.工作速度快FPGA/CPLD器件的工作速度快,一般可以達(dá)到幾百兆赫茲,遠(yuǎn)遠(yuǎn)大于DSP器件。使用FPGA器件后實現(xiàn)系統(tǒng)所需要的電路級數(shù)少,因而整個系統(tǒng)的工作速度會得到提高。2.2.3 FPGA設(shè)計的開發(fā)流程設(shè)計開始需利用EDA工具的文本或圖形編輯器將設(shè)計者的設(shè)計意圖用文本方式(如VHDL程序)或圖形方式(原理圖、狀態(tài)圖等)表達(dá)出來。完成設(shè)計描述后即可通過編譯器進(jìn)

23、行排錯編譯,變成特定的文本格式,為下一步的綜合做準(zhǔn)備。編譯形成標(biāo)準(zhǔn)VHDL文件后,在綜合前即可以對所描述的內(nèi)容進(jìn)行功能仿真,又可稱為前仿真。由于此時的仿真只是根據(jù)VHDL的語義進(jìn)行的,與具體電路沒有關(guān)系,仿真過程不涉及具體器件的硬件特性,如延遲特性。設(shè)計的第三步是綜合,將軟件設(shè)計與硬件的可實現(xiàn)性掛鉤,這是軟件化為硬電路的關(guān)鍵步驟。綜合后,可生成VHDL網(wǎng)表文件,利用網(wǎng)表文件進(jìn)行綜合后仿真。綜合通過后必須利用FPGA布局/布線適配器將綜合后的網(wǎng)表文件針對某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,這個過程叫做實現(xiàn)過程。布局布線后應(yīng)進(jìn)行時序仿真。時序仿真中應(yīng)將布局布線后的時延文件反標(biāo)到設(shè)計中,使仿真既包含

24、門時延,又包含線時延的信息。與前面各種仿真相比,這種仿真包含的時延信息最為全面、準(zhǔn)確,能較好地反映芯片的實際工作情況。如果以上的所有過程,都沒有發(fā)現(xiàn)問題,即滿足原設(shè)計要求,就可以將適配器產(chǎn)生的配置/下載文件通過編程器或下載電纜載入目標(biāo)芯片中。2.3 硬件描述語言VHDL及數(shù)字系統(tǒng)設(shè)計方法2.3.1 硬件描述語言VHDL簡介硬件描述語言(Very High Speed Integrated Circuit Hardware Description Language, VHDL)是一種用于設(shè)計硬件電子系統(tǒng)的計算機(jī)語言,包括系統(tǒng)行為級、寄存器傳輸級和邏輯門級多個設(shè)計層次,支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描

25、述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能。它主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,非常適用于可編程邏輯芯片的應(yīng)用設(shè)計。與其它的HDL相比,VHDL具有更強(qiáng)大的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。2.3.2利用VHDL設(shè)計數(shù)字系統(tǒng)利用VHDL語言設(shè)計數(shù)字系統(tǒng)硬件電路,與傳統(tǒng)的設(shè)計方法相比,具有以下優(yōu)點:1.采用自頂向下(TOP-DOWN)的設(shè)計方法。自頂向下是指從系統(tǒng)總體要求出發(fā),在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計。由于設(shè)計的主要仿真和調(diào)試過程在高層次上完成,這一方面有利于提高了設(shè)計的效率。2.降低了硬件電路的設(shè)計難度。在使用VHDL

26、語言設(shè)計硬件電路時,可以免除編寫邏輯表達(dá)式或真值表的過程,使得設(shè)計難度大大下降,從而也縮短了設(shè)計周期。3.主要設(shè)計文件是用VHDL語言編寫的源程序。在傳統(tǒng)的硬件電路設(shè)計中,最后形成的主要文件是電路原理圖,而采用VHDL語言設(shè)計系統(tǒng)硬件電路時主要的設(shè)計文件是VHDL語言編寫的源程序。4.方便ASIC移植。VHDL語言的效率之一,就是如果你的設(shè)計是被綜合到一個FPGA或CPLD的話,則可以使你設(shè)計的產(chǎn)品以最快的速度上市。當(dāng)產(chǎn)品的產(chǎn)量達(dá)到相當(dāng)?shù)臄?shù)量時,采用VHDL進(jìn)行的設(shè)計很容易轉(zhuǎn)換成專用集成電路來實現(xiàn)。所以本次設(shè)計采用利用VHDL語言的數(shù)字系統(tǒng)設(shè)計方法。第3章IIR數(shù)字濾波器的設(shè)計與仿真結(jié)果分析3

27、.1 各模塊的設(shè)計與仿真結(jié)果分析本課題在實現(xiàn)方案三的基礎(chǔ)上,結(jié)合參考文獻(xiàn)4-6將IIR濾波器的硬件系統(tǒng)分為四個模塊:時序控制、延時、補(bǔ)碼乘加和累加模塊。以下就各個模塊的實現(xiàn)及仿真作簡要的分析。3.1.1 時序控制模塊的設(shè)計與仿真結(jié)果分析時序控制模塊主要用來產(chǎn)生對其它模塊的時序控制信號。模塊的符號如圖3-1(a)所示,輸入信號CLK是時鐘信號,RES是復(fù)位信號,CLK_REG及CLK_REGBT是輸出信號。圖3-1(a) 時序控制模塊圖圖3-1(b) 時序控制模塊仿真圖時序控制模塊仿真如圖3-2(b)所示,其中counter為程序內(nèi)部計數(shù)信號,在clk的上升延到來時,counter以6個時鐘為周

28、期開始進(jìn)行計數(shù),clk_regbt每隔6個時鐘輸出一個低電平,clk_reg則每隔6個時鐘后輸出一個高電平。輸出的兩個時鐘信號正好控制延時模塊、補(bǔ)碼乘加模塊和累加模塊的模塊的運行。符合設(shè)計要求。時序控制模塊程序見附錄1。3.1.2 延時模塊的設(shè)計與仿真結(jié)果分析延時模塊的符號如圖3-2(a)所示,其主要作用是在clk時鐘作用下將差分方程的各、值延遲一個時鐘,以實現(xiàn)一次延時運算,即當(dāng)輸入為xn和yn時,經(jīng)過一次延時后其輸出分別為x(n-1)和y(n-1).其中yout是反饋輸入信號,xn是輸入信號。程序見附錄二。圖3-2(a) 延時模塊圖圖3-2(b) 延時模塊仿真圖延時模塊仿真圖如圖3-2(b)

29、所示,由圖3-4可以看出當(dāng)輸入的xn、yout都為時,在時鐘信號上升沿的作用下產(chǎn)生延時,經(jīng)第一個時鐘后x0、x1、x2、y0、y1的值分別為1,0,0,1,0。經(jīng)第二個時鐘后x0、x1、x2、y0、y1的值分別為2,1,0,2,1。經(jīng)第三個時鐘后x0、x1、x2、y0、y1的值分別為3,2,1,3,2。經(jīng)第四個時鐘后由此可見該模塊仿真值正確。延時模塊程序見附錄1。3.1.3 補(bǔ)碼乘加模塊的設(shè)計與仿真結(jié)果分析補(bǔ)碼乘加模塊主要用來實現(xiàn)輸入序列、與系數(shù)、分別相乘后再相加的過程。即實現(xiàn)的算法。為了避免過多地使用乘法器,本設(shè)計中乘加單元(MAC)的乘法器采用陣列乘法器,以提高運算速度。由于Maxplus

30、的LPM庫中乘法運算為無符號數(shù)的陣列乘法,所以使用時需要先將兩個補(bǔ)碼乘數(shù)轉(zhuǎn)換為無符號數(shù)相乘后,再將乘積轉(zhuǎn)換為補(bǔ)碼乘積輸出5。每個二階節(jié)完成一次運算共需要6個時鐘周期,而且需采用各自獨立的MAC實現(xiàn)兩級流水線結(jié)構(gòu),即每個數(shù)據(jù)經(jīng)過兩個二階節(jié)輸出只需要6個時鐘周期。模塊的符號如圖3-3(a)所示。圖3-3(a) 補(bǔ)碼乘加模塊圖圖3-3(b) 補(bǔ)碼乘加模塊仿真圖補(bǔ)碼乘加模塊仿真圖如圖3-5所示,clk_regbt及clk_reg為輸入時鐘,由時序控制模塊提供。、為系數(shù),x0、x1、x2、y0、y1為輸入信號,yout為輸出信號,圖3-3(b)中75為x0、x1、x2、y0、y1的值15和系數(shù)、相乘后再

31、相加的結(jié)果,完成了補(bǔ)碼乘加的功能。補(bǔ)碼乘加模塊程序見附錄1。3.1.4 累加模塊的設(shè)計與仿真結(jié)果分析補(bǔ)碼乘加模塊所輸出的信號送入累加器后,與寄存于累加器中的上一步計算的中間結(jié)果相加,最后將此步的計算結(jié)果經(jīng)由輸出引腳輸出,所得信號即為最終結(jié)果。 即該模塊主要實現(xiàn)youtput=yout+youtput(n-1)的算法,模塊的符號如圖3-4(a)所示。圖3-4(a) 累加模塊圖圖3-4(b) 累加模塊仿真圖累加模塊仿真圖如圖3-4(b),其中res為復(fù)位信號,clk為時鐘信號,yout為輸入信號,由補(bǔ)碼乘加模塊的輸出信號yout提供,由圖中可以看出當(dāng)輸入信號為yout=,輸出為youtput=,實

32、現(xiàn)了累加的功能。符合設(shè)計要求。累加模塊程序見附錄1。3.1.5 頂層模塊設(shè)計頂層模塊設(shè)計采用了原理圖輸入方法,原理圖輸入方式非常直觀,便于信號觀察和電路的調(diào)節(jié)。圖3-5 頂層模塊圖本課題設(shè)計的頂層文件名為iir.gdf,設(shè)計生成的邏輯符號如圖3-5所示。頂層模塊設(shè)計程序見附錄1。3.2 IIR數(shù)字濾波器的仿真與結(jié)果分析3.2.1 IIR數(shù)字濾波器的系統(tǒng)設(shè)計IIR數(shù)字濾波器頂層原理圖如圖3-6所示。為了便于理解整個系統(tǒng)的設(shè)計,現(xiàn)將系統(tǒng)的運行過程進(jìn)行說明:圖3-6 IIR數(shù)字濾波器頂層原理圖系統(tǒng)先開始處于初始狀態(tài),當(dāng)清零信號為“1”時,對整個系統(tǒng)進(jìn)行清零。在清零信號為“0”的前提,時序控制模塊在時

33、鐘clk上升沿的作用下產(chǎn)生兩個信號CLK_REG及CLK_REGBT,其中CLK_REG信號用來作為延時模塊、補(bǔ)碼乘加模塊和累加模塊的輸入時鐘,CLK_REGBT每隔6個時鐘產(chǎn)生一個高電平作為這三個模塊的復(fù)位信號。延時模塊在接收到CLK_REG高電平信號時清零輸出端,接收到低電平時,在CLK_REGBT上升沿的作用下對輸入信號進(jìn)行延時,以實現(xiàn)一次延時運算,而后將延時信號輸出,送給補(bǔ)碼乘加模塊。補(bǔ)碼乘加模塊在接收延時信號的同時也接收讀者輸入的系數(shù)信號,在CLK_REGBT上升沿的作用下實現(xiàn)系數(shù)和延時信號的補(bǔ)碼乘加運算,而此步驟需要6個時鐘來完成,正好與時序控制模塊的輸出信號CLK_REGBT相一

34、致。補(bǔ)碼乘加模塊的輸出一部分送入延時模塊以實現(xiàn)信號的反饋,另一部分則送入到累加模塊,在累加模塊中進(jìn)行結(jié)果累加后輸出,得到最終結(jié)果。3.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結(jié)果分析在各模塊編譯通過后將各模塊進(jìn)行了綜合,針對不同的輸入信號和不同的輸入系數(shù)對IIR數(shù)字濾波器進(jìn)行了仿真,仿真波形如圖3-7所示。并將仿真值和計算值進(jìn)行了比較,如表3.2.1中所示。(a)(b)(c)圖3-7 IIR數(shù)字濾波器仿真圖表3.2.1 濾波后輸出的數(shù)據(jù)輸入數(shù)據(jù)Xn=0,1,2,3,4,5;a0=a1=a2=b0=b1=1計算值01411244780仿真值01411254369輸入數(shù)據(jù)Xn=0,1,0,1,0,1;

35、a0=a1=a2=b0=b1=1計算值012581524仿真值012591523輸入數(shù)據(jù)Xn=0,1,0,1,0,1;a0=2,a1=a2=b0=b1=1計算值0238142234仿真值0249172741由表3.2.1可見,仿真值結(jié)果正確,只是與真值之間存在一定的誤差,仿真值越大時誤差越大,這是由于有限精度算法所引起的誤差,經(jīng)累加器累加后使得誤差變得越來越大,要解決這一問題可以通過增加二進(jìn)制位數(shù)來提高系統(tǒng)的運算精度5。3.2.3 高階IIR數(shù)字濾波器的實現(xiàn)要實現(xiàn)一個高階IIR數(shù)字濾波器,如果采用直接型結(jié)構(gòu)實現(xiàn),需用的乘法器和延遲單元相對較多,而且分子和分母的系數(shù)相差較大,需要較多的二進(jìn)制位數(shù)

36、才能實現(xiàn)相應(yīng)的精度要求。如果采用二階節(jié)級聯(lián)實現(xiàn),一方面各基本節(jié)的零點、極點可以很方便地單獨進(jìn)行調(diào)整,另一方面可以降低對二進(jìn)制數(shù)位數(shù)的要求。以實現(xiàn)一個四階IIR數(shù)字濾波器為例,可以通過兩個二階IIR數(shù)字濾波器級聯(lián)的方式來實現(xiàn)較為簡潔。圖3-8給出了一個四階IIR數(shù)字濾波器實現(xiàn)的原理圖5,具體的工作原理與二階IIR數(shù)字濾波器類似,在此本節(jié)即不再細(xì)述。圖3-8 四階IIR數(shù)字濾波器的頂層原理當(dāng)然,更高階的IIR數(shù)字濾波器的實現(xiàn)方法與四階濾波器的實現(xiàn)方法類似,只需將多個二階IIR數(shù)字濾波器進(jìn)行級聯(lián),即可實現(xiàn)。結(jié) 束 語為期三個月的畢業(yè)設(shè)計即將結(jié)束,在這期間我經(jīng)歷了從查資料、分析課題到學(xué)習(xí)軟件、設(shè)計程序

37、、調(diào)試、總結(jié)經(jīng)驗教訓(xùn)及書寫畢業(yè)論文的過程。本課題采用一種基于FPGA的IIR數(shù)字濾波器的設(shè)計方案,首先分析了IIR數(shù)字濾波器的原理及設(shè)計方法,然后通過MAX+PLUS的設(shè)計平臺,采用模塊化、層次化的設(shè)計思想將整個IIR數(shù)字濾波器分為四個功能模塊:時序控制模塊、延時模塊、補(bǔ)碼乘加模塊、累加模塊。分別對各模塊采用語言VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合。仿真結(jié)果表明,本課題所設(shè)計的IIR數(shù)字濾波器運算速度較快。但由于有限精度算法問題致使仿真結(jié)果存在一定的誤差,針對這一問題可以通過增加二進(jìn)制位數(shù)來提高系統(tǒng)的運算精度。由于畢業(yè)設(shè)計即將結(jié)束,沒有時間繼續(xù)完善本課題所實現(xiàn)的IIR數(shù)字濾波器的性能,在這一方

38、面,濾波器的性能有待提高。參考文獻(xiàn)1 劉凌,胡永生譯數(shù)字信號處理的FPGA實現(xiàn)M北京:清華大學(xué)出版社20032 丁玉美,高西全數(shù)字信號處理M西安:西安電子科技大學(xué)出版社20043 潘松,黃繼業(yè)EDA技術(shù)實用教程M北京:科學(xué)出版社20004 潘松,王國棟VHDL實用教程M成都:電子科技大學(xué)出版社20015 倪向東基于FPGA的四階IIR數(shù)字濾波器J電子技術(shù)應(yīng)用,20036 王衛(wèi)兵高階IIR數(shù)字濾波器的FPGA描述J電子元器件,2005,16期:pp3-47 黃任VHDL入門·解惑·經(jīng)典實例·經(jīng)驗總結(jié)M北京:北京航空航天出版社20058 北京理工大學(xué)ASIC研究所VH

39、DL語言100例詳解M北京:清華大學(xué)出版社19999 Joseph B. Evans, "Efficient F1R Filter Architectures Suitable for FPGA Implementation"M IEEE Trans, Circuits and System,July 199410Javier Valls, Marcos M. Peiro, Trini Sansaloni, Eduardo Boemo, "A Study About FPGA-BasedDigital Filters"J, IEEE SIPS, pp19

40、1-201,October 1998致 謝本文是在導(dǎo)師朱幼蓮教授的精心指導(dǎo)和嚴(yán)格要求下完成的。從選題到論文的完成,都凝聚著朱幼蓮老師的辛勞和汗水。她在我這三個月的畢業(yè)設(shè)計期間給了我很多無微不至的關(guān)懷,從IIR數(shù)字濾波器的理論知識到濾波器的實現(xiàn)方法都有朱老師孜孜不倦的教誨,在朱老師的幫助下本次畢業(yè)設(shè)計才能得意順利完成。朱老師淵博的知識、嚴(yán)謹(jǐn)科學(xué)的治學(xué)態(tài)度和工作作風(fēng)將給我以后的學(xué)習(xí)和工作起著模范和激勵的作用,在此對朱幼蓮老師表示深深的敬意和衷心的感謝!此外,我在畢業(yè)設(shè)計期間還得到許多老師、同學(xué)、朋友的幫助,在此亦表示衷心的感謝!附錄1 各模塊VHDL程序時序控制模塊程序library ieee;u

41、se ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control is port( clk,res:in std_logic; clk_reg,clk_regbt:out std_logic );end;architecture bhv of control is signal counter,count_bt:integer ; signal clk_en:std_logic; beginclk_regbt<=not clk and clk_en;

42、clk_reg<=not clk and not clk_en; process(clk,res) begin if(res='1')then counter<=0; count_bt<=0; elsif(clk'event and clk='1')then if( counter<6)then clk_en<='1' counter<=counter+1; count_bt<=count_bt-1; else counter<=0; count_bt<=0;clk_en<=&#

43、39;0' end if; end if; end process;end bhv;延時模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity delay is port (clk:in std_logic; res:in std_logic; xn:in std_logic_vector(4 downto 0); yout:in std_logic_vector(8 downto 0); x0,x1,x2:out s

44、td_logic_vector(4 downto 0); y0,y1:out std_logic_vector(8 downto 0);end delay;architecture bhv of delay issignal reg_x0,reg_x1,reg_x2:std_logic_vector(4 downto 0);signal reg_y0,reg_y1:std_logic_vector(8 downto 0);beginprocess(res,clk)beginif (res='1') then reg_x0<="00000"reg_x1&

45、lt;="00000"reg_x2<="00000"reg_y0<="000000000"reg_y1<="000000000"elsif (clk'event and clk='1') then reg_x2<=reg_x1;reg_x1<=reg_x0;reg_x0<=xn;reg_y1<=reg_y0;reg_y0<=yout; -實現(xiàn)延時end if;x0<=reg_x0;x1<=reg_x1;x2<=reg_x2;y

46、0<=reg_y0;y1<=reg_y1; end process;end bhv;補(bǔ)碼乘加模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity smultadd1 is port (clk_regbt,clk_reg:in std_logic;a0,a1,a2,b0,b1,x0,x1,x2:in std_logic_vector(4 downto 0);y0,y1:in std_logic_vector(8 d

47、ownto 0);yout:out std_logic_vector(8 downto 0);end smultadd1;architecture bhv of smultadd1 issignal tan,tbn,tp2n:std_logic;signal cnt:std_logic_vector(2 downto 0);signal ta,tb,taa,tbb:std_logic_vector(3 downto 0);signal tmpa,tmpb:std_logic_vector(4 downto 0);signal tp,tpp,tppp:std_logic_vector(7 dow

48、nto 0);signal ytmp,p:std_logic_vector(8 downto 0);begin tmpa<=a0 when cnt=0 elsea1 when cnt=1 elsea2 when cnt=2 elseb0 when cnt=3 elseb1 when cnt=4 else (others=>'0');tmpb<=x0 when cnt=0 elsex1 when cnt=1 elsex2 when cnt=2 elsey0 when cnt=3 elsey1 when cnt=4 else (others=>'0&

49、#39;);ta<=tmpa(3 downto 0);tb<=tmpb(3 downto 0);tan<=tmpa(4);tbn<=tmpb(4);taa<=not ta +'1' when (tan='1') else ta; -將輸入轉(zhuǎn)換為補(bǔ)碼tbb<=not tb +'1' when (tbn='1') else tb;tp2n<=tan xor tbn;tp<=taa*tbb; -完成補(bǔ)碼相乘運算tpp<=not tp +'1' when (tp2n='1') else tp;p<=(others=>'0') when (tmpb="00000") else tp2n&tpp;process(clk_reg,clk_regbt)beginif clk_reg='1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論