二維FIR濾波器的FPGA實現(xiàn)
O 引言
本文引用地址:http://cafeforensic.com/article/267748.htm二維有限長單位脈沖響應(yīng)濾波器(2D—FIR)用于對二維信號的處理,如在通信領(lǐng)域中廣泛采用2D-FIR完成對I、Q兩支路基帶信號的濾波[1]。由于涉及大量復(fù)數(shù)運算并且實時性要求高,如果不對算法作優(yōu)化在技術(shù)上很難實現(xiàn)。目前主要設(shè)計方案是利用FPGA廠商提供的一維FIR知識產(chǎn)權(quán)核(IP),組成二維濾波器[2]。這種方案沒有考濾復(fù)數(shù)運算的特點,不可能在算法上優(yōu)化,而且IP核的內(nèi)部代碼是不可修改的,因此在不同廠商的器件上不可移植。2D_FIR的復(fù)數(shù)運算都需轉(zhuǎn)成實數(shù)運算來實現(xiàn)的,而其中實數(shù)乘法運算占用邏輯資源遠比實數(shù)加法多。通過分析復(fù)數(shù)乘法特點,減小其所需實數(shù)乘法器個數(shù)就可以減小邏輯資源占用率并提高運算速度。這種方案優(yōu)點在于直接優(yōu)化算法,不會受IP核限制可移植性很強。
1 2D—FlR的設(shè)計
采用FPGA設(shè)計復(fù)數(shù)FIR濾波器常見的方案[2]為:用FPGA廠商提供的4個實數(shù)FIR濾波器IP核組合成2D—FIR濾波器。很明顯這種設(shè)計沒有考慮復(fù)數(shù)運算的特點,2D—FIR濾波器占用資源至少4倍于實數(shù)FIR濾波器,硬件資源耗費過大,性能也會受到不小的影響。因此從算法上分析并優(yōu)化濾波器的結(jié)構(gòu)非常必要。
1.1 算法優(yōu)化
2D—FIR濾波器結(jié)構(gòu)采用卷積型,它對輸入數(shù)據(jù)的處理就是進行卷積運算[3],如(1)式所示:
(1)式中各量全為復(fù)數(shù):xρ(n)為輸入數(shù)據(jù)為濾波器抽頭系數(shù)。由(1)式可以看出其運算過程是先作復(fù)數(shù)乘法運算,再將乘積結(jié)果作復(fù)數(shù)加法得到一個復(fù)數(shù)乘法由4個實數(shù)乘法和2個實數(shù)加法構(gòu)成。而相同位數(shù)的實數(shù)乘法器與實數(shù)加法器相比會占更多的硬件資源,也會對電路性能產(chǎn)生更多的負面影響。通過優(yōu)化后的復(fù)數(shù)乘法如下:
比較(2)式和(3)式可以得到兩個式子中xR×CI、xI×CR是共有項,故優(yōu)化后的復(fù)乘法器需3個實數(shù)乘法器和5個實數(shù)加法器。如果抽頭系數(shù)為常數(shù)cR-cI,可以事先計算,還可以省一個加法器。通過Quartus II編譯、分析可以看到復(fù)乘法器性能提升了近14%,同時器件資源占用卻下降了17%。因為濾波器共需15個復(fù)乘法器所以總體上減小的邏輯單元非常可觀。
1.2 FPGA實現(xiàn)
考慮到2D—FIR濾波器的運用背景,除HDTV信道中要求抽頭數(shù)大于100以外抽頭數(shù)定為15已能滿足一般通信系統(tǒng)的要求,輸入數(shù)據(jù)和抽頭系統(tǒng)數(shù)據(jù)寬度都為16位。其中,輸入數(shù)據(jù)整數(shù)位(含符號位)為4位,小數(shù)位為12位,抽頭系數(shù)整數(shù)位為(含符號位)3位,小數(shù)位為13位,輸出數(shù)據(jù)與輸入數(shù)據(jù)位寬選取一樣。FPGA實現(xiàn)浮點小數(shù)運算代價太大,解決小數(shù)運算的方法是將小數(shù)表示為帶符號的整數(shù)[2],運算后再對結(jié)果進行截尾處理。
由于2D—FIR濾波器中有很多乘法和加法器,它們都是大型組合邏輯電路,所以需要在電路上進一步優(yōu)化。引入多級流水線是提升電路工作速度很有效的方法[4],文獻[2]所采用的轉(zhuǎn)置卷積型濾波器結(jié)構(gòu)實質(zhì)是在乘法器之間加入了一級流水線,但相對于多級流水線其對電路性能提升并不大。本文加流水線具體的做法是用寄存器將組合電路分成若干延時相近的小型組合電路,同時將乘法和加法器分別設(shè)置為3級和2級流水線以滿足流水線配平原則。FPGA選用Altera公司專用于數(shù)字信號處理的EPlS20芯片,經(jīng)過Quartus II編譯后從報告中看到濾波器工作頻率為146MHz,占用芯片54%的邏輯資源。
2 仿真及結(jié)論
電路仿真結(jié)果如圖1所示,輸入數(shù)據(jù)為[1+3*i,5,0,0,0 0,0,2,3.5,1+2*i,0,0…],抽頭系數(shù)在模塊中設(shè)為[0.851*i,0,0,1,-i,1.15-0.4.i,0,0,0,i, 0, 0, 0, 0,圖1 2D—FIR濾波器電路時序仿真結(jié)果
0.1*i]。為了方便驗證仿真結(jié)果,事先計算出輸出數(shù)據(jù)并轉(zhuǎn)化為帶符號位的整數(shù)[-10457+3486i,0+17428i,0,4096+12288i,32768—4096i,9626—7987i…]。從圖3中的仿真結(jié)果可以看到,經(jīng)過十幾個時鐘周期的延時后復(fù)數(shù)FIR濾波器的輸出為[3486+10457 i,17428,0,4096+12288i,32767-4096i,9626-7987i…],前面兩個數(shù)據(jù)與計算結(jié)果不一致是因為:復(fù)濾波器剛開始工作時內(nèi)部移位寄存器默認的數(shù)據(jù)是0而不是外部輸入的數(shù)據(jù),當數(shù)據(jù)全部裝載入濾波器后,計算結(jié)果完全滿足設(shè)計要求。
通過對算法與電路的優(yōu)化使2D—FIR濾波器的性能提高了13%,邏輯資源的占用減小了16%。文中所提出的方案比常規(guī)方法更有效,而且具有更強的可移植性。
電氣符號相關(guān)文章:電氣符號大全
濾波器相關(guān)文章:濾波器原理
fpga相關(guān)文章:fpga是什么
濾波器相關(guān)文章:濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
脈沖點火器相關(guān)文章:脈沖點火器原理 數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理
評論