馮 昭,吳盡昭
(電子科技大學 光電信息學院,四川 成都 610054)
在傳統(tǒng)數(shù)字信號處理系統(tǒng)的設(shè)計中,需要先用Matlab等仿真軟件進行建模仿真,得到理想的方針結(jié)果后,再根據(jù)仿真過程,使用硬件描述語言(VHDL,Verilog HDL)[1]創(chuàng)建工程,最后完成硬件仿真。Xilinx公司提供的DSP設(shè)計開發(fā)工具System Generator和MathWorks Matlab的Simulink是無縫鏈接的。利用System Generator進行系統(tǒng)級建模的工程中可以包含多種元素,比如數(shù)據(jù)流、HDL模塊以及Xilinx模塊等,通過Simulink中調(diào)用System Generator Blockset中的模塊箱結(jié)合,將系統(tǒng)級設(shè)計和DSP算法開發(fā)相鏈接。通過軟件仿真后可以直接生成硬件代碼,下載到硬件環(huán)境中進行測試。這樣使得那些即使不熟悉FPGA的DSP系統(tǒng)設(shè)計工程師及算法工程師也能夠設(shè)計、仿真和驗證DSP系統(tǒng)。
在Simulink的可視化環(huán)境中,根據(jù)系統(tǒng)設(shè)計功能將Xilinx模塊鏈接成所設(shè)計的系統(tǒng),并定義合適的系統(tǒng)參數(shù);而后運用System Generator將Simulink模型轉(zhuǎn)換成硬件可執(zhí)行模型,將系統(tǒng)定義的參數(shù)對應(yīng)至硬件實現(xiàn)的實體以及輸入輸出端口,并會自動完成綜合、仿真與實現(xiàn)。整個開發(fā)流程分為Simulink系統(tǒng)建立、軟件仿真、System Generator模型轉(zhuǎn)換及硬件平臺調(diào)試4個步驟。
在Simulink可視化設(shè)計環(huán)境中,重要的是:在Simulink環(huán)境中實現(xiàn)定點算法,根據(jù)系統(tǒng)設(shè)計功能將Xilinx模塊連接成設(shè)計系統(tǒng),并定義合適的系統(tǒng)參數(shù);而后利用System Generator將Simulink模型轉(zhuǎn)換為可執(zhí)行的硬件模型,將系統(tǒng)定義的參數(shù)對應(yīng)到硬件實現(xiàn)的模塊、輸入/輸出端口等屬性;最后將設(shè)計生成可對器件編程的比特流文件,將其下載到目標芯片中。因此,典型的開發(fā)流程如圖1所示,其中System Generator會自動為FPGA的綜合、HDL仿真以及實現(xiàn)生成命令文件[2],用戶只需完成Simulink設(shè)計以及比較最終的RTL輸出結(jié)果。整個開發(fā)流程都是在可視化的環(huán)境中完成的。
圖1 基于System Generator的DSP系統(tǒng)卡發(fā)流程
數(shù)字中頻接收機系統(tǒng)由模數(shù)轉(zhuǎn)換器(ADC)、數(shù)字下變頻器(DDC)組成,如圖2所示。其中,ADC主要完成對模擬中頻信號進行采樣,得到數(shù)字化的中頻信號,DDC將感興趣的信號轉(zhuǎn)換至基帶,同時做采樣率變換及濾波處理,得到正交I,Q信號送后續(xù)的數(shù)字信號處理器進行基帶信號處理[3]。
圖2 數(shù)字中頻接收機系統(tǒng)
在本文涉及的數(shù)字中頻接收系統(tǒng)中,輸入信號的中心頻率為46MHz,采樣率為180 MHz,帶寬為20 MHz的信號,把中心頻率搬至0 MHz,然后抽取下變頻和濾波模塊實現(xiàn)6倍抽取,把采樣率變?yōu)?0 MHz的正交基帶信號。
DDC是整個中頻數(shù)字化接收機的核心,DDC克服了模擬下變頻中存在的混頻器的非線性和模擬本振的頻率穩(wěn)定度、邊帶、相位噪聲、溫度漂移、轉(zhuǎn)換速度等問題,其頻率步進、頻率間隔也具有理想的特性,因而得到了廣泛的應(yīng)用。DDC由數(shù)控振蕩器(NCO)、混頻器、抽取器和低通濾波器(LPF)組成[4],如圖3所示。
圖3 DDC結(jié)構(gòu)框圖
數(shù)控振蕩器是決定數(shù)字中頻性能的主要因素之一。NCO的目標是產(chǎn)生頻率可變的正交正余弦樣本。在FPGA中,NCO一般采用直接數(shù)字頻率合成(DDS)的方法來實現(xiàn)[5]。DDS技術(shù)與傳統(tǒng)的鎖相頻率合成器相比,有以下幾項優(yōu)點:1)DDS較于模擬VCO的相位噪聲減少許多;2)DDS只需通過改變頻率字就可以提供精確的信道間隔;3)DDS提供了幾塊的信道轉(zhuǎn)換速度,不必像VCO那樣通過負反饋來穩(wěn)定頻率。4)DDS可以在數(shù)字域?qū)敵鲂盘栠M行各種調(diào)制,只需把相關(guān)的數(shù)據(jù)寫在ROM中即可[6]。System Generator Blockset中有高性能的DDS可以直接調(diào)用。本設(shè)計調(diào)用的是DDS v5.0,其自身時鐘頻率設(shè)置為180MHz,動態(tài)范圍36 dB,輸出的正交正余弦信號的頻率為46MHz?;赟ystem Generator的NCO及混頻器設(shè)計模型如圖4所示。
圖4 NCO及混頻器設(shè)計
抽取器(Decimator)完成信號采樣率的降低和濾波功能。在多級濾波器級聯(lián)結(jié)構(gòu)中,通常第一級以較高的比率進行抽取,而后面的濾波器采用低抽取率并完成整形,總的抽樣率為各級抽取率之積。高抽取率的抽取濾波器可以選用積分梳狀濾波器(CIC)。這種濾波器在抽取率大于10的情況下是最有效的,但是它同時引入了有用信號的通帶頻譜的衰減。解決辦法是在CIC濾波器之后級聯(lián)一級或兩級濾波器來進行補償,然后再進行整形。當前最常采用的是半帶抽取低通濾波器[7]。CIC在實現(xiàn)濾波時無需乘法運算,只需要延遲期和累加器,對于一個窄帶信號,在多級抽取結(jié)構(gòu)中把速率最高的第一級用CIC實現(xiàn),可以極大的降低運算量。CIC濾波器很適合作抽取器前的抗混疊濾波器,通過CIC濾波并抽取后把高的數(shù)據(jù)率降到較低的數(shù)據(jù)率,易于后繼的半帶濾波器(HB)抽取和FIR濾波[8]。HB計算效率高,實時性強,因此把HB濾波器放在第二級。最后一級使用FIR濾波器實現(xiàn)低通濾波器,濾掉帶外的雜波。
如果需要進行高倍的采樣率變換,那么CIC將是非常合適的,無論是在實現(xiàn)性能或是資源節(jié)省方面,CIC都將優(yōu)于FIR[9]。在本設(shè)計中,中頻信號的采樣率是180MSa/s(兆采樣/秒),基帶信號的采樣率是30 MSa/s,只需要6倍的采樣率變化,而且?guī)挒?0 MHz,不是窄帶信號,因此使用FIR作為第一級的抽取濾波器。抽取器及低通濾波器的結(jié)構(gòu)如圖5所示。
圖5 抽取器及低通濾波器結(jié)構(gòu)圖
基于System Generator的FIR濾波模塊主要采用IP核設(shè)計,而對于基于IP核設(shè)計的FIR濾波器來說,一般可以直接采用FIR Compiler產(chǎn)生系數(shù),也可以由Matlab產(chǎn)生的系數(shù)文件再裝載到IP核中。后一種方法的優(yōu)點在于可選的濾波器設(shè)計方法更對,且可以先對設(shè)定系數(shù)的濾波器進行仿真,初步檢驗一下其濾波效果,這樣可以大大減少系統(tǒng)設(shè)計的時間[10]。在設(shè)計濾波器時,首先根據(jù)各級濾波器的濾波特性,使用Matlab的濾波器設(shè)計工具FDAtool(Filter Design&Analysis tool)計算出抽取系數(shù)并進行量化,然后調(diào)用Xilinx的IP核FIR Compiler v4.0,對各項參數(shù)進行設(shè)置并導入量化后的系數(shù),就可以得到理想的FIR濾波器。圖6所示為基于System Generator的數(shù)字中頻接收機原理圖。
圖6 基于System Generator的數(shù)字中頻接收機原理圖
仿真采用單音信號作為輸入信號,分別使用頻率為48 MHz,55 MHz,位寬為 11 bit,采樣率為 180 MSa/s 的信號輸入,輸入信號的頻譜如圖7,圖8所示。經(jīng)過下變頻,抽取及低通濾波后的采樣率為30 MSa/s的基帶信號頻譜分別如圖9、圖10所示。
圖7 11 bit位寬48 MHz單音信號頻譜
圖8 11 bit位寬55 MHz單音信號頻譜
圖9 48 MHz單音信號輸入的輸出信號頻譜
圖10 55 MHz單音信號輸入的輸出信號頻譜
由圖7~10可以看出,輸入48 MHz的中頻單音信號與55 MHz的單音信號經(jīng)過DDC處理后的信號頻率分別為2 MHz與9 MHz,信號頻譜下移了46 MHz。而采樣率由180 MSa/s變至30 MSa/s,說明本接收機系統(tǒng)成功實現(xiàn)的20 MHz帶寬信號的46 MHz下變頻及6倍抽取的采樣率變換。
通過對基于System Generator的數(shù)字中頻接收機的設(shè)計,詳細說明了如何利用System Generator在Matlab下設(shè)計數(shù)字信號處理系統(tǒng)。使用System Generator進行設(shè)計,可以實現(xiàn)在Matlab上的可視化設(shè)計方法,各種常用的DSP處理模塊如FIR,DDS等都可以直接調(diào)用,在保證了性能的情況下,縮短了系統(tǒng)開發(fā)周期。使用本方法可以快速構(gòu)建DSP系統(tǒng),并在不具備外部硬件測試平臺的情況下,使用JTAG口讀取數(shù)據(jù)進行分析,進行軟硬件聯(lián)合仿真,相對于傳統(tǒng)的開發(fā)方式來說,具有很大的優(yōu)勢。
[1]陳美燕,王丹.基于Verilog HDL的信號處理板卡中雙向端口的設(shè)計[J].電視技術(shù),2008,32(S1):62-64.
[2]Xilinx.System Generator for DSPReference Guide[EB/OL].[2010-01-01].http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/sysgen_ref.pdf.
[3]陳寶龍.基于FPGA的數(shù)字中頻接收機的研究[D].江蘇:南京理工大學,2008.
[4]王水,吳繼華.用FPGA實現(xiàn)數(shù)字中頻[J].電子設(shè)計技術(shù),2007,14(9):169-170.
[5]何勤,束永江.一種通用中頻數(shù)字化接收機的實現(xiàn)[J].現(xiàn)代電子技術(shù),2009(11):94-95.
[6]趙國棟,郭德淳.基于FPGA的數(shù)字中頻接收系統(tǒng)[J].軍民兩用技術(shù)與產(chǎn)品,2006(1):43-47.
[7]CARDELLS T F,VALLS C A.Optimized FPGA-implementation of quadrature DDS[C]//Proc.IEEE International Symposium on Circuits and Systems.[S.l.]:IEEE Press,2002:369-372.
[8]肖乾友,黃曉革,駱志敏.一種數(shù)字中頻接收機的設(shè)計與實現(xiàn)[J].電訊技術(shù),2006(4):123-127.
[9]崔文.基于FPGA的數(shù)字上下變頻器的研究與實現(xiàn)[D].西安:西安電子科技大學,2006.
[10]李振軍,曾凌云,鄭善賢.基于FPGA的中頻數(shù)字接收機設(shè)計與實現(xiàn)[J].計算技術(shù)與自動化,2009,28(2):50-53.