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