FIR數字濾波器的FPGA實現研究
根據單位脈沖響應的不同,數字濾波器主要分為有限脈沖響應(FIR)和無限脈沖響應(IIR)2大類。在同樣的設計要求下,IIR方式計算工作量較小。但難以得到線性相位響應,且系統不易穩定;FIR方式的計算工作量稍大,但在設計任意幅頻特性時,能保證嚴格的線性相位特性;由于其實現結構主要是非遞歸的,FlR濾波器可以穩定工作。FIR數字濾波器是數字多普勒接收機的重要組成部分,因此,研究FIR數字濾波器的實現技術具有重要意義。隨著FPGA技術的不斷發展,FPGA逐漸成為信號處理的主流器件。而在FPGA中,數字濾波器不同的實現方法所消耗的FPGA資源是不同的,且對濾波器的性能影響也有較大差異。
1 FIR濾波器的原理及結構
FIR濾波器存在N個抽頭的h(n),N稱為濾波器的階數,其數學表達式為:

式中,x(k)為第k時刻的采樣值,y(n)為濾波器輸出。h(k)為FIR濾波器的第k級抽頭系數。
通過對h(k)進行Z變換得到FIR的傳遞函數H(Z),其在Z域內的形式如下:

因此,根據傳遞函數H(Z)和FIR濾波器系數的對稱性,可得FIR濾波器的一般實現結構,如圖1所示。
從串行結構中可以看出,FIR濾波過程就是一個信號逐級延遲的過程,將各級延遲輸出加權累加,得到濾波輸出,其中最主要的運算是乘累加運算。FIR每完成一次濾波過程需要進行N次乘法和(N-1)次加法運算,N為濾波器的階數。所以,濾波器的運算量完全取決于N的大小,當N很大時,延遲將非常長,無法實現高速信號處理。
根據FIR數字濾波器的對稱特性,可以先進行加法運算,然后對加法運算的結果進行串行乘累加運算,從而得到改進的串行結構。與串行結構相比,改進的濾波器完成一次濾波的時鐘周期減半,乘累加次數減半,提高了處理速度,但同時要消耗更多的硬件資源。圖1(b)為Ⅳ位偶數時改進的串行結構。與串行結構相似,濾波器的運算量完全取決于N的大小,當N很大時,延遲將非常長,無法實現高速信號處理。
將串行結構展開,根據濾波器的信號流圖用多個乘法器和加法器并行實現,得到FIR濾波器的并行實現結構,如圖1(c)所示。并行濾波器的濾波速度快,一個時鐘周期內完成一次濾波,但消耗大量的FPGA資源,如乘累加器,且器件的延遲較大,工作頻率不宜太高。
FPGA具有規整的內部邏輯陣列和豐富的連線資源,特別適合用于數字信號處理。但以前FPGA一般用于系統邏輯或時序控制,很少應用在信號處理方面。其原因主要是FPGA中缺乏實現乘法運算的有效結構。隨著FPGA技術的不斷發展,查找表(LUT)技術的應用有效地解決了這個問題,使FPGA在數字信號處理方面得到了廣泛應用。
2 基于分布式算法的FIR濾波器的實現
2.1 分布式算法原理
上世紀70年代Croisie提出了分布式算法DA(Distributed Arithmetic),但由于其特別適合用FPGA實現,所以直到Xilinx公司在FPGA中使用查找表(LUT)后,DA才被廣泛應用在FPGA求乘積和中。
FIR的濾波輸出y可以表示為輸入x和系數h的內積:
由上述推導可知,分布式算法是一種以實現乘加運算為目的的運算方法。它與傳統實現乘加運算的先后順序不同。分布式算法在完成乘加功能時,是通過將各輸入數據每一對應位產生的部分積預先進行相加形成相應部分積,然后在對各部分積預先進行累加形成最終結果;而傳統算法是等到所有乘積產生之后再進行相加來完成乘加運算。
2.2 分布式FIR的實現結構
圖2為分布式FIR濾波器的直接實現結構。對于小位寬的數據,DA算法不僅速度快,而且所占用的芯片資源少。
2.3 性能優化方法
1)流水線結構法 在濾波器中間增加適當的寄存器,構成流水線結構。在并行結構實現中添加流水線結構,可以提高濾波器速度,使其工作在更高的工作頻率。對于速度固定的數據,可以通過多次復用乘累加器來節省資源。
2)查找表分隔法 在用LUT實現分布式算法時,由于LUT的規模隨著N的增加呈現指數增長,如果濾波器系數N過大,則查找表的規模十分龐大。為了減小規模,可以利用部分表計算。由于FIR濾波器是線性濾波器,因此低階濾波器輸出可以相加,由此定義一個高階濾波器的輸出。例如,把16輸入的查找表分割成4個并行的查找表。
查找表的分隔技術和流水線技術可以大大減小設計規模,同時并不會降低濾波速度。使用DA算法實現的FlR濾波器與傳統的算法相比,DA算法可以極大地減少硬件電路規模,很容易實現流水線處理,提高電路的執行速度。
評論