對FIR數(shù)字濾波器的FPGA實現(xiàn)的研究
2 基于分布式算法的FIR濾波器的實現(xiàn)
2.1 分布式算法原理
上世紀70年代Croisie提出了分布式算法DA(Distributed Arithmetic),但由于其特別適合用FPGA實現(xiàn),所以直到Xilinx公司在FPGA中使用查找表(LUT)后,DA才被廣泛應用在FPGA求乘積和中。
FIR的濾波輸出y可以表示為輸入x和系數(shù)h的內(nèi)積:
由上述推導可知,分布式算法是一種以實現(xiàn)乘加運算為目的的運算方法。它與傳統(tǒng)實現(xiàn)乘加運算的先后順序不同。分布式算法在完成乘加功能時,是通過將各輸入數(shù)據(jù)每一對應位產(chǎn)生的部分積預先進行相加形成相應部分積,然后在對各部分積預先進行累加形成最終結(jié)果;而傳統(tǒng)算法是等到所有乘積產(chǎn)生之后再進行相加來完成乘加運算。
2.2 分布式FIR的實現(xiàn)結(jié)構(gòu)
圖2為分布式FIR濾波器的直接實現(xiàn)結(jié)構(gòu)。對于小位寬的數(shù)據(jù),DA算法不僅速度快,而且所占用的芯片資源少。
2.3 性能優(yōu)化方法
1)流水線結(jié)構(gòu)法 在濾波器中間增加適當?shù)募拇嫫鳎瑯?gòu)成流水線結(jié)構(gòu)。在并行結(jié)構(gòu)實現(xiàn)中添加流水線結(jié)構(gòu),可以提高濾波器速度,使其工作在更高的工作頻率。對于速度固定的數(shù)據(jù),可以通過多次復用乘累加器來節(jié)省資源。
2)查找表分隔法 在用LUT實現(xiàn)分布式算法時,由于LUT的規(guī)模隨著N的增加呈現(xiàn)指數(shù)增長,如果濾波器系數(shù)N過大,則查找表的規(guī)模十分龐大。為了減小規(guī)模,可以利用部分表計算。由于FIR濾波器是線性濾波器,因此低階濾波器輸出可以相加,由此定義一個高階濾波器的輸出。例如,把16輸入的查找表分割成4個并行的查找表。
查找表的分隔技術(shù)和流水線技術(shù)可以大大減小設(shè)計規(guī)模,同時并不會降低濾波速度。使用DA算法實現(xiàn)的FlR濾波器與傳統(tǒng)的算法相比,DA算法可以極大地減少硬件電路規(guī)模,很容易實現(xiàn)流水線處理,提高電路的執(zhí)行速度。
2.4 3種結(jié)構(gòu)實現(xiàn)的比較
改進串行結(jié)構(gòu)、并行結(jié)構(gòu)、DA結(jié)構(gòu)實現(xiàn)的比較如下:
1)改進串行結(jié)構(gòu) ①優(yōu)點:使用資源少,只需一些寄存器、乘累加器便可完成整個濾波運算;②缺點:濾波速度慢,一次濾波所需的時鐘數(shù)由濾波器的階數(shù)決定。階數(shù)較高的濾波器,濾波周期很大,無法實現(xiàn)高速濾波。
2)并行結(jié)構(gòu) ①優(yōu)點:完成濾波的速度快,直接并行濾波器可以在一個時鐘周期內(nèi)完成一次濾波;②缺點:消耗大量的乘累加器,器件延遲較大,工作頻率不可能太高。
3)DA結(jié)構(gòu) 與串行結(jié)構(gòu)實現(xiàn)相比,DA實現(xiàn)濾波速度較快,其濾波周期由數(shù)據(jù)寬度決定而與濾波器的階數(shù)無關(guān);而與并行實現(xiàn)相比,DA實現(xiàn)消耗的資源較少。且容易實現(xiàn)流水線處理,提高電路的執(zhí)行速度。
在設(shè)計中,當資源成本為主要制約時,根據(jù)速度要求,選擇串行結(jié)構(gòu)實現(xiàn)或DA結(jié)構(gòu)實現(xiàn);而當速度成為主要制約時,則根據(jù)資源成本因素,選擇并行實現(xiàn)結(jié)構(gòu)或DA結(jié)構(gòu)實現(xiàn)。在一般的應用設(shè)計中,一般采用DA結(jié)構(gòu)實現(xiàn)。
評論