陳 蕾,姚遠(yuǎn)程
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng) 621010)
近年來(lái),F(xiàn)PGA以其高度的并行計(jì)算能力成為高性能數(shù)字信號(hào)處理系統(tǒng)的核心器件。在通信、雷達(dá)、數(shù)據(jù)獲取以及視頻處理等領(lǐng)域得到了廣泛的應(yīng)用。在數(shù)字信號(hào)領(lǐng)域中,研究人員往往使用Matlab語(yǔ)言進(jìn)行系統(tǒng)級(jí)建模,但不一定對(duì)FPGA設(shè)計(jì)中運(yùn)用到的硬件描述語(yǔ)言VHDL或者Verilog熟悉,2種語(yǔ)言的不統(tǒng)一,不僅降低了開(kāi)發(fā)效率,也限制了FPGA在數(shù)字信號(hào)領(lǐng)域中的應(yīng)用。
Xilinx公司推出的DSP設(shè)計(jì)開(kāi)發(fā)工具System Generator主要為一些不熟悉VHDL等硬件開(kāi)發(fā)語(yǔ)言的設(shè)計(jì)者開(kāi)發(fā)。首先,在Simulink的可視化環(huán)境內(nèi)對(duì)算法以及系統(tǒng)進(jìn)行建模,而后調(diào)用System Generator自動(dòng)將Simulink模型轉(zhuǎn)換成硬件可執(zhí)行模型,直接生成FPGA代碼,ISE可以對(duì)整個(gè)工程文件進(jìn)行綜合、仿真,完成芯片配置后下載到硬件環(huán)境中進(jìn)行測(cè)試,整個(gè)過(guò)程都在可視化的環(huán)境中進(jìn)行。本文介紹了基于System Generator的數(shù)字系統(tǒng)開(kāi)發(fā)過(guò)程的一般流程,并以數(shù)字下變頻系統(tǒng)為例,證明了該方法在數(shù)字系統(tǒng)中的明顯優(yōu)勢(shì)。
在傳統(tǒng)的設(shè)計(jì)方法中,往往采用Matlab、C、C++等語(yǔ)言來(lái)描述各功能模塊,從而實(shí)現(xiàn)系統(tǒng)的建模。但是在寄存器傳輸級(jí)則采用硬件描述語(yǔ)言VHDL等來(lái)進(jìn)行描述。在傳統(tǒng)設(shè)計(jì)方法中,原始的Matlab等語(yǔ)言描述必須經(jīng)手工轉(zhuǎn)換為VHDL語(yǔ)言,這就要求設(shè)計(jì)人員必須同時(shí)掌握這兩類(lèi)語(yǔ)言,并且這個(gè)轉(zhuǎn)換過(guò)程會(huì)花費(fèi)大量的時(shí)間和精力,可能還會(huì)產(chǎn)生一些錯(cuò)誤,降低整個(gè)工作過(guò)程的效率。同時(shí),當(dāng)使用Matlab等語(yǔ)言描述的模塊轉(zhuǎn)換成硬件描述的模塊之后,設(shè)計(jì)者花費(fèi)大量心血和時(shí)間建立起來(lái)的原模型將再?zèng)]有什么用處。再次,完成整個(gè)的設(shè)計(jì)需要多個(gè)測(cè)試平臺(tái)。因?yàn)獒槍?duì)Matlab等語(yǔ)言描述的模塊測(cè)試平臺(tái)無(wú)法直接轉(zhuǎn)換為針對(duì)硬件描述語(yǔ)言的模塊所需要的測(cè)試平臺(tái)。
為了克服傳統(tǒng)的系統(tǒng)級(jí)設(shè)計(jì)方法所存在的弊端,提出了基于System Generator的系統(tǒng)級(jí)設(shè)計(jì)方法。System Generator和matlab的simulink是無(wú)縫連接的,可以通過(guò)調(diào)用simulink中的 system generator blockset,在simulink的可視化環(huán)境內(nèi)對(duì)算法以及系統(tǒng)進(jìn)行建模,同時(shí)對(duì)各功能模塊進(jìn)行劃分。這些模塊對(duì)應(yīng)著IP核庫(kù)組件,設(shè)計(jì)者只需要按照要求對(duì)這些模塊進(jìn)行配置即可完成功能模塊的設(shè)計(jì)。
當(dāng)在Matlab算法中完成系統(tǒng)級(jí)的建模之后,通過(guò)調(diào)用System Generator將simulink模型轉(zhuǎn)換成硬件可執(zhí)行模型。這樣,在同一個(gè)環(huán)境中,就可以完成算法的設(shè)計(jì)到硬件的實(shí)現(xiàn),整個(gè)設(shè)計(jì)的軟硬件可以協(xié)同設(shè)計(jì)和仿真,彌補(bǔ)了傳統(tǒng)設(shè)計(jì)中兩個(gè)層次轉(zhuǎn)換的問(wèn)題,也解決了不熟悉硬件描述語(yǔ)言的設(shè)計(jì)者面臨的問(wèn)題,提高了開(kāi)發(fā)效率。具體的開(kāi)發(fā)流程如圖1所示。
圖1 典型的基于System Generator的FPGA開(kāi)發(fā)流程圖Fig.1 Typical FPGA development flow chart based on System Generator
具體步驟為:首先,根據(jù)系統(tǒng)的需求進(jìn)行分析,在Matlab環(huán)境下進(jìn)行建模,并對(duì)各功能模塊進(jìn)行配置,完成系統(tǒng)算法的仿真驗(yàn)證;其次,調(diào)用System Generator自動(dòng)將系統(tǒng)轉(zhuǎn)換為ISE工程,生成寄存器傳輸級(jí)和IP核代碼,同時(shí)生成Testbench測(cè)試文件,可以在Modelsim中進(jìn)行仿真驗(yàn)證。最后,在ISE環(huán)境中,完成FPGA的綜合、布局布線等,產(chǎn)生位流文件,方便下載到FPGA中進(jìn)行驗(yàn)證。
數(shù)字下變頻系統(tǒng)主要由模數(shù)轉(zhuǎn)換器 (ADC)、NCO模塊、多級(jí)抽取濾波器以及整形濾波器組成,如圖2所示。其中模數(shù)轉(zhuǎn)換器主要完成對(duì)模擬中頻信號(hào)的采樣,得到數(shù)字化中頻信號(hào)。再通過(guò)混頻、多級(jí)濾波抽取以及整形濾波將感興趣的信號(hào)搬移到基帶,得到正交的兩路信號(hào),不僅降低了速率,同時(shí)也包含了原始中頻信號(hào)中的有效信號(hào),由此將低速數(shù)據(jù)送往后續(xù)的數(shù)字信號(hào)處理器進(jìn)行基帶信號(hào)的處理。
圖2 數(shù)字下變頻框圖Fig.2 Digital down-conversion block diagram
NCO 模塊的作用是產(chǎn)生兩個(gè)正交、頻率可變的正余弦波形,通過(guò)和采樣信號(hào)進(jìn)行混頻處理,得到兩路正交信號(hào),它的性能優(yōu)劣很大程度上影響數(shù)字中頻的性能,并對(duì)后續(xù)的抽取濾波等運(yùn)算有直接的影響,如圖3所示。
采用直接數(shù)字合成器(DDS)來(lái)產(chǎn)生正弦波。其中最重要的步驟是確定步長(zhǎng),它是控制NCO輸出頻率的關(guān)鍵因素。假定系統(tǒng)時(shí)鐘為50 MHz,其中參數(shù)控制模塊配置累加器數(shù)據(jù)位寬為16位,期望輸出頻率為10 MHz,由此得出步長(zhǎng)為13 107.2。經(jīng)過(guò)ISE綜合后,在Modelsim中運(yùn)行仿真得到仿真結(jié)果如圖4所示。
圖3 基于System Generator的NCO設(shè)計(jì)Fig.3 Design of NCO based on System Generator
圖4 NCO在Modelsim中的仿真結(jié)果Fig.4 Results of NCO in the Modelsim
由于混頻后產(chǎn)生的數(shù)據(jù)率比較高,后級(jí)FIR無(wú)法對(duì)這個(gè)速度進(jìn)行處理,由此采用多級(jí)抽取濾波器級(jí)聯(lián)結(jié)構(gòu)。通常第一級(jí)由較高的比率進(jìn)行抽取,后面的采用低速率抽取并完成整形。因?yàn)镃IC濾波器只有加減運(yùn)算,沒(méi)有乘法運(yùn)算,實(shí)現(xiàn)起來(lái)簡(jiǎn)單,在硬件實(shí)現(xiàn)的時(shí)候能夠達(dá)到很高的處理速率,不管是在實(shí)現(xiàn)性能還是資源節(jié)省方面都優(yōu)于FIR濾波,由此一般作為第一級(jí)抽取或者是抽取比較大的系統(tǒng)中。HB濾波器由于沖擊響應(yīng)具有偶對(duì)稱(chēng)性質(zhì),其偶數(shù)點(diǎn)(除0點(diǎn)以外)均為零,濾波時(shí)運(yùn)算量減少一半,計(jì)算效率高,帶內(nèi)平坦度好,因此被作為第二級(jí)低通濾波和抽取。最后一級(jí)使用FIR濾波,對(duì)整個(gè)信道進(jìn)行整形濾波。
3.2.1 CIC模塊
CIC濾波是一種結(jié)構(gòu)簡(jiǎn)單,具有全加法遞歸結(jié)構(gòu)的線性相位有限沖擊響應(yīng)濾波器,如圖5所示。它只需要進(jìn)行加減運(yùn)算,不需要通過(guò)乘法運(yùn)算,非常適合硬件的高效實(shí)現(xiàn),通常用于第一級(jí)的抽取或者大的抽取因子系統(tǒng)。由于單級(jí)CIC濾波的過(guò)渡帶和阻帶衰減都不是很好,主瓣與第一旁瓣峰值之差約為13.46 dB,往往不能滿足系統(tǒng)的要求。所以一般采用CIC級(jí)聯(lián)的方式來(lái)降低旁瓣幅度,增大阻帶衰減,系統(tǒng)中一般采用5級(jí)級(jí)聯(lián)方式,阻帶衰減達(dá)到13.46×5=67.3 dB,濾波器性能將大幅度提高。
輸入頻率為33kHz和2MHz的兩個(gè)單頻信號(hào),其中33kHz的信號(hào)代表有用信號(hào),2 MHz的信號(hào)代表帶外干擾信號(hào),采樣率為80 MHz。在FPGA實(shí)現(xiàn)的時(shí)候,CIC內(nèi)部處理的數(shù)據(jù)位數(shù)將增加,因?yàn)殡S著CIC級(jí)數(shù)的增加,處理增益將增大。為了確保每一級(jí)的運(yùn)算精度,防止溢出錯(cuò)誤和運(yùn)算精度的下降,需要根據(jù)輸出位數(shù)來(lái)確定每一級(jí)的輸出位數(shù)。在本例中,輸出數(shù)據(jù)在無(wú)舍尾的情況下應(yīng)該為25+25=50位,這將是非常耗資源的,所以在輸出的時(shí)候需要對(duì)數(shù)據(jù)進(jìn)行舍位截取。
圖5 基于System Generator的CIC設(shè)計(jì)Fig.5 Design of CIC based on System Generator
圖6 CIC濾波在Modelsim中的仿真結(jié)果Fig.6 Results of CIC in the Modelsim
在仿真結(jié)果圖中,由上至下分別為原信號(hào)、混合信號(hào)以及濾波后信號(hào),CIC濾波有效的抑制了混疊的頻率成分,輸出了較干凈的33 kHz頻率成分,同時(shí)對(duì)2 MHz的噪聲信號(hào)經(jīng)過(guò)32倍抽取產(chǎn)生的0.625 MHz的噪聲信號(hào)也進(jìn)行了有效地抑制,衰減幅度在60 dB以上。
3.2.2 HB模塊
半帶濾波器是指阻帶寬度和通帶寬度相等,并且通帶波紋和阻帶波紋也相等的一種特殊的FIR濾波器,特別適用于實(shí)現(xiàn)2的N次方的抽取和濾波,濾波器的參數(shù)是中心對(duì)稱(chēng)的,并且有一半為零,卷積計(jì)算時(shí)的乘法運(yùn)算次數(shù)減少了一半,極大地提高了計(jì)算效率,實(shí)時(shí)性非常強(qiáng)。在對(duì)HB濾波器進(jìn)行設(shè)計(jì)的時(shí)候,為了避免半帶濾波器2倍抽取之后通帶信號(hào)的頻譜發(fā)生混疊,需要對(duì)半帶濾波器的通帶截止頻率和阻帶起始頻率進(jìn)行設(shè)計(jì)。由于它們關(guān)于pi/2對(duì)稱(chēng),則只需對(duì)通帶截止頻率進(jìn)行設(shè)計(jì),要求通帶截止頻率要大于等于有用信號(hào)帶寬的帶寬并且小于pi/2,HB模塊如圖7所示。
輸入2個(gè)單頻信號(hào)頻率分別為1.6 MHz和28 MHz,采樣率為80 MHz,其中1.6 MHz代表有用信號(hào),28 MHz代表帶外干擾信號(hào)。取通帶寬度為6 MHz,通帶波紋為0.001。圖8的仿真結(jié)果充分顯示了在經(jīng)過(guò)半帶濾波器2倍抽取之后,有效的濾除了28 MHz的噪聲信號(hào),得到比較純凈的原信號(hào)波形,濾波效果良好。
圖7 基于System Generator的HB設(shè)計(jì)Fig.7 Design of HB based on System Generator
圖8 HB濾波在Modelsim中的仿真結(jié)果Fig.8 Results of HB in the Modelsim
3.2.3 FIR濾波器
在多速率處理的過(guò)程中,一般將FIR濾波器放在CIC濾波和HB濾波器的后面,因?yàn)榻?jīng)過(guò)前兩級(jí)濾波之后,采樣速率一般已經(jīng)很低,不需要FIR在進(jìn)行抽取,只需要對(duì)整個(gè)信道進(jìn)行整形濾波。對(duì)FIR濾波器的設(shè)計(jì),同樣可以采取Matlab中的fdatool工具進(jìn)行,由于一般濾波器階數(shù)較高,故采用FIR Compiler模塊來(lái)設(shè)計(jì),實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,該模塊能實(shí)現(xiàn)基于乘累加的濾波運(yùn)算。輸入的仿真信號(hào)為10 kHz和40 kHz,采樣率為160 kHz。通過(guò)仿真結(jié)果,能清楚看到FIR濾波很好的完成了濾除噪聲信號(hào)的功能。
圖9 基于System Generator的FIR設(shè)計(jì)Fig.9 Design of FIR based on System Generator
圖10 FIR濾波在Modelsim中的仿真結(jié)果Fig.10 Results of FIR in the Modelsim
在軟件無(wú)線電中,數(shù)字下變頻是整個(gè)系統(tǒng)中最關(guān)鍵的信號(hào)處理模塊,也是整個(gè)軟件無(wú)線電收發(fā)機(jī)中最耗資源的模塊,它的性能決定了整個(gè)軟件無(wú)線電收發(fā)機(jī)的性能。文中首先分析了傳統(tǒng)的系統(tǒng)級(jí)設(shè)計(jì)方法所存在的弊端,提出了基于System Generator的系統(tǒng)級(jí)設(shè)計(jì)方法,并給出了設(shè)計(jì)的一般流程和步驟,對(duì)多速率處理中的NCO模塊、CIC、HB以及FIR模塊分別進(jìn)行了驗(yàn)證和仿真,均符合設(shè)計(jì)的要求,并在Modelsim中得到了準(zhǔn)確的驗(yàn)證。這種設(shè)計(jì)方法避免了DSP設(shè)計(jì)者在不熟悉硬件描述語(yǔ)言狀況下的復(fù)雜編程,提高了設(shè)計(jì)的效率,縮短了設(shè)計(jì)周期。
[1]張勇,高梅國(guó).基于SysGen的FPGA設(shè)計(jì)開(kāi)發(fā)[J].計(jì)算機(jī)工程與應(yīng)用,2010(9S):134-137.
ZHANG Yong,GAO Mei-guo.Research of FPGA design technology based on SysGen[J].Computer Engineering and Applications,2010(9S):134-137.
[2]牛斌凱,雍少為.基于System Generator開(kāi)發(fā)數(shù)字信號(hào)處理系統(tǒng)[J].艦船電子工程,2010:129-132.
NIU Bin-kai,YONG Shao-wei.Research on design method fordigitalsignalprocessing system based on System Generator[J].Ship Electronic Engineering,2010:129-132.
[3]紀(jì)志成,高春能.FPGA數(shù)字信號(hào)處理設(shè)計(jì)教程——System Generator入門(mén)與提高 [M].西安:西安電子科技大學(xué)出版社,2008.
[4]劉強(qiáng).基于SystemC的系統(tǒng)級(jí)芯片設(shè)計(jì)方法研究[J].現(xiàn)代電子技術(shù),2005(9):33-35.
LIU Qiang.The study on design method of SystemC[J].Modern Electronics Technique,2005(9):33-35.
[5]Xilinx.System Generator Manual[S].San Jose:Xilinx,2012.
[6]屈有萍.基于FPGA的數(shù)字下變頻研究實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2007.
[7]Murthy S N,Alvis W,Shirodkar R, et al.Methodology for implementation of unmanned vehicle control on FPGA using system generator[C]//IEEE,1957.
[8]田耘,徐文波,張延偉.無(wú)線通信的FPGA設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008.