FIR濾波器的FPGA實現方法

來源:互聯網
上載者:User

標籤:style   class   http   com   使用   width   

FIR濾波器的FPGA實現方法

2011-02-21 23:34:15   來源:互連網   

非常重要的基本單元。近年來,由於FPGA具有高速度、高整合度和高可靠性的特點而得到快速發展。隨著現代數字通訊系統對於高精度、高處理速度的需求,越來越多的研究轉向採用FPGA來實現FIR濾波器。而對於FIR濾波器要充分考慮其資源與運行速度的合理最佳化,各種不同的FIR濾波結構各具優缺點,在瞭解各種結構優
缺點後才能更好地選擇合適結構來實現FIR濾波。

1 FIR數字濾波器
   
FIR數字濾波器由有限個採樣值組成,設計中在滿足幅值特性時,還能保證精確、嚴格的相位特性,因此在訊號處理等領域得到廣泛的應用。
    對於FIR濾波器,其輸出y(n)表示為如下形式:
   
    式中:N為濾波器的階數(或抽頭數);x(i)表示第i時刻的輸入樣本;h(i)為FIR濾波器的第i級抽頭係數。
    由於FIR濾波器的衝擊響應為一個有限序列,其系統函數可表示為:
   
    FIR濾波器的基本結構1所示。FIR濾波器只在原點處存在極點,所以這使得FIR濾波器具有全域穩定性。同時FIR濾波器滿足線性相位條件,其衝擊響應序列為實數且滿足奇對稱或偶對稱條件,即:
   



2 實現方法
   
運用FPGA來實現FIR數字濾波器的結構多種多樣,但是主要有以下幾類:串列結構、並行結構、轉置型結構、基於FFT演算法結構、分布式結構。其他類型的FIR濾波器結構都可以由以上幾種結構衍生而來。
2.1 串列結構
   
由運算式(1)可知,FIR濾波器實質是做一個乘累加運算,其濾波器的階數決定了一次乘累加的次數,其串列結構2所示。


    串列結構的FIR濾波器結構簡單,硬體資源佔用少,只需要複用1個乘法器和1個加法器,所以成本較低。但是,這種結構的FIR濾波器要經過多個刻度才有輸出,同時,內部刻度還受到乘法器運算速度的影響,所以該結構的FIR濾波器處理速度慢,只適用於濾波階數較低且處理速度要求低的系統。
2.2 並行結構
   
將串列結構的FIR濾波器展開就可以得到並行結構的FIR濾波器,並行FIR濾波器結構又稱作直接型FIR濾波器結構,這種結構是直接根據圖1的濾波器結構,用多個乘法器和加法器並行實現。通常考慮到其濾波器係數的對稱性,先對輸入值進行加法運算,再進行乘法運算,最後累加輸出,以此來減少乘法器的個數,其結構3所示。


    並行結構的FIR濾波器在1個周期內可以完成1次濾波,運行速度快,雖然利用濾波係數對稱性,但仍要佔用大量的乘法器和加法器,特別對於濾波階數高的濾波器,其資源佔用較多,如對於256階的濾波器,其需要128個乘法器來實現。為提高濾波器速度,常引入流水線結構,即在每次加法或者乘法運算後加入1個寄存器儲存資料,使得濾波器可以運行在更高的頻率上。2.3 轉置型結構
   
根據轉置定理,如果將網路中所有的支路方向倒轉,並將輸入x(n)和輸出y(n)相互交換,則其系統函數H(z)不變。通過轉置定理,將並行結構的FIR濾波器變換就可以得到轉置型FIR濾波器,其結構4所示。

 


    基於並行結構的轉置型FIR濾波器實現了資料的並行輸入,在1個周期內就能完成1次濾波,並且各級結構相同,在每個階段都可以讀出資料,可以對濾波階數進行擴充或者縮減,實現任意階數的濾波器。但是由於基於的是並行結構,便有著並行結構的一些缺點,主要是對於高階的濾波器,其資源佔用量是巨大的,設計成本高。雖然這樣,轉置型FIR濾波器仍是應用廣泛的一種濾波器。
2.4 基於FFT的結構
   
應用快速傅裡葉變換(fast fourier transform,FFT)實現FIR濾波器是一種快速實現濾波演算法的重要途徑。由式(1)可知,FIR濾波器的輸出y(n)是輸入x(n)與系統衝擊響應序列h(n)的卷積,應用FFT可以快速實現卷積變換。5所示,先將輸入訊號x(n)通過FFT變換為它的頻譜採樣值X(k),然後再與FIR濾波器的頻響採樣值H(k)相乘,H(k)可事先存放在儲存空間中,最後再將乘積X(k)H(k)通過快速傅裡葉反變換(IF-FT)還原為時域序列,即得到輸出y(n)。


    為實現FFT,根據兩有限長序列的線性卷積可用其迴圈卷積代替而不發生混疊,必須選擇迴圈卷積長度N≥N1+N2-1,即將x(n)和h(n)補零至長度為N的序列,即:
   
    在基於FFT的FIR濾波器結構中,求X(k),H(k)以及反傅裡葉變換y(n)需要的乘法次數均為N/2log2N,而計算X(k)H(k)需要N次乘法,所以基於FFT的總乘法次數為mf=3/2Nlog2N+N。由於h(n)滿足式(3)條件,所以直接卷積所需的乘法次數為md=1/2N1N2。假設N1=N2,則比較這兩種乘法計算量有:
   
    從表1可知,當N1<42時,FFT法的運算量小於直接卷積的運算量,當N1=42時,FFT法的運算量與直接卷積的運算量相當,當N1>42時,FFT法的運算量大於直接卷積的運算量,並且隨著N1增加,FFT法的運算速度越來越快,特別是N1=8 192時,FFT法的運算速度與直接卷積相比快上將近100倍。


2.5 分布式結構
2.5.1 分布式演算法原理

    分布式演算法(distributed arithmetic,DA)於1973年就由Croisier提出,但是直到FPGA出現,才廣泛的被應用於FPGA中計算乘累積和。對於有符號數x(n)可以用下式的補碼形式表示:
 
    對於式(7)中的h(i)xb(n-i)代表著輸入資料x(n-i)的第i位與抽頭係數h(i)的乘積,對於FIR濾波器,其係數h(i)是常數,所以可以事先構造一個尋找表。該尋找表格儲存體所有h(i)xb(n-i)的乘積值,通過輸入(xb(N-1),xb(N-2),…,xb(0))對該表定址,然後將查得的值乘上2b後移位累加便得到濾波器輸出y(n)。該尋找表構造規則如表2所示。

 


2.5.2 基於分布式演算法的FIR濾波器結構
   
基於分布式演算法的FIR濾波器主要有3種結構類型。
    (1)第一種結構為串列分布式結構。串列分布式FIR濾波器的原理為,首先用所有N個輸入量的最低位對DA尋找表進行定址查值,得到一個部分積,將部分積右移一位即相當於除以2後放到寄存器中暫存。同時,N個輸入量的次低位開始對DA尋找表進行定址查值,得到另一個部分積,把該部分積與上一個儲存在寄存器中的值進行相加,相加後的值再右移一位放到寄存器中。以此重複迴圈累加,直到所有位元都定址完
成,注意最高位定址後的部分積是相減,最後所得到的值就是所需要的結果。
    當N過大,即FIR濾波器的濾波階數很高時,採用一個尋找表來實現將使得儲存尋找表的ROM變得十分龐大。為此可採用部分表結構,即將尋找表劃分為多個部分,N個輸入量的同一位對應不同的部分表定址。圖6所示即為基於4輸入部分表結構的串列DA結構。


    (2)第二種結構為並行分布式結構。並行分布式結構就是將N個輸入量的不同位進行同時查表,而相同位送入同一個ROM定址,不同位有不同的ROM。其結構7所示。

 


    第三種結構為串並結合分布式結構。它是一種折中方案,既要求速度不太高又要求資源佔用少。對於串列分布式演算法,是一次一位(one bit-at-a-time,1BAAT)尋找表,而並行分布式演算法是一次B位(B bits-at-a-time)。所以串並結合分布式演算法採用一次多位,如2BAAT,3BA-AT。圖8所示為4BAAT尋找表結構圖。
    圖8中位元B是4的倍數,SRL為移位寄存器。SRL中第1行從右邊數第1列為資料的0位,第2列為資料的1位,第3列為資料的2位,第4列為資料的3位。類似地,第2行右數第1列為資料的4位,第2列為資料的5位,第3列為資料的6位,第4列為資料的7位。以後各行按相似的數位順序排列。在第一個刻度,資料的0,4,…,B-4位同時進入尋找表ROM中,查出所要的資料,第二個刻度,1,5,…,B-3位同時進入ROM中,查出所要的資料,所查得的資料傳遞給下一級累加器進行累加,這樣依次對剩下的各資料位元進行同樣的操作。由於每個塊之間相差4位,即16倍,為了對應位相加,所以乘16。FIR濾波器的分布式演算法結構比單獨用乘法器實現的速度快,特別是濾波階數越高,其優勢更加明顯。分布式結構中,串列結構是1次查詢1位,所以對B位的資料在不算上移位寄存等的時間,完成1次濾波需要B個刻度;而並行結構只需要1個刻度便完成濾波,所以並行結構是速度最優的結構,但是並行結構需要B個DA尋找表,需要大量的ROM來儲存,加大了硬體資源的消耗,特別是階數越高,硬體規模將十分膨大;串並結構綜合兩種結構優勢,實現在速度和規模上的協調。實際應用中。需根據系統的要求來選擇合適的結構。

3 結語
    本文定性地分析了各種FIR濾波器的FPGA實現方法。對於低階的FIR濾波器可採用串列結構、並行結構以及轉置型結構來實現,而並行結構和轉置型結構的FIR濾波器以犧牲資源損耗來實現了速度上優勢;對於高階的FIR濾波器,基於乘法器結構的串列結構、並行結構及轉置型結構在速度上難以達到高速處理的要求,而分布式演算法將乘法轉換為查表和累加的結構,使得分布式結構的FIR濾波器在速度上得到了提高,
但三種不同形式的分布式結構要在綜合考慮資源以及速度的基礎上進行合理選擇;同樣採用FFT實現的FIR濾波器以減少運算量來獲得了速度上的提高,特別是濾波階數越高其速度提升越明顯。
    現代工程技術領域對濾波系統的頻寬、高速、訊號的即時性處理等方面要求越來越高,在運用FPGA來實現FIR濾波中,基於乘法器結構的FIR濾波器無法滿足以上要求,而分布式結構的FIR濾波器巧妙地運用ROM尋找表來實現固定係數的乘累加運算,避免了乘法運算,並且在隨後的每級加法運算中引入流水線結構,提高了速度。因此採用分布式演算法實現FIR濾波器是目前研究的熱點,同時無論哪種分布式演算法都要使用ROM來做尋找表,但是隨著濾波階數的增加,ROM的數量將會增加,在進一步提高速度的情況下如何減少ROM的數量是今後亟待解決的問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.