摘 要:頻移鍵控(FSK)是用不同頻率的載波來傳遞數(shù)字信號,并用數(shù)字基帶信號控制載波信號的頻率。提出一種基于流水線CORDIC 算法的2FSK 調(diào)制器的FPGA實現(xiàn)方案,可有效地節(jié)省FPGA 的硬件資源,提高運算速度。最后,給出該方案的硬件測試結(jié)果,驗證了設(shè)計的正確性。
關(guān)鍵詞:移頻鍵控; 調(diào)制器; CORDIC算法; FPGA
中圖分類號:TN911-34
文獻標(biāo)識碼:A
文章編號:1004-373X(2011)09-0077-03
Design of 2FSK Modulator Based on CORDIC Algorithm and FPGA
LEI Neng-fang
(Department of Physics and Electronic Engineering, Weinan Teachers University, Weinan 714000, China)
Abstract: The frequency-shift keying (FSK) transmits the digital signal with different frequency carrier, and controls the frequency of carrier with the digital basedand signal. The implementation scheme of 2FSK modulator based on pipeline CORDIC algorithm and FPGA is porposed. It can save the hardware resources and improve the operating speed efficiently. The design was verified by the practical testing result.
Keywords: FSK; modulator; CORDIC algorithm; FPGA
0 引 言
頻移鍵控(FSK)是用不同頻率的載波來傳送數(shù)字信號,并用數(shù)字基帶信號控制載波信號的頻率。具有抗噪聲性能好、傳輸距離遠、誤碼率低等優(yōu)點。在中低速數(shù)據(jù)傳輸中,特別是在衰落信道中傳輸數(shù)據(jù)時,有著廣泛的應(yīng)用。傳統(tǒng)上以硬件實現(xiàn)載波的方法都是采用直接頻率合成器(DDS)實現(xiàn)。但是DDS傳統(tǒng)的實現(xiàn)方式是基于查找表思想,即通過查找預(yù)先存儲的正余弦表來產(chǎn)生需要的正余弦值。當(dāng)頻率、精度要求越高,需要存儲的值也就越多,考慮FPGA的RAM資源有限,傳統(tǒng)的DDS實現(xiàn)方式就有了應(yīng)用瓶頸[1]。因此導(dǎo)致開發(fā)成本過高,甚至無法實現(xiàn),不適合現(xiàn)代通信系統(tǒng)的發(fā)展。
本文提出了應(yīng)用CORDIC(Coordinate Rotation Digital Computer)算法實時計算正弦值的方案,并基于CORDIC算法在FPGA芯片上設(shè)計了2FSK調(diào)制器。這不僅能夠節(jié)省大量的FPGA邏輯資源,而且能很好地兼顧速度、精度、簡單、高效等方面。
1 CORDIC算法原理及結(jié)構(gòu)
1.1 CORDIC算法原理
CORDIC算法[2]是由J.Volder于1959年提出的。該算法適用于解決一些三角學(xué)的問題,如平面坐標(biāo)的旋轉(zhuǎn)和直角坐標(biāo)到極坐標(biāo)的轉(zhuǎn)換等。CORDIC算法的基本思想是通過一系列固定的、與運算基數(shù)有關(guān)的角度的不斷偏擺以逼近所需的旋轉(zhuǎn)角度。從廣義上講,CORDIC方法就是一種數(shù)值計算的逼近方法。該算法實現(xiàn)三角函數(shù)的基本原理如圖1所示。
圖1 CORDIC算法原理圖
設(shè)初始向量(x0,y0)逆時針旋轉(zhuǎn)角度θ后得到向量(xn,yn),如圖1所示。則:
xn=x0cos θ-y0sin θ
yn=y0cos θ+x0sin θ
(1)
經(jīng)變換為:
xn=(x0-y0tan θ)cos θ
yn=(y0+x0tan θ)cos θ
(2)
為了避免復(fù)雜的乘法運算,用一系列微旋轉(zhuǎn)來處理,第i次旋轉(zhuǎn)可表示為:
xi+1=(xi-δiyi2-i)ki
yi+1=(yi+δixi2-i)ki
zi+1=zi-δitan-12-i
(3)
式中:θi表示第i次旋轉(zhuǎn)的角度,并且滿足tan θi=2-i;zi表示第i次旋轉(zhuǎn)后與目標(biāo)角度的差;δi表示向量的旋轉(zhuǎn)方向,由zi的符號位來決定,即δi=sign zi。ki=11+2-2i為每一級的校正因子,也就是每一級旋轉(zhuǎn)時向量模長發(fā)生的變化,對于字長一定的運算,總的校正因子是一個常數(shù)。若總的旋轉(zhuǎn)次數(shù)為n,則總校正因子用k表示為:
k=∏n-1i=011+2-2i
(4)
令x′0
=kx0,y′0
=ky0,則:
x′i+1
=
x′i-δi
y′i2-i
y′i+1=
y′i+δi
x′i2-i
(5)
式(5)就是CORDIC算法的迭代式。迭代n次(n→∞)后可以得到如下結(jié)果:
xn=(x0cos θ-y0sin θ)k
yn=(y0cos θ+x0sin θ)k
zn=z0-θ
(6)
若給定的初始輸入數(shù)據(jù)為x0=1/k,y0=0時,z0=θ,則輸出為:
xn=cos θ
yn=sin θ
zn=0
(7)
由式(7)可知:xn,yn分別為輸入角θ的余弦和正弦值,故基于CORDIC算法可產(chǎn)生正弦載波信號,而且由式(5)可以看出所有運算簡化成加減法和移位操作,因此很容易用硬件實現(xiàn)。
1.2 CORDIC 流水線結(jié)構(gòu)
CORDIC算法的實現(xiàn)方式有2種:簡單狀態(tài)機法和高速全流水線處理器法。如果計算時間的要求不嚴(yán)格,可以采用狀態(tài)機結(jié)構(gòu)。這一結(jié)構(gòu)中最復(fù)雜的就是兩個桶狀移位器,而桶狀移位器的面積大約和它所包含的傳輸門的數(shù)目成正比[3]。盡管可以通過改進CORDIC算法來減小CORDIC處理器的總面積,但桶狀移位器所占的面積并不能減小。另外,這種結(jié)構(gòu)由于只在時間上復(fù)用資源,因此,數(shù)據(jù)吞吐率不高。
由于CORDIC算法的內(nèi)部數(shù)據(jù)流規(guī)則,決定了在CORDIC處理器解決方案中非常適合采用流水線型微旋轉(zhuǎn)結(jié)構(gòu)。采用流水線可將一個算術(shù)操作分解成一些小規(guī)模的加減法和移位操作,并在多個比較高速的時鐘內(nèi)完成。另一方面,輸出信號的精度只與CORDIC算法的旋轉(zhuǎn)次數(shù)或流水單元數(shù)有關(guān),即與級數(shù)有關(guān)。如需提高精度,只需簡單地增加流水單元即可,其擴展性很好,而且這并不會大量增加FPGA的資源耗費[4]。CORDIC流水線結(jié)構(gòu)的每一級迭代旋轉(zhuǎn)的硬件實現(xiàn)基本單元如圖2所示。
圖2 CORDIC算法基本單元
2 基于CORDIC算法正弦載波發(fā)生器的總體結(jié)構(gòu)
正弦載波發(fā)生器系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 正弦載波發(fā)生器系統(tǒng)結(jié)構(gòu)圖
在該系統(tǒng)結(jié)構(gòu)圖中,CORDIC計算單元是核心。CORDIC計算單元的輸入由相位加法器提供。相位加法器不間斷地產(chǎn)生角度值,由CORDIC計算單元計算出相應(yīng)的三角函數(shù)值,即可在其輸出端產(chǎn)生連續(xù)的數(shù)字正弦載波。
通過頻率控制字,改變相位累加器的步長,這樣即可改變正弦載波的頻率。具體的數(shù)學(xué)推導(dǎo)如下[5]:
設(shè)相位累加器的字長為N,頻率控制字即步長為step,則2琋就相當(dāng)于2π rad,N位中的最低有效位相當(dāng)于2π/2琋 rad,即最小的相位增量,step對應(yīng)的相位為step×(2π/2琋) rad,完成一個周期的正弦載波輸出需要2琋/step個參考時鐘周期。所以輸出正弦載波的周期為:
Tsinout=2琋stepTclk
(8)
輸出正弦載波的頻率為:
fsinout=step2琋fclk
(9)
當(dāng)step=1時,輸出頻率最低,即正弦載波的頻率分辨率為:
Δf=12琋fclk
(10)
可見改變相位累加器的步長step,可以改變正弦載波的頻率;改變相位累加器的字長N,可控制正弦載波的頻率分辨率。在相位累加器后加入相位加法器, 通過改變相位控制字P,可以控制輸出信號的相位;通過設(shè)置幅度控制字A,可控制最終輸出的正弦載波的幅度大小。因此,通過對相位控制字、頻率控制字或幅度控制字進行多路選擇, 可以形成不同進制的調(diào)制方式。可以看出, 使用該結(jié)構(gòu)可以很容易實現(xiàn)頻率調(diào)制、相位調(diào)制和幅值調(diào)制。
3 2FSK調(diào)制器的FPGA設(shè)計
圖4為2FSK調(diào)制器頂層工程原理圖。該原理圖主要由三個模塊組成:2選1數(shù)據(jù)選擇器MUX21、相位累加器adder、正弦載波生成模塊cordic。其中,clk為系統(tǒng)時鐘信號,rst為系統(tǒng)清零信號,step1,step2為2個不同的頻率控制字,s為系統(tǒng)頻率控制字選通端。2選1數(shù)據(jù)選擇器的選通端s受基帶信號控制,當(dāng)基帶信號為‘0時,選通控制字step1;當(dāng)基帶信號為‘1時,選通控制字step2。通過對step1,step2的選擇,可以實現(xiàn)頻率的切換。
在QuartusⅡ環(huán)境中,三個子模塊均用VHDL語言進行設(shè)計,系統(tǒng)頂層工程采用原理圖進行設(shè)計,對系統(tǒng)頂層工程進行器件選擇、引腳鎖定、編譯、綜合后下載到Cyclone系列EP1C12Q240C8器件中,通過在頻率控制字的引腳選擇不同參數(shù)即可在FPGA器件中完成2FSK調(diào)制器的設(shè)計。
圖4 2FSK調(diào)制器頂層工程原理圖
4 系統(tǒng)硬件實時測試
調(diào)制器的輸出信號為數(shù)字信號,經(jīng)D/A轉(zhuǎn)換后可以通過示波器進行測試,也可以直接采用QuartusⅡ軟件中的嵌入式邏輯分析儀SignalTapⅡ進行測試。
采用SignalTapⅡ進行芯片測試,用戶無需外接專用儀器,就可以對FPGA器件內(nèi)部所有信號和節(jié)點進行捕獲分析,而又不影響原硬件系統(tǒng)的正常工作[6]。經(jīng)測試得到的實時波形如圖5所示。
測試結(jié)果表明,基于FPGA和CORDIC算法的2FSK調(diào)制器設(shè)計方案是正確可行的,且波形流暢,在轉(zhuǎn)換處能快速進行切換。
圖5 2FSK調(diào)制器實時波形
5 結(jié) 語
用FPGA和CORDIC算法實現(xiàn)信號調(diào)制,既克服了傳統(tǒng)方法耗費資源、運行速度低等缺點,還具有靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)的特性,極大地提高了電子系統(tǒng)設(shè)計的靈活性和通用性,大大縮短了系統(tǒng)的開發(fā)周期。
參考文獻
[1]鄭瑾,葛臨東.基于流水線CORDIC算法的數(shù)字下變頻實現(xiàn)[J].現(xiàn)代雷達,2006,28(10):62-64.
[2]VOLDER J E. The CORDIC trigonometric computing technique [J]. IRE Trans.on Electronic Computers, 1959, 8 (3): 330-334.
[3]MEYER-BAESE Uwe.數(shù)字信號處理的FPGA 實現(xiàn)[M].劉凌,譯.2版.北京:清華大學(xué)出版社,2006.
[4]盧貴主.基于CORDIC算法的DDFS實現(xiàn)研究[J].廈門大學(xué)學(xué)報:自然科學(xué)版,2004,43(5):636-639.
[5]雷能芳.基于DDS技術(shù)的數(shù)字移相正弦信號發(fā)生器的CPLD設(shè)計與仿真[J].科學(xué)技術(shù)與工程,2009,9(4):1009-1011.
[6]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2005.
[7]王玉泰,李念強.基于DSP的直接數(shù)字頻率合成的算法研究及實現(xiàn)[J].儀器儀表學(xué)報,2004,25(4):66-68.
[8]姚亞峰,付東兵,楊曉非.基于CORDIC 改進算法的高速DDS電路設(shè)計[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2009,37(2):25-27.
[9]張曉彤,辛茹,王沁,等.基于改進混合式CORDIC算法的直接數(shù)字頻率合成器設(shè)計[J].電子學(xué)報,2008,36(6):1144-1147.
[10]姜宇柏,黃志強.通信收發(fā)機的Verilog實現(xiàn)與仿真[M].北京:機械工業(yè)出版社,2004.
[11]張健,楊萬麟.利用Virtex器件實現(xiàn)子空間法雷達目標(biāo)一維像識別[J].現(xiàn)代電子技術(shù),2007,30(19):77-79.
[12]關(guān)進輝,石春和,何遠輝.基于PC104總線的2FSK調(diào)制器的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(1):87-89.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文