馮林浩,于鴻洋,張 萍
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 610054)
在傳統(tǒng)的數(shù)字信號(hào)處理系統(tǒng)的設(shè)計(jì)中,需要先用Matlab等仿真軟件進(jìn)行建模仿真,得到理想的仿真結(jié)果后,再根據(jù)仿真過(guò)程,使用VHDL等硬件描述語(yǔ)言創(chuàng)建硬件工程,最后完成硬件仿真。這個(gè)過(guò)程非常復(fù)雜,需要花費(fèi)大量的時(shí)間,而且由于軟件仿真和硬件仿真不能直接聯(lián)系,使得調(diào)試比較困難。Xilinx公司設(shè)計(jì)了一種全新的FPGA開(kāi)發(fā)工具DSP Tools,將The MathWorks Matlab的系統(tǒng)級(jí)設(shè)計(jì)工具Simulink和Xilinx公司的FPGA開(kāi)發(fā)工具ISE整合在一起,使得軟件仿真和硬件仿真可以同時(shí)進(jìn)行。DSP Tools在算法友好的開(kāi)發(fā)環(huán)境中可以幫助設(shè)計(jì)人員快速生成DSP設(shè)計(jì)硬件表征,從而縮短了DSP設(shè)計(jì)周期。已有的Matlab函數(shù)和Simulink模塊可以和Xilinx DSP Tools模塊相結(jié)合,將系統(tǒng)級(jí)設(shè)計(jì)和DSP算法開(kāi)發(fā)相鏈接。DSP Tools通過(guò)在Simulink中調(diào)用Xilinx的模塊和IP核來(lái)搭建完整的系統(tǒng),并使用workspace中的數(shù)據(jù)進(jìn)行軟件仿真,得到滿意的結(jié)果后再直接生成硬件代碼,下載到硬件中進(jìn)行測(cè)試[1]。在不具備測(cè)試條件和環(huán)境的情況下,可以進(jìn)行軟硬件協(xié)同仿真。
在Simulink中調(diào)用各種模塊和IP核來(lái)搭建特定功能的系統(tǒng),并創(chuàng)建各種測(cè)試向量來(lái)完成軟件仿真。軟件仿真完成后使用System gernerator編譯DSP Tools模塊生成HDL工程[2]。System generator可以直接生成NGC等網(wǎng)表文件,下載到硬件中進(jìn)行調(diào)試,提高開(kāi)發(fā)的效率;也可以生成HDL代碼,以便在需要的時(shí)候進(jìn)行修改,并結(jié)合Xilinx ISE等其他開(kāi)發(fā)工具進(jìn)行仿真、綜合、布局、布線。在不存在硬件測(cè)試環(huán)境的情況下,還可以將硬件平臺(tái)鏈接入DSP Tools進(jìn)行軟硬件協(xié)同仿真。DSP Tools開(kāi)發(fā)流程如圖1所示。
圖1 基于DSP Tools的DSP系統(tǒng)開(kāi)發(fā)流程
數(shù)字中頻發(fā)射機(jī)(Digital-IF transmitter)的框圖如圖2所示。中頻發(fā)射系統(tǒng)由高速DAC模塊、數(shù)字上變頻(DUC)模塊及插值濾波模塊組成。輸入的數(shù)字基帶信號(hào)首先經(jīng)過(guò)插值濾波,轉(zhuǎn)換到更高的采樣率,然后通過(guò)數(shù)字上邊頻,調(diào)制到需要的頻率上去,最后通過(guò)高速DAC模塊把數(shù)字中頻信號(hào)轉(zhuǎn)化為模擬中頻信號(hào)[3]。
圖2 數(shù)字中頻發(fā)射系統(tǒng)
數(shù)字中頻發(fā)射系統(tǒng)是對(duì)信號(hào)在中頻進(jìn)行數(shù)字化,在進(jìn)行頻譜的搬移時(shí),要考慮到采樣率的變化。一般來(lái)說(shuō),D/A之前的信號(hào)采樣率很高,要從基帶信號(hào)得到這些有用的高速信號(hào),需要有效地對(duì)其進(jìn)行數(shù)字上變頻、插值、濾波等處理,這些功能可以使用現(xiàn)場(chǎng)可編程門陣列(FPGA)來(lái)實(shí)現(xiàn)。FPGA具有較高的處理速度和較強(qiáng)的穩(wěn)定性,同時(shí)又具有設(shè)計(jì)靈活、易于修改和維護(hù)的優(yōu)點(diǎn),可以適用于不同的系統(tǒng)要求。
在本文設(shè)計(jì)的數(shù)字中頻發(fā)射系統(tǒng)中,輸入正交基帶信號(hào),采樣率為30 MHz,帶寬20 MHz,抽取上邊頻和濾波模塊實(shí)現(xiàn)6倍抽取,把采樣率變?yōu)?80 MHz,然后把頻譜向上搬移25 MHz。
數(shù)字上變頻克服了模擬上變頻中存在的混頻器的非線性和模擬本振的頻率穩(wěn)定度、邊帶、相位噪聲、溫度漂移、轉(zhuǎn)換速度等問(wèn)題,其頻率步進(jìn)、頻率間隔也具有理想的特性,因而得到了廣泛應(yīng)用,數(shù)字上變頻原理如圖3所示。
圖3 數(shù)字上變頻框圖
數(shù)字上變頻由插值濾波、數(shù)控振蕩器(NCO)和數(shù)字混頻器組成,數(shù)字基帶信號(hào)經(jīng)脈沖成形及插值濾波后得到高采樣率的信號(hào),然后輸入到數(shù)字混頻器中與NGC產(chǎn)生的正交本振信號(hào)進(jìn)行混頻,最后進(jìn)行求和運(yùn)算,得到數(shù)字中頻信號(hào)。
數(shù)控振蕩器是決定數(shù)字中頻性能的主要因素之一。NCO的目標(biāo)是產(chǎn)生頻率可變的正交正、余弦樣本,在FPGA中,NCO一般采用直接數(shù)字頻率合成(DDS)的方法來(lái)實(shí)現(xiàn)。DSP Tools的IP庫(kù)中有高性能的DDS可以直接調(diào)用。本設(shè)計(jì)調(diào)用的是DDS v5.0,其自身時(shí)鐘設(shè)為180 MHz,動(dòng)態(tài)范圍36 dB,輸出正交正余弦信號(hào)的頻率為25 MHz。
在DUC實(shí)現(xiàn)了從復(fù)基帶(Baseband)信號(hào)到實(shí)帶通(Passband)信號(hào)的轉(zhuǎn)換。輸入的復(fù)基帶信號(hào)采樣率相對(duì)較低,通常是數(shù)字調(diào)制的符號(hào)率。基帶信號(hào)經(jīng)過(guò)濾波,然后被轉(zhuǎn)換成一個(gè)更高的采樣率,從而調(diào)制到NCO的中頻載波頻率。
基帶信號(hào)需要首先進(jìn)行脈沖整形,濾掉帶外的雜波,通常由FIR濾波器實(shí)現(xiàn)。插值部分(Interpolation)完成信號(hào)采樣率變化和濾波功能,可以采用CIC和FIR實(shí)現(xiàn)。對(duì)于一個(gè)窄帶信號(hào),如果需要進(jìn)行高倍的采樣率變換,那么CIC將是非常合適的,無(wú)論是在實(shí)現(xiàn)性能或是資源節(jié)省方面,CIC都將優(yōu)于FIR[4]。
在本設(shè)計(jì)中,基帶信號(hào)的采樣率是30 MHz,中頻信號(hào)的采樣率是180 MHz,只需要6倍的采樣率變化,而且信號(hào)的帶寬是20 MHz,不是窄帶信號(hào),因此使用FIR進(jìn)行插值濾波是更好的選擇。
如圖4所示,考慮到資源和效率,將整形濾波和抽取插值濾波分為3個(gè)FIR來(lái)設(shè)計(jì):G(z)負(fù)責(zé)頻譜整形,工作頻率最低,設(shè)計(jì)成120階的根升余弦(RRC)濾波器;Q(z)負(fù)責(zé)2倍插值濾波,工作頻率次之,設(shè)計(jì)成80階的低通FIR;P(z)負(fù)責(zé)3倍插值濾波,工作頻率最高,設(shè)計(jì)成80階的低通FIR。具體實(shí)現(xiàn)上,由于I,Q兩路的濾波特性完全一樣,為了節(jié)省期間資源,將I,Q兩路的3級(jí)濾波器作復(fù)用。
圖4 DUC濾波器功能劃分
設(shè)計(jì)濾波器時(shí),首先根據(jù)各級(jí)濾波器的濾波特性,使用Matlab的濾波器設(shè)計(jì)工具FDAtool(FilterDesign&Analysis tool)計(jì)算出抽取系數(shù)并進(jìn)行量化,然后調(diào)用Xilinx的IP核FIR compiler v3.2,對(duì)各項(xiàng)參數(shù)進(jìn)行設(shè)置并導(dǎo)入量化后的系數(shù),就可以得到理想的FIR濾波器。圖5是完整的數(shù)字中頻發(fā)射機(jī)原理圖。
圖5 利用DSP Tools的數(shù)字中頻發(fā)射機(jī)原理圖
本仿真的輸入段是兩路基帶I/Q信號(hào),采樣率30 MHz,帶寬20 MHz,通過(guò)三級(jí)濾波器進(jìn)行頻譜整形及插值濾波后,采樣率上升到180 MHz,然后與DDS產(chǎn)生的25 MHz正余弦信號(hào)混頻,使頻譜上移25 MHz。
由圖6和圖7可以看出,輸入的基帶信號(hào)頻譜分布從20~40 MHz,中心頻率是30 MHz,輸出的中頻信號(hào)采樣率升到180 MHz,頻譜分布在195~215 MHz之間,中心頻率是205 MHz,相比采樣率180 MHz,頻譜上移了25 MHz。
筆者通過(guò)對(duì)基于DSP Tools的數(shù)字中頻發(fā)射機(jī)的設(shè)計(jì)實(shí)現(xiàn),詳細(xì)說(shuō)明了如何利用DSP Tools在Matlab上設(shè)計(jì)數(shù)字信號(hào)處理系統(tǒng)??蓪?shí)現(xiàn)“可見(jiàn)即可得”的設(shè)計(jì)方法,各種常用的DSP處理模塊,如FIR,DDS,F(xiàn)FT可以直接調(diào)用,既方便省事,又能兼顧性能。
圖6 輸入基帶I/Q信號(hào)的頻譜
圖7 輸出中頻信號(hào)的頻譜
本文方法可以快速構(gòu)建DSP系統(tǒng),并在不具備外部硬件測(cè)試平臺(tái)的情況下,使用JTAG口進(jìn)行軟硬件聯(lián)合仿真。相對(duì)于傳統(tǒng)開(kāi)發(fā)方式來(lái)說(shuō),具有很大的優(yōu)勢(shì)。
[1]Xilinx.DSP Tools User Guide[EB/OL].(2009-04-07)[2009-08-09].http∶//www.Xilinx.com.
[2]Xilinx.DSP Tools Reference Manual[EB/OL].(2009-04-07)[2009-08-09].http∶//www.Xilinx.com.
[3]陳寶龍.基于FPGA的數(shù)字中頻接收機(jī)的研究[D].南京:南京理工大學(xué),2008.
[4]王水,吳繼華.用 FPGA 實(shí)現(xiàn)數(shù)字中頻[EB/OL].(2009-04-13)[2009-08-09].http∶//www.jdzj.com.