崔 楊,趙 利,廖連貴
(桂林電子科技大學 信息與通信學院,廣西 桂林 541004)
FIR濾波器作為一種最重要的數字信號處理部件,被廣泛用于雷達、通信等工程領域[1]。考慮到FPGA具有集成度高、高速和高可靠性等優點,使用FPGA來實現FIR濾波器,既具有實時性,又兼顧了一定的靈活性,為數字信號處理提供了一種很好的解決方案[2]。
Xilinx System Generator for DSP是一種廣泛公認的高效FPGA開發工具,基于其所提供的Simulink的圖形環境和Xilinx DSP核的預定義模塊集,在Simulink平臺上來完成在FPGA中創建數字信號處理設計[3]。豐富且易用的環境下搭建的系統不但可以包括針對外部總線存貯器讀寫訪問、系統數據同步和整體系統控制的同步接口而且可讀性強,這同時滿足了系統框架結構設計師和硬件設計人員的需要,近幾年在數字通信領域得到廣泛應用。
FIR濾波器的實現結構有很多種,最常見的有串行結構,并行結構和流水線結構等[4]。
這里基于科研項目所使用的Lyrtech SFF SDR平臺及相配套的Xilinx System Generator for DSP 9.2工具,給出了FIR compiler1_0與FDA Tool聯合設計、橫截型結構設計和基于Black Box嵌入.v程序實現的三種FIR濾波器設計方案,并進行了簡要的步驟和功能說明。
在Xilinx System Generator for DSP 9.2版本的模塊庫中,專門提供了用于FIR濾波器設計的FIR compiler v1_0編譯模塊,通常此模塊與FDA Tool工具聯合使用。FDA Tool是專用的數字濾波器設計工具[5],可以方便的對濾波器的類型、階數、采樣率、通帶截止頻率和阻帶截止頻率等參數進行選擇、修改及設定,以完成濾波器的設計。
雙擊FIR compiler v1_0模塊,Coefficient vector欄填寫:[xlfda_numerator('FDA Tool')]表示使用當前FDA Tool模塊設計的濾波器抽頭系數作為FIR濾波器抽頭系數。則就能實現FIR compiler v1_0與FDA Tool模塊結合工作,完成濾波功能,如圖1所示。

圖1 FIR compiler與FDATool聯合開發
兩者結合的優點是濾波器設計簡潔和修改方便,但對于FIR compiler1_0模塊來說,它只適用于Virtex4系列芯片,則存在適用范圍的局限性。不過隨著軟件版本的提高和模塊庫的完善,這個問題會很快得到解決。
FIR濾波器的橫截型結構如圖2所示,是通過加法器、乘法器及延時單元共同搭建實現的FIR濾波器最基本的結構。濾波器的設計也是利用FDA Tool模塊來完成的。用FDA Tool工具完成濾波器類型、參數等的設計后,可以導出Simulink Model。因為所設計的濾波器最終要在FPGA硬件芯片上實現,所以導出的Simulink Model要使用System Generator中的加法器、乘法器和延時單元模型替代,完成橫截型結構設計,最終完成編譯下載到硬件實現(FDA Tool模塊可在導出Simulink Model后可刪除。)

圖2 橫截型結構
此方法適用Xilinx家族中支持System Generator for DSP工具的任何型號FPGA芯片,適用范圍廣。但模型替代繁瑣,而且輸出的定點位數設定還要用示波器進行跟蹤,確定。一旦濾波器系數確定,就不便修改,就此點沒有第一種方法方便。此種方法適合于那些不支持FIR compiler模塊并且對濾波階數要求不高的FPGA芯片。
System Generator的模塊庫中包含可調用Verilog或VHDL代碼的Black Box模塊,如圖3所示。可根據濾波器設計要求進行Verilog或VHDL代碼編寫,然后通過Black Box模塊調用已編寫好的.v 文件,它會自動轉換成MATLAB的m文件,并在Simulink中進行仿真。FIR的濾波參數是通過MATLAB來求得的[4]。生成的新模塊與硬件描述語言設計的模塊具有相同的輸入/輸出端口和功能。

圖3 BlackBox模塊
此種方法的優點是,實現了模型與代碼的有機結合,體現了代碼編譯的靈活性和模型設計的直觀性和系統性。雖然它也適用于Xilinx家族中支持System Generator for DSP工具的任何型號FPGA芯片。
但Black Box的使用還有許多需要注意的地方,如對可綜合的HDL代碼的要求,對于Verilog要求模塊和端口名稱必須是用小寫字母表示,并遵循HDL編寫標準;時鐘設置不支持下降沿觸發[6]。還要注意 Configuration Wizard的配置等。這里不再敖述,可以參閱文獻[6]了解具體的內容。
例如:設計一個低通濾波器,用以濾除疊加在 1.5 kHz信號中的6 kHz的高頻成分。設計參數為:
濾波器階數N=18;
通帶截止頻率Fp=3 kHz;
阻帶截止頻率Fs=5 kHz;
采樣率為fs=18 kHz;
帶內波動Apss=1 dB;
帶外衰減Astop=60 dB;
三種方法的仿真結果如圖4、圖5、圖6所示。

圖4 濾波前后時域波形

圖5 濾波前頻域譜

圖6 濾波后頻域譜
如圖4為信號的時域譜,上路input為輸入,是兩個信號的疊加信號;下路output是經過濾波后的輸出,可以看出濾波后只剩單一頻率的正弦信號。圖5為信號的濾波前頻域普,可以清晰的看到有兩個信號譜,分別位于1.5 kHz和6 kHz位置;圖6是信號經過濾波后的頻域譜,由6圖可知已6 kHz高頻成分已被衰減60 dB,可認為已經濾掉,只剩1.5 kHz處的單一頻率譜。
仿真結果表明,三種設計方法實現的FIR濾波器均達到了設計指標要求,實現了預定濾波效果,從而證明了三種濾波設計方法的可行性和有效性。
可以采用System Generator for DSP自帶的Resource Estimated模塊來評估在FPGA上實現時所需要的硬件資源。各種設計方法消耗的FPGA硬件資源情況如表1所示。消耗量1是用FIR compiler1_0與FDA Tool聯合設計方法實現濾波設計的資源消耗情況;消耗量2是用橫截型結構設計實現濾波設計的資源消耗情況;消耗量3是用Black Box設計實現濾波設計的資源消耗情況。
可以看出消耗量2所示的消耗資源最多。因為橫截型結構設計中使用的乘法器是通過邏輯門的來實現乘累加功能,并不是采用Xilinx專有的DSP48硬件乘法器,在表中用Emb.Mults(嵌入式乘法器)表示,所以占用的Slices和LUTS會比較多一些。這里DSP48硬件乘法器是在FPGA芯片內部的內核乘法器,數量有限。
對于消耗量1和消耗量3的方法所占用的資源相對較少,因為他們都是基于HDL語言的Ipcore,其中FIR compiler是已經進行優化封裝好的Ipcore,而BlackBox是對針對用戶開放的Ipcore,可自行編寫HDL代碼,靈活嵌入。從占用資源角度來看,第一和第三種方法占用的資源較少,雖然第一種方法比第三種方法更多的使用了Slices和LUTS,但其消耗的Emb.Mults少一些,如何高效、限量的利用DSP48也是衡量一個優化系統的重要標準。而且相對第三種方法第一種方法更加簡單方便,規范性強,還能縮短開發時間,所以綜合考慮調用已有Ipcore即FIR compiler模塊的方法最優。

表1 三種方法資源消耗表
在System Generator for DSP 9.2的基礎上介紹了三種設計及實現FIR濾波器的方法,進行了舉例仿真,并對于每種方法所占用的資源進行了詳細的分析比較,認為使用已封裝好的Ipcore,不但簡單方便可以減少系統開發時間,又能有效利用硬件資源,是最優的選擇。前提是硬件芯片支持此Ipcore。每種方法也都有其自己身的優缺點,使用設計方法的選擇,可根據現有硬件資源、環境情況及各個方法的特點進行取舍。
[1] 王春來,歐陽喜.基于FPGA的半并行FIR濾波器設計[J].新中國新通信,2009,15(08):86-89.
[2] 王秀敏,汪毓鐸,張洋,等.通信系統中FIR數字濾波器的設計研究[J].通信技術,2009,42(09):3-6.
[3] TIM VANEVENHOVEN.使用MATLAB為System Generator for DSP創建IP[J].今日電子,2008,5(05):52-57.
[4] 杜德,李小文.TD-SCDMA中FIR濾波器的DSP實現[J].通信技術,2008,9(09):92-112.
[5] 孟惠霞,耿俊梅.MATLAB-DSP集成環境下的FIR數字濾波器設計[J].信息安全與通信保密,2009,6(06):58-63.
[6] 田耕,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA開發指南[M].北京:人民郵電出版社,2009.