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