崔 楊,趙 利,廖連貴
(桂林電子科技大學(xué) 信息與通信學(xué)院,廣西 桂林 541004)
FIR濾波器作為一種最重要的數(shù)字信號處理部件,被廣泛用于雷達(dá)、通信等工程領(lǐng)域[1]??紤]到FPGA具有集成度高、高速和高可靠性等優(yōu)點(diǎn),使用FPGA來實(shí)現(xiàn)FIR濾波器,既具有實(shí)時(shí)性,又兼顧了一定的靈活性,為數(shù)字信號處理提供了一種很好的解決方案[2]。
Xilinx System Generator for DSP是一種廣泛公認(rèn)的高效FPGA開發(fā)工具,基于其所提供的Simulink的圖形環(huán)境和Xilinx DSP核的預(yù)定義模塊集,在Simulink平臺上來完成在FPGA中創(chuàng)建數(shù)字信號處理設(shè)計(jì)[3]。豐富且易用的環(huán)境下搭建的系統(tǒng)不但可以包括針對外部總線存貯器讀寫訪問、系統(tǒng)數(shù)據(jù)同步和整體系統(tǒng)控制的同步接口而且可讀性強(qiáng),這同時(shí)滿足了系統(tǒng)框架結(jié)構(gòu)設(shè)計(jì)師和硬件設(shè)計(jì)人員的需要,近幾年在數(shù)字通信領(lǐng)域得到廣泛應(yīng)用。
FIR濾波器的實(shí)現(xiàn)結(jié)構(gòu)有很多種,最常見的有串行結(jié)構(gòu),并行結(jié)構(gòu)和流水線結(jié)構(gòu)等[4]。
這里基于科研項(xiàng)目所使用的Lyrtech SFF SDR平臺及相配套的Xilinx System Generator for DSP 9.2工具,給出了FIR compiler1_0與FDA Tool聯(lián)合設(shè)計(jì)、橫截型結(jié)構(gòu)設(shè)計(jì)和基于Black Box嵌入.v程序?qū)崿F(xiàn)的三種FIR濾波器設(shè)計(jì)方案,并進(jìn)行了簡要的步驟和功能說明。
在Xilinx System Generator for DSP 9.2版本的模塊庫中,專門提供了用于FIR濾波器設(shè)計(jì)的FIR compiler v1_0編譯模塊,通常此模塊與FDA Tool工具聯(lián)合使用。FDA Tool是專用的數(shù)字濾波器設(shè)計(jì)工具[5],可以方便的對濾波器的類型、階數(shù)、采樣率、通帶截止頻率和阻帶截止頻率等參數(shù)進(jìn)行選擇、修改及設(shè)定,以完成濾波器的設(shè)計(jì)。
雙擊FIR compiler v1_0模塊,Coefficient vector欄填寫:[xlfda_numerator('FDA Tool')]表示使用當(dāng)前FDA Tool模塊設(shè)計(jì)的濾波器抽頭系數(shù)作為FIR濾波器抽頭系數(shù)。則就能實(shí)現(xiàn)FIR compiler v1_0與FDA Tool模塊結(jié)合工作,完成濾波功能,如圖1所示。
圖1 FIR compiler與FDATool聯(lián)合開發(fā)
兩者結(jié)合的優(yōu)點(diǎn)是濾波器設(shè)計(jì)簡潔和修改方便,但對于FIR compiler1_0模塊來說,它只適用于Virtex4系列芯片,則存在適用范圍的局限性。不過隨著軟件版本的提高和模塊庫的完善,這個問題會很快得到解決。
FIR濾波器的橫截型結(jié)構(gòu)如圖2所示,是通過加法器、乘法器及延時(shí)單元共同搭建實(shí)現(xiàn)的FIR濾波器最基本的結(jié)構(gòu)。濾波器的設(shè)計(jì)也是利用FDA Tool模塊來完成的。用FDA Tool工具完成濾波器類型、參數(shù)等的設(shè)計(jì)后,可以導(dǎo)出Simulink Model。因?yàn)樗O(shè)計(jì)的濾波器最終要在FPGA硬件芯片上實(shí)現(xiàn),所以導(dǎo)出的Simulink Model要使用System Generator中的加法器、乘法器和延時(shí)單元模型替代,完成橫截型結(jié)構(gòu)設(shè)計(jì),最終完成編譯下載到硬件實(shí)現(xiàn)(FDA Tool模塊可在導(dǎo)出Simulink Model后可刪除。)
圖2 橫截型結(jié)構(gòu)
此方法適用Xilinx家族中支持System Generator for DSP工具的任何型號FPGA芯片,適用范圍廣。但模型替代繁瑣,而且輸出的定點(diǎn)位數(shù)設(shè)定還要用示波器進(jìn)行跟蹤,確定。一旦濾波器系數(shù)確定,就不便修改,就此點(diǎn)沒有第一種方法方便。此種方法適合于那些不支持FIR compiler模塊并且對濾波階數(shù)要求不高的FPGA芯片。
System Generator的模塊庫中包含可調(diào)用Verilog或VHDL代碼的Black Box模塊,如圖3所示??筛鶕?jù)濾波器設(shè)計(jì)要求進(jìn)行Verilog或VHDL代碼編寫,然后通過Black Box模塊調(diào)用已編寫好的.v 文件,它會自動轉(zhuǎn)換成MATLAB的m文件,并在Simulink中進(jìn)行仿真。FIR的濾波參數(shù)是通過MATLAB來求得的[4]。生成的新模塊與硬件描述語言設(shè)計(jì)的模塊具有相同的輸入/輸出端口和功能。
圖3 BlackBox模塊
此種方法的優(yōu)點(diǎn)是,實(shí)現(xiàn)了模型與代碼的有機(jī)結(jié)合,體現(xiàn)了代碼編譯的靈活性和模型設(shè)計(jì)的直觀性和系統(tǒng)性。雖然它也適用于Xilinx家族中支持System Generator for DSP工具的任何型號FPGA芯片。
但Black Box的使用還有許多需要注意的地方,如對可綜合的HDL代碼的要求,對于Verilog要求模塊和端口名稱必須是用小寫字母表示,并遵循HDL編寫標(biāo)準(zhǔn);時(shí)鐘設(shè)置不支持下降沿觸發(fā)[6]。還要注意 Configuration Wizard的配置等。這里不再敖述,可以參閱文獻(xiàn)[6]了解具體的內(nèi)容。
例如:設(shè)計(jì)一個低通濾波器,用以濾除疊加在 1.5 kHz信號中的6 kHz的高頻成分。設(shè)計(jì)參數(shù)為:
濾波器階數(shù)N=18;
通帶截止頻率Fp=3 kHz;
阻帶截止頻率Fs=5 kHz;
采樣率為fs=18 kHz;
帶內(nèi)波動Apss=1 dB;
帶外衰減Astop=60 dB;
三種方法的仿真結(jié)果如圖4、圖5、圖6所示。
圖4 濾波前后時(shí)域波形
圖5 濾波前頻域譜
圖6 濾波后頻域譜
如圖4為信號的時(shí)域譜,上路input為輸入,是兩個信號的疊加信號;下路output是經(jīng)過濾波后的輸出,可以看出濾波后只剩單一頻率的正弦信號。圖5為信號的濾波前頻域普,可以清晰的看到有兩個信號譜,分別位于1.5 kHz和6 kHz位置;圖6是信號經(jīng)過濾波后的頻域譜,由6圖可知已6 kHz高頻成分已被衰減60 dB,可認(rèn)為已經(jīng)濾掉,只剩1.5 kHz處的單一頻率譜。
仿真結(jié)果表明,三種設(shè)計(jì)方法實(shí)現(xiàn)的FIR濾波器均達(dá)到了設(shè)計(jì)指標(biāo)要求,實(shí)現(xiàn)了預(yù)定濾波效果,從而證明了三種濾波設(shè)計(jì)方法的可行性和有效性。
可以采用System Generator for DSP自帶的Resource Estimated模塊來評估在FPGA上實(shí)現(xiàn)時(shí)所需要的硬件資源。各種設(shè)計(jì)方法消耗的FPGA硬件資源情況如表1所示。消耗量1是用FIR compiler1_0與FDA Tool聯(lián)合設(shè)計(jì)方法實(shí)現(xiàn)濾波設(shè)計(jì)的資源消耗情況;消耗量2是用橫截型結(jié)構(gòu)設(shè)計(jì)實(shí)現(xiàn)濾波設(shè)計(jì)的資源消耗情況;消耗量3是用Black Box設(shè)計(jì)實(shí)現(xiàn)濾波設(shè)計(jì)的資源消耗情況。
可以看出消耗量2所示的消耗資源最多。因?yàn)闄M截型結(jié)構(gòu)設(shè)計(jì)中使用的乘法器是通過邏輯門的來實(shí)現(xiàn)乘累加功能,并不是采用Xilinx專有的DSP48硬件乘法器,在表中用Emb.Mults(嵌入式乘法器)表示,所以占用的Slices和LUTS會比較多一些。這里DSP48硬件乘法器是在FPGA芯片內(nèi)部的內(nèi)核乘法器,數(shù)量有限。
對于消耗量1和消耗量3的方法所占用的資源相對較少,因?yàn)樗麄兌际腔贖DL語言的Ipcore,其中FIR compiler是已經(jīng)進(jìn)行優(yōu)化封裝好的Ipcore,而BlackBox是對針對用戶開放的Ipcore,可自行編寫HDL代碼,靈活嵌入。從占用資源角度來看,第一和第三種方法占用的資源較少,雖然第一種方法比第三種方法更多的使用了Slices和LUTS,但其消耗的Emb.Mults少一些,如何高效、限量的利用DSP48也是衡量一個優(yōu)化系統(tǒng)的重要標(biāo)準(zhǔn)。而且相對第三種方法第一種方法更加簡單方便,規(guī)范性強(qiáng),還能縮短開發(fā)時(shí)間,所以綜合考慮調(diào)用已有Ipcore即FIR compiler模塊的方法最優(yōu)。
表1 三種方法資源消耗表
在System Generator for DSP 9.2的基礎(chǔ)上介紹了三種設(shè)計(jì)及實(shí)現(xiàn)FIR濾波器的方法,進(jìn)行了舉例仿真,并對于每種方法所占用的資源進(jìn)行了詳細(xì)的分析比較,認(rèn)為使用已封裝好的Ipcore,不但簡單方便可以減少系統(tǒng)開發(fā)時(shí)間,又能有效利用硬件資源,是最優(yōu)的選擇。前提是硬件芯片支持此Ipcore。每種方法也都有其自己身的優(yōu)缺點(diǎn),使用設(shè)計(jì)方法的選擇,可根據(jù)現(xiàn)有硬件資源、環(huán)境情況及各個方法的特點(diǎn)進(jìn)行取舍。
[1] 王春來,歐陽喜.基于FPGA的半并行FIR濾波器設(shè)計(jì)[J].新中國新通信,2009,15(08):86-89.
[2] 王秀敏,汪毓鐸,張洋,等.通信系統(tǒng)中FIR數(shù)字濾波器的設(shè)計(jì)研究[J].通信技術(shù),2009,42(09):3-6.
[3] TIM VANEVENHOVEN.使用MATLAB為System Generator for DSP創(chuàng)建IP[J].今日電子,2008,5(05):52-57.
[4] 杜德,李小文.TD-SCDMA中FIR濾波器的DSP實(shí)現(xiàn)[J].通信技術(shù),2008,9(09):92-112.
[5] 孟惠霞,耿俊梅.MATLAB-DSP集成環(huán)境下的FIR數(shù)字濾波器設(shè)計(jì)[J].信息安全與通信保密,2009,6(06):58-63.
[6] 田耕,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南[M].北京:人民郵電出版社,2009.