基于FPGA的高速數(shù)字下變頻系統(tǒng)設(shè)計
摘要:基于FPGA設(shè)計了一高速數(shù)字下變頻系統(tǒng),在設(shè)計中利用并行NCO和多相濾波相結(jié)合的方法有效的降低了數(shù)據(jù)的速率,以適合數(shù)字信號處理器件的工作頻率。為了進一步提高系統(tǒng)的整體運行速度,在設(shè)計中大量的使用了FPGA中的硬核資源DSP48。Xilinx ISE14.4分析報告顯示,電路工作速度可達360MHz。最后給出了在Matlab和ModelSim中仿真的結(jié)果,驗證了各個模塊以及整個系統(tǒng)的正確性。
數(shù)字下變頻(Digital Down Conversion,DDC)是軟件無線電系統(tǒng)的關(guān)鍵模塊之一,其可將高頻數(shù)據(jù)流信號變成易于后端數(shù)字信號處理器(Digital Signal Processor,DSP)設(shè)備實時處理的低頻數(shù)據(jù)流信號。在數(shù)字下變頻實現(xiàn)中,隨著信號采樣率的不斷提高,數(shù)據(jù)率也會相應(yīng)的提高,但是實際應(yīng)用中隨著數(shù)據(jù)速率的不斷提高,數(shù)據(jù)處理器件(如FPGA)的處理速度會無法滿足要求而不能正常工作,從而帶來了數(shù)字信號處理的瓶頸問題。本設(shè)計就是以多路并行NCO技術(shù)為基礎(chǔ),研究了如何在FPGA中用多路并行采樣數(shù)據(jù)的方式來解決數(shù)據(jù)處理器件無法提供高速率的匹配信號的問題,并給出了高速DDC實現(xiàn)的架構(gòu)和仿真結(jié)果。
1 數(shù)字下變頻基本原理
數(shù)字下變頻主要由頻譜搬移和抽取兩部分組成,如圖1所示,其中頻譜搬移包含數(shù)控振蕩器(Numerically Controlled Oscillators,NCO)、乘法器和低通濾波器(LPF,Low Pass Filter);抽取包含抽取濾波器(LPF2)和D倍的抽取,LPF2是為了限制信號的頻譜,以免抽取后發(fā)生混疊。
模擬信號經(jīng)過A/D轉(zhuǎn)換后分成兩路信號,一路信號和NCO輸出的正弦信號相乘(同相分量),一路和NCO輸出的余弦信號相乘(正交分量),之后經(jīng)過低通濾波器(LPF1)將高頻分量濾除,然后信號經(jīng)過抽取濾波以降低速率,最終輸出的兩路信號就可以送往后續(xù)的數(shù)字信號處理器中做進一步的處理。
2 高速DDC系統(tǒng)設(shè)計
文中設(shè)計了一種基于并行NCO的高速DDC,可大大降低對FPGA處理速度的要求,其實現(xiàn)如圖2所示,該系統(tǒng)主要由換向器、并行NCO、乘法器模塊和兩個多相FIR濾波器組成。換向器右側(cè)的所有電路都是工作在Fs/4的時鐘頻率上,換向器將速率為Fs,16 bit的數(shù)據(jù)變成4路Fs/4,16 bit的數(shù)據(jù)。對于輸入速率要求較高的場合(例如,速率超過500M),對于輸入接口需要用到Xilinx的硬件原語IDDR。
換向器將一路高速率數(shù)據(jù)分成四路低速率數(shù)據(jù)輸出,并行NCO的輸出頻率和起始相位受FL控制,分別輸出8路正余弦數(shù)據(jù),乘法器模塊實現(xiàn)NCO輸出數(shù)據(jù)和四路低速率數(shù)據(jù)的相乘,輸出四路正交分量和四路同相分量,之后將這8路數(shù)據(jù)送入低通濾波器中進行濾波處理,最后將同相分量和正交分量分別輸出。
2.1 并行NCO設(shè)計
NCO是用來產(chǎn)生載波cosωct和sinωct的部件。
假設(shè)NCO的多相分解路數(shù)為D,我們可以將x(n)寫為如下形式:
由式(1)和式(2)可以看出,經(jīng)過多相分解之后,數(shù)據(jù)由原來一路x(n)變?yōu)榱薉個支路,假設(shè)x(n)的采樣率為fs,那么多相分解后,每個支路的采樣率為fs/D,即每一條支路上數(shù)據(jù)速率變?yōu)閒s/D,相比原來一路x(n)的情況,數(shù)據(jù)到來的速率慢了D倍。
圖1中,一路x(n)的采樣率為,fs,那么NCO的輸出載波相位的速率也必須是fs。假設(shè)NCO輸出給上面支路的余弦信號為xLC(n),NCO輸出給下面支路的正弦信號為xLS(n),假設(shè)xLC(n)和xLS(n)的初始相位都為0,其頻率都為fL,我們以xLC(n)為例來說明。未采樣之前的模擬信號為
xLC(t)=cos(2πfLt)
經(jīng)過ADC采樣,變成數(shù)字信號后,用nTs代替上式中的t,得到
由式(4)可以看出,多相分解之后,雖然每個支路的采樣率,即數(shù)據(jù)到來的速率變慢了D倍,但是每個支路NCO輸出的頻率仍然是fL。我們還需要進一步降低NCO的輸出本振信號頻率,因為通常情況下,利用NCO產(chǎn)生本振信號需要使用一個主時鐘fclk,這個主時鐘fclk必須是FPGA可以穩(wěn)定運行的時鐘,其頻率不可能太高,而且,實際應(yīng)用中,NCO輸出的本振信號的頻率不能超過主時鐘fclk。因此無法直接產(chǎn)生所需要的輸出頻率,但是,我們可以利用三角函數(shù)的轉(zhuǎn)換關(guān)系,間接的產(chǎn)生。本文所設(shè)計的NCO采用如圖3所示的結(jié)構(gòu)。
2.2 多相FIR濾波器的設(shè)計
低通濾波器主要是用來對信號進行整形濾波并除去信號中的噪聲。本設(shè)計利用DSP48系列IP核來構(gòu)成低通濾波器。Xilinx公司提供了兩種利用DSP48構(gòu)建FIR濾波器的方法,分別為Addr Tree和Addr Cascade,考慮到速度問題,本設(shè)計使用Addr Tree的設(shè)計方法,使用該方法,在Kintex7系列FPGA上其速率超過650 MHz。
假設(shè)H(z)對應(yīng)的沖擊響應(yīng)h(n)的長度為N,且N能被D=4整除(以D=4為例),則四路濾波器輸出分別為:
3 仿真及驗證
根據(jù)系統(tǒng)設(shè)計的要求,我們利用Matlab軟件對整個的數(shù)字下變頻系統(tǒng)進行了建模仿真,并使用Verilog硬件描述語言在Xilinx的kintex7系列FPGA上實現(xiàn)了該數(shù)字下變頻器。為了更好的驗證該下變頻器的設(shè)計,我們利用Matlab建模的上變頻系統(tǒng)產(chǎn)生該下變頻器的輸入激勵,如圖4所示為上變頻系統(tǒng)的輸入波形。圖5為Matlab建模仿真得到的數(shù)字下變頻器I、Q兩路的輸出信號波形。圖6為利用Modelsim仿真得到的輸出結(jié)果,NCO本振頻率(CLK)為320 MHz,輸入信號跳變頻率(FL)分別為50 MHz、150 MHz、250 MHz、350 MHz以及450 MHz,P_out_I1和P_out_Q1分別為混頻后四相I、Q信號中的一路,I_out和Q_out為經(jīng)過多相濾波后最終的輸出波形。從Matlab和ModelSim的仿真波形可以很直觀的看出我們設(shè)計的數(shù)字下變頻器與理論相符,輸出結(jié)果正確,達到了預期的設(shè)計目的。
4 結(jié)論
在設(shè)計數(shù)字下變頻n系統(tǒng)中,提高處理速度是很關(guān)鍵的一部分,本設(shè)計首先利用多相結(jié)構(gòu),將數(shù)據(jù)分為D路,把每一路的數(shù)據(jù)速率降成原來的D分之一。在設(shè)計低通濾波器和乘法器模塊時充分利用了Kintex7上的硬核資源DSP 48,大幅度的提高了電路的處理速度。利用Xilinx的ISEl4.4工具進行綜合、布局、布線后的時序報告顯示,該電路最高工作速度可達360 MHz,充分顯現(xiàn)了此設(shè)計的速度優(yōu)勢。由于該數(shù)字下變頻器是基于FPGA實現(xiàn)的,且具有很高的工作速度,可用它來代替大多數(shù)的專用數(shù)字下變頻芯片,它能夠滿足大多數(shù)通信系統(tǒng)中接收機對數(shù)字下變頻器處理速度、處理帶寬以及濾波性能的要求,可廣泛應(yīng)用于數(shù)據(jù)采集、軟件無線電等領(lǐng)域中,具有較高的實用價值。