新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 基于FPGA的FIR濾波器設計與仿真

基于FPGA的FIR濾波器設計與仿真

作者: 時間:2011-05-19 來源:網(wǎng)絡 收藏

3 查找表結構的算法
LUT本質上是一個RAM。目前中多使用4輸入的LUT,所以每一個LUT可以看成一個具有4位地址線的16×1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路后,開發(fā)軟件會自動計算邏輯電路的所有結果,并把結果寫到RAM中,當輸入一個信號進行運算就等于輸入一個地址,找出對應的內容,然后輸出。
由式(2)可見濾波器系統(tǒng)函數(shù)是一種卷積的運算形式。如果用直接實現(xiàn)則計算速度很慢且占用大量的LE(邏輯單元),達不到系統(tǒng)對實時性的要求,于是想到能否將上述卷積運算轉化成加減運算。
分布式算法(distributed arithmetic,DA)早在1973年就已經被Croisier提出來了,但是直到FPGA出現(xiàn)以后,才被廣泛應用在FPGA中計算乘積和。
濾波器的階數(shù)為N,輸入數(shù)據(jù)x(n)的位寬為k,則x(n)可表示為:
c.JPG
也就是說:我們可以把每個輸入數(shù)據(jù)的每一位的值分別與相應的FIR系數(shù)相乘(因為x(n)為數(shù)字信號,每個輸入數(shù)據(jù)的每一位的值都為0或1,所以與h(n)相乘的結果非0即為h(n))然后再相加,然后再把所有位的相加值錯位相加,可得到卷積的結果從而實現(xiàn)了將卷積運算轉換成加法運算。
這樣我們就可以針對N階FIR濾波器的系數(shù)預先建立一個2的N次方的一個存儲表,將系數(shù)和存放在對應的存儲單元中。進行卷積運算時把輸入數(shù)據(jù)的每一位組合成地址碼,通過地址查找到相應的系數(shù)和,然后把所有位數(shù)的系數(shù)和移位相加即可完成卷積運算。通過查表的方式可以大大減少求和的次數(shù),提高運算速度。

4 設計思路及步驟
4.1 FPGA系統(tǒng)設計的方法
用FPGA實現(xiàn)數(shù)字系統(tǒng)設計一般可分成以下幾個步驟:設計輸入、功能、編譯綜合生成網(wǎng)表文件、設計實現(xiàn)、時序、下載到芯片進行硬件驗證。在每一步檢查到的錯誤或缺陷都可以返回到上一層進行修改。
隨著數(shù)字系統(tǒng)規(guī)模的不斷增大,其復雜度也隨之增大。層次化設計將系統(tǒng)逐層分為較小的、規(guī)??煽刂频哪K,是控制數(shù)字系統(tǒng)設計復雜度的一種有效方法。
層次化設計中有兩個重要的核心思想,即模塊化和原件重用。模塊化是指將系統(tǒng)劃分為幾個子模塊,而這些子模塊又分別劃分為更小的模塊,直至不可再分。每個模塊都可以看成是上一層模塊的一個元件。原件重用是指同一個原件可以被不同的實體調用,或者被同一個實體多次調用。這樣不但大大減輕了設計者的工作量,而且使程序結構更加優(yōu)化,具有更好的可讀性。
4. 2 設計實例的參數(shù)選取及生成
MATLAB的信號處理工具箱中包括許多可用于設計FIR數(shù)字濾波器的M文件。根據(jù)要設計的濾波器的參數(shù)、通帶截止頻率、阻帶截止頻率、采樣頻率、通帶或阻帶波紋要求等參數(shù),可以利用MATLAB中的數(shù)字信號處理工具箱生成濾波器的系數(shù)。
在設計中,采用16階FIR,輸入數(shù)據(jù)寬12位,濾波器系數(shù)以及由這些系數(shù)演算出的ROM的初始化數(shù)據(jù)文件*.mif文件可以通過MATLAB計算生成。
因為是16階的FIR,這樣就需要65536個ROM單元來實現(xiàn),ROM單元的位寬采用16位。利用器件中的ROM建立這樣的查找表,首先要將ROM的初始化數(shù)據(jù)寫到*.mif文件中,然后在Ouartsus II中將其指向對應的ROM設計模塊。
當FIR的階數(shù)增大時,ROM的存儲量是以2的倍數(shù)增長的,因此采用一個ROM快分時查找表的方法來降低對ROM存儲容量的要求。
4.3 模塊化設計
用原理圖和VHDL相結合的輸入方式,分模塊進行設計,項層模塊采用圖形化輸入,在Quartsus II中進行設計輸入。
系統(tǒng)由控制模塊、輸入數(shù)據(jù)移位模塊、地址發(fā)生模塊、存儲器模塊、運算模塊等組成。下面介紹每一模塊的基本功能。
(1)控制模塊的作用是產生一系列的控制信號,對上述各種模塊進行精確的控制??刂颇K在收到A/D轉換結束信號后,依次產生移位寄存器使能信號、并行到串行轉換的裝入信號、移位相加的裝入信號、加減控制信號和濾波器結果輸出信號等控制信號。使上述各個模塊按照一定的時序進行操作,最終完成濾波功能。該模塊采用VHDL的描述方式比較方便。
(2)輸入數(shù)據(jù)移位模塊的主要功能是使A/D轉換后的數(shù)據(jù)通過不同的觸發(fā)器,從而產生不同的延遲,以便取出輸入數(shù)據(jù)不同位置上的數(shù)值,來構成ROM的地址。
(3)地址發(fā)生器模塊的主要功能是將通過輸入數(shù)據(jù)移位模塊的不同延遲分別轉換為查找表的串行地址,提供給存儲器模塊。根據(jù)結構化的程序設計思想,本模塊可由12個單通道并、串轉換模塊組成。
(4)存儲器模塊是這種查找表結構FIR的核心。FPGA中ROM模塊的設計可以通過Quartsus II軟件中的Mega Wizard向導來生成。
(5)運算模塊主要功能是將ROM的輸出數(shù)據(jù)在此進行移位相加。這里實現(xiàn)的主要是加法和減法運算,運算速度很快。
最后的項層模塊采用圖形化輸入,這樣可以使設計思路更加清晰,也符合自上而下的FPGA主流設計方法。


評論


相關推薦

技術專區(qū)

關閉