摘 要:分析數(shù)字下變頻結(jié)構(gòu)及其實(shí)現(xiàn)方法,重點(diǎn)研究如何基于FPGA實(shí)現(xiàn)數(shù)字下變頻的功能,并通過(guò)仿真分析驗(yàn)證該實(shí)現(xiàn)方法的正確性。結(jié)果表明,該實(shí)現(xiàn)方法可用于各類數(shù)字通信系統(tǒng)中頻信號(hào)的數(shù)字下變頻處理,具有一定的實(shí)用價(jià)值。
關(guān)鍵詞:數(shù)字下變頻;混頻器;數(shù)字濾波器;FPGA
中圖分類號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)01-055-03
Design of Digital Down Converter and Its Implement Based on FPGA
WANG Ping,LI Jianhai,LIU Baohua,MA Ertao
(Airforce Engineering University,Xi′an,710038,China)
Abstract:The configuration of digital down converter and its implement method are analysed,and how to realize digital down converter′ function based on FPGA in stress is studied,the correctness of the method is validated by simulation. The results indicate that the method can be used in many kinds of intermediate frequency digital down converter processing,thus it has definite practicality value.
Keywords:digital down conversion;mixer;digital filter;FPGA
0 引 言
自20世紀(jì)90年代以來(lái),軟件無(wú)線電技術(shù)引發(fā)了移動(dòng)通信領(lǐng)域的一場(chǎng)革新,數(shù)字下變頻技術(shù)是軟件無(wú)線電技術(shù)實(shí)現(xiàn)過(guò)程中的一個(gè)重要環(huán)節(jié),其完成的任務(wù)主要是:一方面將包含所有信道的寬帶信號(hào)進(jìn)行信道分離,分別提取需要的窄帶信號(hào);另一方面,對(duì)于分離的窄帶信號(hào),可以大大降低其采樣速率,即降低數(shù)據(jù)量,緩解基帶部分的處理壓力[1]。
本文首先介紹了數(shù)字下變頻及其核心部分?jǐn)?shù)控振蕩器的原理,并在此基礎(chǔ)上研究了基于FPGA的數(shù)字下變頻器的實(shí)現(xiàn)方法。
1 數(shù)字下變頻的原理
數(shù)字下變頻器的組成包括數(shù)字混頻器、數(shù)字控制振蕩器(Numerically Controlled Oscillator,NCO)和低通濾波器(LPF),如圖1所示。
從原理上比較,數(shù)字下變頻器和模擬下變頻器是一致的,都是輸入信號(hào)與本地振蕩信號(hào)混頻,然后經(jīng)低通濾波器濾除高頻分量,得到基帶信號(hào)。模擬下變頻器的缺點(diǎn)是:由于兩路乘法器和低通濾波器本身一致性不好,致使I,Q通道幅度不平衡,相位正交誤差很大,并且具有溫度漂移,穩(wěn)定性也不好。然而在數(shù)字下變頻器中,乘法器和低通濾波器可以做到完全一致,因此不存在I,Q通道幅度不平衡的問題。另外,數(shù)字下變頻器的控制和修改較容易等特點(diǎn)也是模擬下變頻器所無(wú)法比擬的。
圖1 數(shù)字下變頻器組成方框圖
2 數(shù)控振蕩器的實(shí)現(xiàn)[2]
NCO是數(shù)字下變頻器中相對(duì)復(fù)雜的部分,也是決定數(shù)字下變頻器性能的最主要因素之一。NCO的目標(biāo)就是產(chǎn)生一個(gè)理想的正弦或余弦波采樣值。正弦波形采樣可以用實(shí)時(shí)計(jì)算的方法產(chǎn)生,但這只適用于采樣率較低的情況。在采樣率很高的情況下,產(chǎn)生正弦波采樣最簡(jiǎn)單有效的方法是查表法,即把各個(gè)相位的正弦值事先計(jì)算好存儲(chǔ)在ROM中,然后按相位做地址查表得到正弦波采樣。
由圖2可知,NCO由相位累加器、相位加法器和正弦表只讀存儲(chǔ)器三部分組成。NCO的工作原理如下:每一個(gè)時(shí)鐘脈沖,利用相位累加器使相位在原來(lái)的基礎(chǔ)上加一個(gè)相位增加量即頻率控制字,再利用相位加法器加上初始相位即相位偏移,最后用相位值作為正弦表的地址,查出正弦值。每當(dāng)累加器溢出時(shí)就產(chǎn)生一個(gè)新的循環(huán),累加器完成一個(gè)循環(huán)的時(shí)間就是正弦波形的周期[3]。
圖2 NCO功能方框圖
3 混頻器的設(shè)計(jì)及其在FPGA中的實(shí)現(xiàn)
混頻器中的本振信號(hào)cos(ωcn),sin(ωcn)由直接數(shù)字頻率合成器產(chǎn)生。直接數(shù)字頻率合成器(DDS)由相位累加器、相位加法器、正弦表只讀存儲(chǔ)器[4]三部分組成。相位累加器將數(shù)字本振頻率和本振偏移頻率之和轉(zhuǎn)換成相位,每來(lái)一個(gè)時(shí)鐘脈沖,相位在原來(lái)的基礎(chǔ)上增加一個(gè)相位增量。相位加法器的功能是設(shè)置一定的初始相位,以滿足某些應(yīng)用的需要。相位的正弦值通過(guò)查正弦表求得。
sin[n]=sin(2πn/N)
(1)
式中:n是查正弦表時(shí)對(duì)應(yīng)的數(shù)組元素的地址;N決定了正弦表的大小;sin[n]表示(2πn)/N處的正弦值,每來(lái)一個(gè)時(shí)鐘脈沖相位累加器將相位增加(2π)/N。
DDS可以調(diào)用Xilinx公司提供的IP核產(chǎn)生。其中,DDS的參考時(shí)鐘、頻率分辨率、無(wú)雜散動(dòng)態(tài)范圍和本地載波輸出頻率均可以跟據(jù)需要進(jìn)行設(shè)置。這里將DDS參考時(shí)鐘設(shè)置為10 MHz,輸出載波頻率設(shè)置為2.5 MHz,無(wú)雜散動(dòng)態(tài)范圍設(shè)置為36 dB,頻率分辨率設(shè)置為1 Hz。用ModelSim SE PLUS 5.8c仿真后波形如圖3所示。
圖3 直接數(shù)字頻率合成器仿真波形
4 FIR低通濾波器的設(shè)計(jì)及其在FPGA中的實(shí)現(xiàn)
有限沖擊響應(yīng)濾波器FIR是指沖激響應(yīng)函數(shù)h(n)為有限個(gè)值的數(shù)字濾波器,即滿足:
h(n)=0,n≥N2,n (2) 式中:N1,N2為有限值,實(shí)際中通常取N1=0,N2=N。相應(yīng)的系統(tǒng)函數(shù)H(z)為: H(z)=∑N-1n=0h(n)z-n (3) 式中: H(z)是z-1的N-1次多項(xiàng)式,它在z平面上有N-1個(gè)零點(diǎn),原點(diǎn)z=0是N-1階重極點(diǎn)。因此,H(z)永遠(yuǎn)穩(wěn)定。穩(wěn)定和線性相位特性是FIR濾波器的突出優(yōu)點(diǎn)[5]。 FIR濾波器的設(shè)計(jì)任務(wù)是選擇有限長(zhǎng)度的h(n),使傳輸函數(shù)H(ejω)滿足技術(shù)要求。FIR濾波器主要有三種設(shè)計(jì)方法:窗函數(shù)法、頻率采樣法和切比雪夫等波紋逼近法。這里采用的是窗函數(shù)法。 假設(shè)要設(shè)計(jì)的低通濾波器截止頻率為:ωc=0.25π rad,用理想低通濾波器作為逼近濾波器,有: hd(n)=sin[ωc(n-α)]π(n-α),0≤n≤N-1 (4) 式中: α=12(N-1)。 hd(n)=sin[0.25π(n-α)]π(n-α), 0≤n≤N-1 (5) 用漢寧窗設(shè)計(jì): h(n)=hd(n)wHn(n),0≤n≤N-1 (6) wHn(n)=0.51-cos2πn10 (7) 則由上式計(jì)算得到FIR濾波器的N個(gè)系數(shù)。這里取N=11。相應(yīng)的FIR低通濾波器幅頻特性曲線如圖4所示。 y=fir1(10,0.24,hanning(11)) [-0.003 0 0.037 0.119 0.209 0.250 0.209 0.119 0.037 0-0.003] 圖4 FIR低通濾波器幅頻特性曲線 由于一般的FPGA內(nèi)部缺乏實(shí)現(xiàn)乘法運(yùn)算的有效結(jié)構(gòu),所以乘法運(yùn)算很耗資源[6,7]。鑒于此,可以用移位、加法來(lái)代替乘法。設(shè)Hs(k)為系數(shù)h(k)標(biāo)準(zhǔn)二進(jìn)制碼的第s位,則: h(k)=∑q-1s=0Hs(k)×2s (8) x(n)#8226;h(k)=∑q-1s=0Hs(k)×[x(n)×2s] (9) 式中:x(n)左移s位即得x(n)×2s,若Hs(k)中有m個(gè)‘1’,那么x(n)×h(k)就可用m次移位和(m-1)次相加來(lái)實(shí)現(xiàn)。這樣FIR濾波器的資源消耗主要取決于加法器的數(shù)量,減少加法器數(shù)量的一個(gè)有效方法是用標(biāo)準(zhǔn)有符號(hào)數(shù)字量(CSD碼)來(lái)表示系數(shù)。CSD碼有三重值:{-1,0,1},如45=000001-01-01,其中1-表示-1。標(biāo)準(zhǔn)二進(jìn)制碼零元素的密度為1/2,而CSD碼零元素的密度為2/3,用CSD碼表示系數(shù)h(k),加法器的數(shù)量理論上能減少33%。 另外,還有一種最優(yōu)CSD碼可以進(jìn)一步減少加法器的數(shù)量,即先將系數(shù)分解成幾個(gè)因子,如45=5×9,分別用CSD碼實(shí)現(xiàn)每個(gè)因子:5=(4+1),9=(8+1),再級(jí)聯(lián)。但最優(yōu)CSD碼只是對(duì)單個(gè)系數(shù)進(jìn)行的加法器簡(jiǎn)化,實(shí)際可以對(duì)所有系數(shù)進(jìn)行整體的加法器簡(jiǎn)化,一個(gè)系數(shù)的實(shí)現(xiàn)可以以其他系數(shù)的實(shí)現(xiàn)結(jié)果為起點(diǎn),如系數(shù)9,11。9可以由8+1來(lái)實(shí)現(xiàn),11又可以由9+2來(lái)實(shí)現(xiàn),將兩個(gè)系數(shù)結(jié)合起來(lái)實(shí)現(xiàn)又可以節(jié)省一個(gè)加法器,這就是簡(jiǎn)化加法器網(wǎng)絡(luò)的基本思想[8,9]。 根據(jù)式(6)用Matlab設(shè)計(jì)的濾波器在FPGA中實(shí)現(xiàn),首先將各系數(shù)左移10位得到: [3 0 38 122 214 256 214 122 38 0 3] 系數(shù)設(shè)計(jì)步驟如下[10]: 第一步:將所有系數(shù)取正,負(fù)號(hào)用抽頭延遲線上的減法來(lái)實(shí)現(xiàn); 第二步:形如2k的系數(shù)直接用移位實(shí)現(xiàn); 第三步:利用第二步的結(jié)果,用最少的加法器實(shí)現(xiàn)一些比較簡(jiǎn)單的系數(shù),如9=8+1,3=2+1; 第四步:充分利用已得結(jié)果,用最少的加法器實(shí)現(xiàn)其他系數(shù),如圖5所示。 圖5 簡(jiǎn)化加法器網(wǎng)絡(luò) 輸出y(n)=x(n)*h(n)=∑10k=0x(n-k)h(k) 當(dāng)輸入為x=[0 1 2 3 4 5 6 7 8 9 10 1 2 3 …] 輸出y=[4 990 6 018 7 016 7 634 7 412 6 270 4 708 3 566 3 344 3 962 4 960 …] 用ModelSim SE PLUS 5.8c仿真后波形如圖6所示。 圖6 低通濾波在ModelSim中的仿真 5 結(jié) 語(yǔ) 本文主要研究了數(shù)字下變頻器的原理及基于FPGA的實(shí)現(xiàn)方法。由于FPGA在設(shè)計(jì)和修改上的靈活性,使其比ASIC更加適合實(shí)現(xiàn)數(shù)字下變頻器。FPGA可以滿足各種不同應(yīng)用場(chǎng)合的要求,因此用FPGA來(lái)代替專用數(shù)字下變頻芯片能夠滿足大部分?jǐn)U頻通信系統(tǒng)中接收機(jī)對(duì)數(shù)字下變頻器的處理速度、處理帶寬以及濾波器性能的要求,具有一定的實(shí)用價(jià)值。 參考文獻(xiàn) [1][美]貝斯.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,胡永生,譯.北京:清華大學(xué)出版社,2003. [2]Nicholasetal H T.The Optimization of Direct Digital Frequency Synthesizer Performance in the Presence of Finite Word Length Effects[A].Proc.42th Annual Frequency Control Symposium[C].1988:357-363. [3]飛思科技產(chǎn)品研發(fā)中心.Matlab 7輔助信號(hào)處理技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2005. [4]韋逸嘉,賴益民.一種基于FPGA的數(shù)字下變頻算法研究[J].信息技術(shù),2005,29(7):106-108. [5]楊靈,吳黎暉,張?zhí)N玉.基于高效抽取濾波器的數(shù)字下變頻設(shè)計(jì)[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2006,34(6):14-16. [6]楊小牛,樓才義,徐建良.軟件無(wú)線電原理與應(yīng)用[M].北京:電子工業(yè)出版社,2001. [7]褚振勇,翁木云.FPGA設(shè)計(jì)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2002. [8]向新,張發(fā)啟,王興華,等.軟件無(wú)線電原理與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2008. [9]韓韜.軟件無(wú)線電數(shù)字下變頻的研究及系統(tǒng)仿真[D].長(zhǎng)春:吉林大學(xué),2006. [10]張欣.擴(kuò)頻通信數(shù)字基帶信號(hào)處理算法及其VLSI實(shí)現(xiàn)[M].北京:科學(xué)出版社,2004.