基于FPGA的FIR數(shù)字濾波器的設計--論文_第1頁
基于FPGA的FIR數(shù)字濾波器的設計--論文_第2頁
基于FPGA的FIR數(shù)字濾波器的設計--論文_第3頁
基于FPGA的FIR數(shù)字濾波器的設計--論文_第4頁
基于FPGA的FIR數(shù)字濾波器的設計--論文_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北華大學畢業(yè)設計(論文)摘要本文主要研究基于FPGA的有限長脈沖響應濾波器設計。有限長脈沖響應濾波器即FIR濾波器,其設計方法主要包括時窗函數(shù)法、頻率采樣法、等波紋最佳逼近法。應用MATLAB軟件,分別用這三種方法設計256階FIR低通濾波器,并進行比較分析。然后使用MATLAB中自帶的濾波器設計工具FDATool并用等波紋法設計256階低通濾波器。設計好FIR低通濾波器的系數(shù)后,對FIR低通濾波器的FPGA實現(xiàn)進行了研究。EDA技術的發(fā)展和大規(guī)??删幊踢壿嬈骷膽?,使得數(shù)字信號處理借助于FPGA實現(xiàn)變?yōu)榭赡堋榱藢崿F(xiàn)這一目標,本文討論了FPGA器件的結構、特點和分布式算法實現(xiàn)FIR濾波器的

2、可行性,然后給出了基于并行分布式算法的FIR濾波器的VHDL描述,最后借助于QUARTUSII進行了綜合和仿真,并取得了成功。關鍵詞:分布式算法;FIR數(shù)字濾波器;FPGAAbstractThis research is mainly based on the FPGA finite impulse response filter design. Finite impulse response filter, FIR filter, the design method include window function method, frequency sampling method, the

3、optimal approximation corrugated. Application of MATLAB software, these three methods are applied to design of 256 order FIR low-pass filter, and a comparative analysis. Then use the filter design tool with MATLAB - FDATool and equiripple design method of 256 order low-pass filter. Factor design FIR

4、 low pass filter, FPGA low pass filter of FIR were studied. The development of EDA technology and extensive application of programmable logic devices, the application of digital signal processing on FPGA is possible. In order to achieve this goal, this paper discusses the feasibility of FIR filter r

5、ealization structure, characteristic and distributed algorithm for FPGA devices, and then gives the description of the FIR filter parallel distributed algorithm based on VHDL, finally with the help of QUARTUSII were synthesized and simulated, and success.Key Words:Distributed Algorithm; FIR Digital

6、Filter;FPGA- 2 -目錄摘要1Abstract2引言11 FIR數(shù)字濾波器設計21.1 FIR數(shù)字濾波器21.1.1 數(shù)字濾波器簡介21.1.2 FIR數(shù)字濾波器31.1.3 FIR數(shù)字濾波器的結構51.2 FIR數(shù)字濾波器設計方法71.2.1 時窗函數(shù)法71.2.2 頻率采樣法91.2.3 等波紋最佳逼近法111.2.4 三種設計方法的比較121.2.5 使用FDATool設計FIR數(shù)字濾波器122 EDA技術與分布式算法142.1 EDA技術簡介142.1.1 EDA技術簡介142.1.2 FPGA介紹142.1.3 用FPGA設計濾波器的優(yōu)點142.2 FPGA設計方法152

7、.3 分布式算法152.3.1 分布式算法基礎152.3.2 并行的分布式算法162.3.3 串行的分布式算法173 并行FIR數(shù)字濾波器的設計183.1 頂層文件的設計183.2 并行FIR各個模塊的設計193.2.1 輸入數(shù)據(jù)預處理模塊193.2.2 加模塊203.2.3 查找表模塊213.2.4 減法器模塊233.2.5 移位累加器模塊243.2.6 輸出處理模塊253.3 頂層綜合與仿真26結論28參 考 文 獻29附錄A頂層例化圖及程序代碼30致謝35北華大學畢業(yè)設計(論文)引言近年來,隨著數(shù)字信號處理技術的發(fā)展和數(shù)字集成電路的廣泛應用,越來越多的工程領域在將模擬信號轉為數(shù)字信號后,

8、面臨的首要任務即是濾除干擾信號,濾波的好壞直接決定著系統(tǒng)能不能得到有用的信號,因此濾波在數(shù)字信號處理中處于基礎性的地位。同時,計算機技術的發(fā)展為數(shù)字濾波器的設計與仿真提供了便利。例如,使用MATLAB軟件即可在很短的時間內就能設計性能很高的數(shù)字濾波器,并且還可以進行模擬仿真,這使得我們可以在硬件實現(xiàn)以前對系統(tǒng)的性能可以有個初步的感性認識。此外,大規(guī)模可編程邏輯器件的應用,為數(shù)字濾波器的硬件實現(xiàn)提供了新的方式,在設計合理的情況下,能提高數(shù)字濾波器的工作速度,并且還能節(jié)省資源和功耗?;诖?,本文將充分利用便捷的EDA技術,采用MATLAB進行FIR數(shù)字濾波器的設計和仿真,并研究使用VHDL進行硬件

9、描述,然后在FPGA上開發(fā)的可行性。通過本文,可以感受到計算機技術帶給數(shù)字濾波系統(tǒng)設計的快捷與便利。1 FIR數(shù)字濾波器設計1.1 FIR數(shù)字濾波器數(shù)字濾波器在數(shù)字信號處理中屬于預處理的部分,因而起著基礎性的作用,數(shù)字濾波器包括IIR和FIR數(shù)字濾波器。數(shù)字濾波器具有精度高、穩(wěn)定性好、靈活性強、不要求阻抗匹配,易于修改等特點。下面將首先介紹一下數(shù)字濾波器,然后重點討論FIR數(shù)字濾波器的設計原理和結構。1.1.1 數(shù)字濾波器簡介一個簡單的數(shù)字濾波系統(tǒng)如圖1.1所示。圖中,x(t)為模擬信號,經(jīng)過A/D轉換器后變?yōu)橐粋€有著先后順序的數(shù)字序列x(n)。然后x(n)通過數(shù)字濾波系統(tǒng)H(z),即得到數(shù)字

10、濾波器的輸出y(n)。H(z)為該數(shù)字濾波系統(tǒng)的單位脈沖響應h(n)的Z變換,即: (1.1)如果h(n)為無限長序列,那么得到的數(shù)字濾波器是IIR數(shù)字濾波器,又稱遞歸濾波器;反之,如果h(n)為有限長序列,那么得到的數(shù)字濾波器是FIR濾波器,也稱非遞歸濾波器。一個線形時不變因果濾波器可以表示為: (1.2)其中N是h(n)的長度,也就是濾波器的長度。濾波器的階數(shù)為N-1。圖1.1 數(shù)字濾波系統(tǒng) IIR濾波器主要是基于對模擬濾波器如巴特沃斯濾波器、橢圓濾波器等的幅頻響應進行逼近,而其相頻響應是非線性的。與IIR濾波器不同,F(xiàn)IR濾波器可以把相位特性設計成線性。這使得FIR數(shù)字濾波器在信號無失真

11、傳輸、數(shù)據(jù)通信、圖像傳輸與處理、語音信號處理等有線性相位要求的領域應用廣泛。FIR濾波器的優(yōu)點是軟硬件實現(xiàn)結構簡單,不用考慮系統(tǒng)的穩(wěn)定性問題;缺點是實現(xiàn)較高性能的頻率響應需要較高的濾波器階數(shù)。1.1.2 FIR數(shù)字濾波器因為線性相位FIR濾波器的廣泛應用,本文將先討論如何實現(xiàn)線性相位FIR濾波器。將代入式(1.2)中,得到: (1.3)是復數(shù),因此可以表示成如下形式: (1.4) 式中,是實函數(shù),稱為幅度特性函數(shù),是相位特性函數(shù)。當滿足: (1.5)是初始相位,是常數(shù)。此濾波器具有廣義的線性相位,變換(1.5)式為: (1.6)因為(1.6)式可知, 不是常量。所以,當不同頻率的信號通過該濾波

12、器時,便會產(chǎn)生相位的失真。不過通常較小,相比來說小得多,由引起的相位失真可忽略不計。在(1.5)式中,當時,是常量,這時濾波器有嚴格的線性相位,也就是說對于不同頻率的信號,通過此濾波器都會有恒定的延遲,而不產(chǎn)生相位的失真。將式(1.3),(1.4),(1.5)聯(lián)立,可得 (1.7a) (1.7b)將(1.7a)式與(1.7b)式做除法,消去 ,得到:=0 (1.8)當時,式(1.8)則變?yōu)椋?0 (1.9)觀察可知,如果對求和區(qū)間的中心是奇對稱的,那么(1.9)式成立。因為是對奇對稱的,令對偶對稱,這樣就能夠滿足對求和區(qū)間中心奇對稱的要求了,因此(1.9)式成立。當時,式(1.8)變?yōu)? (1

13、.10)如果對于是奇對稱的,且對于是偶對稱的,那么(1.10)式成立?;陂L度N的奇偶區(qū)別和的對稱不同,線性相位FIR數(shù)字濾波器的幅度頻率特性就會不同,因此所實現(xiàn)的濾波器的功能也會不同,具體如表1.1所示。第三列的性能指標是能夠得到實現(xiàn)的濾波器的。表1.1 四種類型的線性相位濾波器I型N是奇數(shù)高通、低通、帶阻、帶通II型N是偶數(shù)低通、帶通III型N是奇數(shù)帶通IV型N是偶數(shù)高通、帶通1.1.3 FIR數(shù)字濾波器的結構根據(jù)實現(xiàn)FIR數(shù)字濾波器的算法的不同,可以把FIR數(shù)字濾波器的結構劃分為四種基本形式,分別是直接型、級聯(lián)型、頻率采樣型和快速卷積型。本論文中主要對前兩種結構進行討論。直接型結構根據(jù)式

14、子(1.2)可以直接畫出濾波器的直接型結構。如圖1.2所示是FIR數(shù)字濾波器的直接型結構。對于這種結構來說,一個長度是N的FIR數(shù)字濾波器,每當有一個輸出數(shù)據(jù)的產(chǎn)生,就會經(jīng)過N次的乘法和N-1次的加法。對于要使用FPGA來實現(xiàn)的FIR數(shù)字濾波器,這樣的結果明顯不能滿足人們的要求。圖1.2 直接型結構于是本論文做出了相應的改進,這種改進是基于線性相位的FIR數(shù)字濾波器的。以嚴格線性相位,N為偶數(shù)的FIR濾波器為例,如圖1.3所示。圖1.3 直接型的改進因為關于對稱,我們可以將經(jīng)過延時環(huán)節(jié)的位置關于對稱的數(shù)據(jù)預先相加,然后可以再乘以相應的濾波器系數(shù)進行累加,然后會得出最后的輸出結果。這樣,每當有一

15、個輸出產(chǎn)生,就會經(jīng)過次的乘法以及次的加法,和原來相比減少了次的乘法。級聯(lián)型結構對式子(1.2)進行因式分解,并且把零點共軛的因式放在一起,這樣就得到了若干個一階子式以及二階子式,將這些一階子式看作是二階子式的一個特例,那么系統(tǒng)函數(shù)就可以表示為: (1.11)如圖1.4所示是FIR數(shù)字濾波器的級聯(lián)型結構。圖1.4 級聯(lián)型結構從上圖中可以看出,級聯(lián)型結構每有一個輸出產(chǎn)生,就需要次的乘法以及次的加法。級聯(lián)型結構的最大特點是可以分別對每個子系統(tǒng)的零點之值進行獨立調整。如果需要濾波器的零點位置精確控制時,往往采用這種級聯(lián)型的結構。1.2 FIR數(shù)字濾波器設計方法FIR數(shù)字濾波器的設計主要有三種方法:時窗

16、函數(shù)法、頻率采樣法以及等波紋最佳逼近法。以下將分別討論這三種方法的設計原理,然后給出設計步驟,最后再比較一下用以上三種方法設計濾波器時產(chǎn)生的優(yōu)缺點。1.2.1 時窗函數(shù)法一個理想的低通數(shù)字濾波器的幅頻特性如圖1.5所示。的表達式為 (1.12)圖1.5 理想低通濾波器頻譜圖對進行離散傅里葉逆變換,得到 (1.13)是一個關于對稱的無限長的序列,是系統(tǒng)的單位脈沖響應,這說明此系統(tǒng)是非因果的,在物理上是不可以實現(xiàn)的。為了能夠得到一個可實現(xiàn)的系統(tǒng),可以把一部分截取出來,并按順序右移,使其成為一個因果的有限長序列。這種方法就好比在時域打開一個窗口一樣,因此這種方法被稱為時窗法。由此可見,使用這種方法截

17、取的序列越長,對理想的幅頻特性逼近的就越好。常見的時窗函數(shù)有矩形窗、漢寧窗、漢明窗、布萊克曼窗、凱塞窗等等。以上五種窗函數(shù)的主要參數(shù)如表1.2所示。表1.2 五種窗函數(shù)參數(shù)表窗函數(shù)主瓣寬度/rad旁瓣水平/db過渡帶寬度/rad阻帶最小衰減/db矩形窗-1321漢寧窗-3144漢明窗-4153布萊克曼窗-5774凱塞窗(=7.865)-5780設計一個好的時窗函數(shù)的要求:A.主瓣寬度盡可能地小。B.旁瓣水平相對于主瓣來說也盡可能地小。但是這兩個標準之間是有矛盾的,也就是說主瓣寬度越大,旁瓣水平才可能越低。因此實際設計濾波器時我們只能在這兩個標準之間作出權衡,針對具體問題,找出一個適合的時窗函數(shù)

18、。用時窗函數(shù)法設計的FIR濾波器通帶波紋幅度近似等于阻帶波紋幅度。一般阻帶最小衰減達到40dB以上,則通帶最大衰減就小于0.1dB。最后,對利用時窗函數(shù)設計FIR數(shù)字濾波器的步驟進行總結如下:A通過所需設計的FIR數(shù)字濾波器的類型如高通、低通、帶阻、帶通,對線性相位數(shù)字濾波器的類型進行確定。B通過FIR數(shù)字濾波器的(阻帶衰減),對窗函數(shù)的類型進行選擇,然后通過過渡帶寬度對時窗函數(shù)的長度進行確定以及對線性相位條件進行修改。C對理想FIR數(shù)字濾波器的頻率響應函數(shù)進行確定,其中是幅度特性函數(shù),是相位特性函數(shù)。D對理想的FIR數(shù)字濾波器的單位脈沖響應進行計算并得出結果,也就是。E加窗后得到設計的結果,

19、也就是。1.2.2 頻率采樣法頻率采樣法是一種基于頻率域抽樣來逼近所要設計的FIR濾波器的頻率特性的一種方法。頻率設計法的基本設計流程如圖1.6所示。圖1.6 頻率設計法流程為了保證能夠具有線性相位條件,其單位采樣響應是實序列,且滿足條件。對于偶對稱的情況來說,線性相位的條件如下: (1.14) (1.15)令代入式(1.14)、(1.15),得到 (1.16)式中, ,N為奇數(shù) ,N為偶數(shù)。在各采樣點上頻率響應函數(shù)與相等,而各采樣值之間的內插函數(shù)疊加形成了各采樣點之間的值,因此會有相應的逼近誤差,理想頻率響應的曲線形狀決定了誤差的大小。變化越陡的各采樣點間的理想頻率特性,就會引起越大的理想值

20、與內插值之間的誤差,因此在理想的頻率響應特性的不連續(xù)點的附近,就產(chǎn)生了波紋和肩峰;相反,變化越平緩的理想頻率響應特性,則內插值與理想值就會越接近,逼近誤差就會變小。因此,可以在理想的頻率響應特性的阻帶與通帶之間設置一個過渡帶,從而使逼近誤差盡可能減小。如表1.3所示的是過渡帶的采樣點個數(shù)m和所要設計的FIR數(shù)字濾波器的阻帶最小衰減之間的關系。此外采樣點數(shù)m與過渡帶的帶寬之間的關系式為: (1.17)表1.3 過渡帶采樣點數(shù)與阻帶最小衰減的關系m0123/dB20445465758595綜上,頻率采樣法的設計步驟為:A過渡帶的樣點數(shù)m是通過阻帶最小衰減來進行確定的。B根據(jù)(過渡帶寬度)的要求,對

21、濾波器的長度進行估算。C一般是通過具有理想頻率特性,并且滿足相應的線性相位的要求來構造期望逼近的頻率響應函數(shù) 的。D對進行頻域等間隔N點采樣,得到。E對進行N點 離散傅里葉逆變換,得到。1.2.3 等波紋最佳逼近法等波紋最佳逼近法的設計原則是使最大誤差盡可能的最小化。最大誤差的最小化能夠讓整個逼近頻段上均勻分布著幅度誤差,也就是說要設計的FIR數(shù)字濾波器在阻帶和通帶范圍內的幅度特性是等波紋的,并且能夠分別對阻帶和通帶的波紋幅度進行獨立控制,如果在給定長度的濾波器的情況下,幅度波紋加權后的誤差是最小的。定義幅度誤差的加權函數(shù)為 (1.18)式中是幅度誤差的加權函數(shù),用來對不同頻帶的幅度

22、逼近誤差進行控制。一般情況下,在要求逼近精度高的頻帶取值大,而要求逼近誤差精度低的頻帶,取值小。設計過程中是由設計者根據(jù)阻帶最小衰減和通帶最大衰減的指標要求取定的已知函數(shù)。對于FIR數(shù)字低通濾波器,常取: (1.19)式中,和分別為FIR數(shù)字濾波器設計指標中阻帶和通帶的振蕩波紋幅度,其中k是正的系數(shù)。濾波器的阻帶最小衰減和通帶最大衰減與阻帶和通帶的振蕩波紋幅度和之間的換算關系為: (1.20) (1.21)用等波紋最佳逼近法設計FIR數(shù)字濾波器的關鍵,在于如何得到數(shù)字濾波器的系數(shù)向量,從而能夠使得在阻帶和通帶頻帶內的最大絕對值幅度誤差是最小的。Parks McClellan(帕克斯-麥克萊倫)

23、采用了雷米茲交替算法,該算法是基于交替定理的。為了能夠求得濾波器的系數(shù)向量使用了逐次迭代逼近的運算方法,從而實現(xiàn)了等波紋最佳逼近法的設計方法。 一般情況下,估算濾波器的長度N的凱塞經(jīng)驗公式為: (1.22)綜上所述,以下給出了通過等波紋最佳逼近法設計FIR數(shù)字濾波器的具體步驟:A通過FIR數(shù)字濾波器的設計指標要求: (阻帶最小衰減)、(通帶最大衰減)、邊界頻率等,對濾波器的長度進行估計,并對幅度誤差加權函數(shù)進行確定。B根據(jù)雷米茲交替算法,對所要設計的FIR數(shù)字濾波器的單位脈沖響應進行估算。1.2.4 三種設計方法的比較時窗函數(shù)法和頻率采樣法,兩種方法設計起來簡單方便,容易實現(xiàn),缺點是不能夠精確

24、指定濾波器的邊界頻率和,并且不能夠分別控制通帶和阻帶波紋。等波紋最佳逼近法能夠分別獨立控制通帶和阻帶波紋,確定邊界頻率,并且所設計的濾波器的階數(shù)與前兩種方法相比要少。所以本文用等波紋最佳逼近法對FIR數(shù)字濾波器進行設計。1.2.5 使用FDATool設計FIR數(shù)字濾波器根據(jù)以上三種方法比較的結果,我們使用MATLAB軟件中自帶的數(shù)字濾波器設計工具FDATool進行數(shù)字濾波器系數(shù)的設定和輸出。FDATool界面如圖1.7所示:圖1.7 FDATool界面Response type選擇低通,選中FIR類型,再選擇等波紋,并且將濾波器的階數(shù)設置為256階。然后選擇歸一化頻率,通帶截止頻率選擇0.2,

25、阻帶截止頻率選擇0.4,通帶最小衰減選擇1db,阻帶最小衰減選擇47db,點擊DESIGN FILTER按鍵,即可設計FIR濾波器了。最后得到濾波器的系數(shù)如1.23所示。 (1.23) 2 EDA技術與分布式算法2.1 EDA技術簡介2.1.1 EDA技術簡介EDA的意思是電子設計自動化,是Electronic Design Automation 的縮寫,也就是通過計算機對電子系統(tǒng)自動完成設計。EDA技術的先導是微電子技術和計算機,它匯集了計算機邏輯學、圖形學、結構學、微電子工藝與計算數(shù)學以及拓撲等多種先進的計算機應用學科技術的最新成果?,F(xiàn)代電子設計技術的核心就是EDA技術,它通過EDA工具軟

26、件平臺配合功能強大的計算機,對以HDL語言(硬件描述語言)為系統(tǒng)邏輯描述手段完成的設計文件,自動地完成邏輯的編譯、化簡、分割、綜合,以及邏輯優(yōu)化和仿真測試,乃至實現(xiàn)既定的電子線路系統(tǒng)功能。2.1.2 FPGA介紹FPGA是現(xiàn)場可編程們列陣的縮寫。它使用了可編程的查找表(Look Up Table,LUT)結構,其中LUT是可編程的最小的邏輯構成單元。LUT示意圖如圖2.1所示。圖2.1 查找表結構圖2.1.3 用FPGA設計濾波器的優(yōu)點用FPGA設計簡單且成本很小,可靠性良好。不需要測試。具體主要有點如下:1、設計簡單:當設計失敗時,只要對FPGA重新編程就可以,這試工程設計變得更加靈活2、穩(wěn)

27、定性好:FPGA可把很多設計集中在一個芯片,所以系統(tǒng)穩(wěn)定性很好。3、功能豐富:FPGA片內組件門數(shù)高,現(xiàn)今最高已達千萬門的芯片。4、較快的運行速度:FPGA具有很高的訓傳速度,一般在上百兆赫茲,所以可以滿足大型系統(tǒng)的設計要求。5、成本?。篎PGA不用進行測試,且開發(fā)容易,省時省力,所以降低了成本。2.2 FPGA設計方法傳統(tǒng)數(shù)字系統(tǒng)的設計一般是從選擇具體的元器件開始,通過這些元器件對邏輯電路進行設計,完成系統(tǒng)中各獨立功能模塊的設計,再把各模塊連接起來,組裝成整個硬件系統(tǒng)。這種設計過程是自下而上的,它的優(yōu)點是符合硬件工程師的設計習慣,缺點是在底層進行設計時對把握整個系統(tǒng)的總體性能的缺乏,在完成整

28、個系統(tǒng)的設計之后,如果發(fā)現(xiàn)系統(tǒng)的性能并不能夠滿足我們的要求,這樣修改起來就會困難許多,因此設計的周期就會過長。和上面的設計思路不同的是,自頂向下的設計思路也就是對最高層的設計,將整個的系統(tǒng)分別看作是單個模塊,該模塊包含了輸入和輸出端口。并在系統(tǒng)的層次上對其性能進行描述,再通過系統(tǒng)的仿真,對其進行性能優(yōu)化,然后可以把這個系統(tǒng)的模塊進一步劃分為各個子功能模塊,再對每一個子功能模塊進行描述,同時進行相關的仿真,最后通過FPGA開發(fā)工具提供的邏輯綜合軟件自動地綜合到特定元器件上,從而完成設計工作。采用自頂向下的設計方法,可以從一開始就掌握要實現(xiàn)的系統(tǒng)的性能,再結合要實現(xiàn)的系統(tǒng)的具體性能要求,通過調整,

29、直接進行性能的優(yōu)化。隨著設計層次的向下進行,系統(tǒng)的性能參數(shù)將進一步得到細化,并隨時根據(jù)需要進行調整,從而保證了設計的正確性,大大縮短了設計的周期,并且隨著系統(tǒng)的擴大,這種設計方法的優(yōu)勢會變得更加明顯。2.3 分布式算法2.3.1 分布式算法基礎分布式算法(Distributed Arithmetic,DA)是很重要的一項FPGA技術,它在計算乘積和時得到了廣泛的應用: (2.1)這種算法可用于全部有乘累加運算的地方,比如濾波器、卷積、相關、DFT等。式(2.1)表示的是一個線性時不變網(wǎng)絡的輸出。假設是常量,是變量。對于有符號DA系統(tǒng),可表示為: (2.2)將式(3.2)代入式(3.1),得 (

30、2.3)其中x(n)為(B+1)位,稱為位乘積,其中b=0,B+1。函數(shù)的實現(xiàn)方法是利用一個查找表結構(LUT)實現(xiàn)映射,預先設定程序的LUT接收一個N位的輸入向量,輸出為,各個映射都是相應的二次冪加權累加,最后得到一次濾波的結果。根據(jù)上面的分析可知,分布式算法是將乘法運算轉換成基于查找表結構的移位相加算法,從而實現(xiàn)多個乘法運算操作。在被乘數(shù)的位數(shù)較少的情況下,相比直接的乘法器結構,這種算法有明顯的速度和算法優(yōu)勢。這種算法尤其是在乘法器資源很少的FPGA器件中有很大的應用前景。2.3.2 并行的分布式算法分布式算法有并行和串行兩種實現(xiàn)方式。如圖2.4所示是并行的實現(xiàn)方式的算法結構。圖中求和結果

31、的輸出與ROM的輸出都加上了虛線框,它們都是流水線寄存器。上下級流水線寄存器之間的數(shù)字電路并不用考慮它們本身的延遲而直接按照時鐘頻率工作即可,這樣就增加了整個系統(tǒng)的工作頻率,從而運算速度得到加快。但是這種并行結構增加了額外的加法器、寄存器以及查找表結構(LUT)。如果有較少的位寬數(shù)據(jù)輸入時,比如4位到8位,這種實現(xiàn)的方法輸出的結果能夠滿足人們要求。圖2.4 并行DA結構2.3.3 串行的分布式算法對于串行的分布式算法,系統(tǒng)的處理速度不能得到有效地提高,但是資源能夠大量被節(jié)省下來。如圖2.5所示是一個4階的FIR數(shù)字濾波器的串行DA結構。位移寄存器中存儲著按先入先出順序,從高位到低位排列的數(shù)據(jù),

32、每隔一個字長抽出一個抽頭。這樣,每個數(shù)據(jù)的低位到高位將會相繼移出到抽頭。然后再對ROM進行尋址,得到一個部分積后移位累加,最終得到輸出結果。圖2.5 4階FIR濾波器的串行DA結構3 并行FIR數(shù)字濾波器的設計3.1 頂層文件的設計利用自頂向下設計方法,按照并行分布式算法,本文首先設計出了并行FIR數(shù)字濾波器的頂層文件。其數(shù)據(jù)流向及結構示意圖如圖3.1所示。圖3.1 并行FIR數(shù)據(jù)及結構圖先編寫各個功能的vhdl源文件,再生成功能模塊,最后在頂層用原理圖的設計方法連線,組成整個系統(tǒng)。頂層文件的TOP頂層例化圖如下:圖3.2 TOP頂層例化圖3.2 并行FIR各個模塊的設計3.2.1 輸入數(shù)據(jù)預

33、處理模塊該模塊用于輸入的輸入,并進行鎖存。設計中用D觸發(fā)器組成寄存器,實現(xiàn)寄存功能。這里用來寄存一組9位的二進制數(shù)據(jù)。實現(xiàn)功能:在CP正跳沿前接受輸入信號,正跳沿時觸發(fā)翻轉,正跳沿后輸入即被封鎖。該模塊的VHDL代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff8 IS PORT( clk : IN STD_LOGIC; clear : IN STD_LOGIC; Din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Dout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END

34、 dff8; ARCHITECTURE a OF dff8 IS BEGIN PROCESS(clk,clear) BEGIN IF clear='1' THEN Dout<="00000000" ELSIF clear='0' THEN IF(clk'EVENT AND clk='1') THEN Dout <= Din; END IF; END IF; END PROCESS; END a;由圖3.3所示, 該模塊的例化圖如下:圖3.3 輸入預處理模塊3.2.2 加模塊由于線性相位FIR濾波器的系數(shù)關于

35、中心位置具有對稱性,因此可以通過將對稱的x(n)進行相加,這樣可以節(jié)省8個乘法器,從而降低了硬件的規(guī)模。此外,該模塊還產(chǎn)生了位乘積的地址。該模塊的VHDL代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add121313 isPORT(clk : in STD_LOGIC; Din1 :in signed (11 downto 0); Din2 :in signed (12 downto 0); Dout:out signed(12 downto 0);END add121313

36、;ARCHITECTURE a of add121313 isSIGNAL s1: signed(12 downto 0);BEGIN s1<=(Din1(11)&Din1);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk='1' thenDout<=s1+Din2;end if; end process;end a;由圖3.4所示, 該模塊的例化圖如下:圖3.4 加模塊3.2.3 查找表模塊該模塊用于對位乘積的尋址。一個8位的地址,可以產(chǎn)生個數(shù)據(jù)。為了節(jié)約FPGA資源,可以采用LUT分割技術,將一個8

37、位地址的LUT分割成兩個4位地址的LUT。這樣可以節(jié)省224個數(shù)據(jù)空間。因此,采用LUT分割技術,可以節(jié)省大量硬件資源,避免了大容量ROM的使用。根據(jù)分布式算法,查找表存儲的是濾波器系數(shù)的各種組合相加的結果,由于濾波器系數(shù)通常為浮點數(shù),我們需要將其化為定點整數(shù)。將h(n)擴大倍,再進行四舍五入,可得定點整數(shù),然后我們將已經(jīng)化為定點整數(shù)的h(n)用二進制補碼表示。具體如式(3.1)所示。 (3.1)接著,根據(jù),可以得到高4位和低4位的LUT。由于輸入數(shù)據(jù)最高位為符號位,需要在進行連續(xù)進行7次加法后,再進行1次減法,為了將減法轉化為加法,本設計將上面的兩個查找表中的數(shù)據(jù)進行求補,得到符號位的高4位

38、和低4位的LUT。這樣總共有4種查找表。具體如表3.1、表3.2所示。表3.1 高4位地址的LUTA7 A6 A5 A4函數(shù)值十六進制求補后的值000000000000001h(4)011FEF0010h(5)0C7F390011h(4)+h(5)0D8F280100h(6)197E690101h(6)+h(4)1A8E580110h(6)+h(5)25EDA20111h(6)+h(5)+h(4)26FD911000h(7)222DDE1001h(7)+h(4)233DCD1010h(7)+h(5)2EAD161011h(7)+h(5)+h(4)2FAD061100h(7)+h(6)3B9C4

39、71101h(7)+h(6)+h(4)3CAC361110h(7)+h(6)+h(5)480B801111h(7)+h(6)+h(5)+h(4)491B6F表3.2 低四位地址的LUTA3 A2 A1 A0函數(shù)值十六進制求補后的值000000000000001h(0)FF480C0010h(1)FCA8360011h(1)+h(0)FBE8420100h(2)FAA8560101h(2)+h(0)F9E8620110h(2)+h(1)F7488C0111h(2)+h(1)+h(0)F688981000h(3)FB184F1001h(3)+h(0)FA585B1010h(3)+h(1)F7B88

40、51011h(3)+h(1)+h(0)F6F8911100h(3)+h(2)F5B8A51101h(3)+h(2)+h(1)F4F8B11110h(3)+h(2)+h(1)F258BB1111h(3)+h(2)+h(1)+h(0)F198E73.2.4 減法器模塊源代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY sub171517 isPORT(clk : in STD_LOGIC; Din1 :in signed (14 downto 0); Din2 :in signed (16

41、 downto 0); Dout:out signed(16 downto 0);END sub171517;ARCHITECTURE a of sub171517 isSIGNAL s1: signed(16 downto 0);BEGIN s1<=(Din1(14)&Din1(14)&Din1);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk='1' thenDout<=Din2-s1;end if;end process;end a;由圖3.5所示, 該模塊的例化圖如下:圖3.5 減法器模

42、塊3.2.5 移位累加器模塊各個位產(chǎn)生的位乘積在這個模塊中乘以各自的權重,也即左移相應的位數(shù),然后相加得到最終結果。本文采用的并行移位相加法,提高了執(zhí)行速度。移位相加模塊的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity shiftadd isport(z0,z1,z2,z3,z4,z5,z6,z7:in std_logic_vector(12 downto 0); clk:in std_logic; y:ou

43、t std_logic_vector(23 downto 0);end shiftadd;architecture arc of shiftadd issignal n0,n1,n2,n3:std_logic_vector( 14 downto 0);signal p0,p1:std_logic_vector(17 downto 0);signal q: std_logic_vector(22 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenn0<=(z1(12)&z1&&#

44、39;0')+(z0(12)&z0(12)&z0);n1<=(z3(12)&z3&'0')+(z2(12)&z2(12)&z2);n2<=(z5(12)&z5&'0')+(z4(12)&z4(12)&z4);n3<=(z7(12)&z7&'0')+(z6(12)&z6(12)&z6);p0<=(n1(14)&n1&"00")+(n0(14)&n0(14)&

45、;n0(14)&n0);p1<=(n3(14)&n3&"00")+(n2(14)&n2(14)&n2(14)&n2);q<=(p1(17)&p1&"0000")+(p0(17)&p0(17)&p0(17)&p0(17)&p0(17)&p0);y<=q&'0'end if;end process;3.2.6 輸出處理模塊輸出通過一個加法器add141616完成10位數(shù)據(jù)的輸出,通過一個15位與一個17位數(shù)據(jù)相加得

46、到的數(shù)據(jù)取高10為作為最終結果。源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add141616 isPORT(clk : in STD_LOGIC; Din1 :in signed (13 downto 0); Din2 :in signed (15 downto 0); Dout :out signed(15 downto 0);END add141616;ARCHITECTURE a of add141616 isSIGNAL s1: signed(15 downto 0)

47、;BEGIN s1<=(Din1(13)&Din1(13)&Din1);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk='1' thenDout<=s1+Din2;end if;end process;end a;由圖3.6所示, 該模塊的例化圖如下:圖3.6 輸出處理模塊3.3 頂層綜合與仿真把各個模塊的VHDL代碼都放在一個文件夾里,新建一個工程,然后設置一下器件類型等,就可以進行綜合了。圖3.7給出了綜合后的結果。如下所示:圖3.7 綜合后資源使用情況任意輸入一組信號:Din=96,0,0

48、,0,48,0,0,0,96,0,0,0,48,0,0,0,96,0,0,0,48,0,0,0,96,0,0,0,48,0,0,0由quartus II仿真結果如下:整理數(shù)據(jù)如下:輸出Dout=21 2 -17 -10 44 80 71 29 28 24 24 28 39 72 72 39 28 24 24 28 39 72 72 39 28 24 24 28 39 72 72 39 28通過與MATLAB中設計的濾波器結果對比驗證,輸出數(shù)據(jù)準確無誤。結論在介紹FIR濾波器的基本理論的基礎上,本設計利用MATLAB軟件對濾波器設計的三種方法進行比較,最后選擇等波紋最佳逼近法設計出了256階FI

49、R低通濾波器并導出濾波器系數(shù),最后進行了仿真,達到了預期的性能。對于FIR濾波器的硬件實現(xiàn),本設計采用了自頂向下的層次化、模塊化的設計思想,用VHDL語言描述了各個子模塊,并在CYLONEII系列FPGA器件上進行了開發(fā),使用QUARTUSII軟件進行了時序仿真,最后的結果證明所設計的FIR低通濾波器功能正確,能夠滿足一般應用的要求。參 考 文 獻1姚海燕.基于FPGA的離子遷移譜儀數(shù)字濾波器設計D.南京理工大學,2010.2成小飛.基于FPGA的復合圖像顯示系統(tǒng)的軟硬件設計D.華中科技大學,2007.3張彥龍.USB測控系統(tǒng)中高精度數(shù)字鎖相環(huán)的設計與實現(xiàn)D.國防科學技術大學,2008.4唐國

50、洋.基于FPGA的特殊波形實時識別技術D.華中科技大學,2008.5彭斐.基于計算智能方法的量子電路自動綜合與仿真算法研究D.合肥工業(yè)大學,2010.6趙文亮,蔣冰.基于FPGA的高階高速FIR濾波器設計與實現(xiàn)J.中國有線電視,2006,Z1:329-331.7商佳宜.廣域電網(wǎng)相量同步測量裝置的研制D.浙江大學,2005.8周在龍.基于VHDL的數(shù)字存儲示波器的設計與開發(fā)D.山東師范大學,2006.9王志輝.數(shù)字示波表控制電路及GUI的設計與實現(xiàn)D.電子科技大學,2006.10王煥平.基于SOC的MCU設計技術研究D.西安電子科技大學,2007.11閆霞.基于FPGA的PROFIBUS-DP從

51、站接口研究D.武漢科技大學,2007.12王冠軍.基于多項式符號代數(shù)的高級測試綜合研究D.哈爾濱工程大學,2007.13徐華.高速FPGA在遠程測距中的應用D.南京理工大學,2004.14宋澤明.基于VHDL語言的單片機設計D.北京工業(yè)大學,2004.15YilunMa,J.AllanFeurtado,AllisonR.Kermode.EffectofsolidmatrixprimingduringmoistchillingondormancybreakageandgerminationofseedsoffourfirspeciesJ.NewForests,2003,251:.附錄A 頂層例化

52、圖及程序代碼頂層例化圖如下:程序代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add889 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (7 downto 0); Dout:out signed(8 downto 0);END add889;ARCHITECTURE a of add889 isSIGNAL s1: signed(8 downto 0);SIGNAL s2: signed(8 downto 0);BEGIN s1<=(Din1(7)&Din1); s2<=(Din2(7)&Din2);PROCESS(Di

溫馨提示

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

評論

0/150

提交評論