《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CORDIC的頻偏估計(jì)幅角計(jì)算算法
基于CORDIC的頻偏估計(jì)幅角計(jì)算算法
來(lái)源:微型機(jī)與應(yīng)用2014年第7期
王建軍,徐 力,安 鵬
(寧波工程學(xué)院,浙江 寧波 315016)
摘要: 提出了一種改進(jìn)的向量模式下的CORDIC算法——MV-CORDIC算法,可以用來(lái)實(shí)現(xiàn)通信系統(tǒng)中頻偏估計(jì)幅角的計(jì)算。仿真結(jié)果表明,該算法相比傳統(tǒng)的CORDIC算法,可以大幅度減少CORDIC算法的迭代次數(shù)。算法輸出幅角的誤差小,可以利用其實(shí)現(xiàn)頻偏估計(jì)中幅角的計(jì)算。
關(guān)鍵詞: 軟件 CORDIC 頻偏估計(jì) OFDM
Abstract:
Key words :

摘  要: 提出了一種改進(jìn)的向量模式下的CORDIC算法——MV-CORDIC算法,可以用來(lái)實(shí)現(xiàn)通信系統(tǒng)中頻偏估計(jì)幅角的計(jì)算。仿真結(jié)果表明,該算法相比傳統(tǒng)的CORDIC算法,可以大幅度減少CORDIC算法的迭代次數(shù)。算法輸出幅角的誤差小,可以利用其實(shí)現(xiàn)頻偏估計(jì)中幅角的計(jì)算。
關(guān)鍵詞: CORDIC;頻偏估計(jì);OFDM

 正交頻分復(fù)用(OFMD)技術(shù)具有抗多徑、頻譜利用率高等特點(diǎn),在寬帶無(wú)線傳輸領(lǐng)域中得到廣泛的應(yīng)用。無(wú)線局域網(wǎng)(WLAN)標(biāo)準(zhǔn)802.11a/b/g均將OFDM技術(shù)作為其物理層的標(biāo)準(zhǔn)。然而在OFDM系統(tǒng)中,系統(tǒng)對(duì)載波頻偏極為敏感。載波頻偏會(huì)破壞載波間的正交性,引入的子信道間的干擾(ICI),導(dǎo)致各子信道不能正確解調(diào),帶來(lái)嚴(yán)重的誤碼,使系統(tǒng)的性能大幅度下降。因此,頻偏估計(jì)算法的設(shè)計(jì)和實(shí)現(xiàn)是OFDM系統(tǒng)中一個(gè)重要的問(wèn)題。采用基于訓(xùn)練符號(hào)的時(shí)域相關(guān)算法計(jì)算頻偏時(shí),需要在小數(shù)倍頻偏估計(jì)階段對(duì)頻偏的幅角進(jìn)行計(jì)算[1]。一般采用CORDIC(Coordinate Rotation Digital Compute)[2]算法實(shí)現(xiàn)幅角的計(jì)算,這種算法的顯著特點(diǎn)是用硬件實(shí)現(xiàn)該算法時(shí)只需要加法器和移位寄存器,因此在現(xiàn)代通信系統(tǒng)中得到了廣泛使用。但是,CORDIC算法的迭代次數(shù)和輸入數(shù)據(jù)的字長(zhǎng)相同,對(duì)于輸入字長(zhǎng)為N的數(shù)據(jù)需要迭代N次才能得到最精確的幅角值。
 隨著超大規(guī)模集成電路VLSI(Very Large Scale Integrated Circuites)的發(fā)展,提高CORDIC算法的速度和精度,已經(jīng)提出了很多改進(jìn)的CORDIC算法[3-6],但主要集中在旋轉(zhuǎn)模式中對(duì)CORDIC算法的改進(jìn)。參考文獻(xiàn)[7]提出一種類(lèi)CORDIC算法來(lái)計(jì)算幅角值,但沒(méi)有減少CORDIC算法的迭代次數(shù)。本文提出了一種改進(jìn)的向量模式下的CORDIC算法——MV-CORDIC算法,在滿足一定輸出精度的條件下能有效減少算法的迭代次數(shù)。
1 CORDIC算法
 CORDIC是一種在直線、圓弧和雙曲坐標(biāo)系統(tǒng)下進(jìn)行復(fù)雜計(jì)算的迭代算法。CORDIC只用移位和加法操作就可以完成復(fù)雜運(yùn)算的實(shí)現(xiàn)。在直角坐標(biāo)系統(tǒng)中,它包括旋轉(zhuǎn)模式(Rotation Mode)和向量模式(Vector Mode)兩種操作模式。旋轉(zhuǎn)模式指的是用一對(duì)初始向量(x0,y0)和一組角度序列{?茲i}去逼近一個(gè)目標(biāo)向量(xn,yn)。向量模式用來(lái)計(jì)算初始向量(x0,y0)的模和幅角。該算法的統(tǒng)一算法模式[8]如式(1)和表1所示。

2 MV-CORDIC算法
 CORDIC將簡(jiǎn)單的運(yùn)算分解為加法和移位運(yùn)算,大大減少了運(yùn)算量,適合FPGA以及硬件邏輯的實(shí)現(xiàn)。但是CORDIC算法是一個(gè)線性收斂和順序執(zhí)行的迭代算法,即對(duì)N位精度至少需要N次迭代,第i次迭代只有在第i+1次迭代完成后才能執(zhí)行。這些特性限制了CORDIC算法的計(jì)算速度。提高CORDIC計(jì)算速度的方法主要有:(1)減少CORDIC算法每次迭代所用的時(shí)間;(2)減少CORDIC算法的迭代次數(shù)。在旋轉(zhuǎn)模式下有很多算法采用并行方法來(lái)加速CORDIC的計(jì)算。比如并行CODIRC旋轉(zhuǎn)算法[9]和MVR-CORDIC算法[10]。
本設(shè)計(jì)借鑒MVR-CORDIC[10]算法在旋轉(zhuǎn)模式下對(duì)角度處理的思想,改進(jìn)向量模式下CORDIC的計(jì)算,提出MV-CORDIC算法,使算法在保證一定輸出精度的前提下迭代次數(shù)變少。
2.1 算法思路
  基于MVR-CORDIC的思想,本設(shè)計(jì)中的算法改變了傳統(tǒng)CORDIC算法中的微循環(huán),算法的主要特點(diǎn)如下。
 (1)跳過(guò)某些微循環(huán)。這樣不僅能減少迭代次數(shù),還可以提高角度循環(huán)的精度,比如:X0=1,Y0=1,按照傳統(tǒng)CORDIC算法迭代7次,最終的幅角值的殘余誤差為0.015;如果采用本設(shè)計(jì)的算法只需要進(jìn)行一次?琢i=π/4的微循環(huán),而跳過(guò)其他微循環(huán),所得幅角的殘余誤差為0;
?。?)重復(fù)某些微旋轉(zhuǎn)。傳統(tǒng)CORDIC算法對(duì)基本角度的集合中的每個(gè)元素只能使用一次,對(duì)某些特殊的X0、Y0,其幅角為基本角度集的整數(shù)倍時(shí),本算法進(jìn)行多次相同基本角度的微旋轉(zhuǎn),這樣也能減少幅角的殘余誤差;
?。?)大大減少了迭代次數(shù)。傳統(tǒng)的CORDIC算法為能達(dá)到一定的精度一般要求迭代次數(shù)Rm等于字長(zhǎng)W,而在本算法中,迭代次數(shù)Rm<<W。如上所述,本算法的迭代方程式可以改寫(xiě)為:

3.3 仿真測(cè)試
 MATLAB仿真測(cè)試分別使用16 bit定點(diǎn)數(shù)來(lái)表示輸入的輻角。對(duì)10萬(wàn)組X0,Y0隨機(jī)數(shù)據(jù)采用不同的迭代次數(shù),得到MV-CORDIC算法和原始CORDIC算法對(duì)比結(jié)果及真實(shí)值的平均精度差,分別如圖1和表2所示。可以看到,MV-CORDIC算法大大降低了算法的迭代次數(shù),使得系統(tǒng)可以根據(jù)輸出數(shù)據(jù)精度的要求,選擇更少的迭代次數(shù)來(lái)實(shí)現(xiàn)頻偏估計(jì)幅角的計(jì)算。

 

 

 本文提出了MV-CORDIC算法來(lái)實(shí)現(xiàn)通信系統(tǒng)中頻偏估計(jì)幅角的計(jì)算,以減少CORDIC算法的迭代次數(shù)。通過(guò)仿真實(shí)驗(yàn)可以看到,在保證一定精度的情況下,采用MV-CORDIC算法對(duì)比傳統(tǒng)模式下的CORDIC可以大大地減少迭代次數(shù)。采用MV-CORDIC算法優(yōu)于原始CORDIC算法,可以用于頻偏估計(jì),提高通信系統(tǒng)的信噪比。
參考文獻(xiàn)
[1] MOOSE P H. A technique for orthogonal frequency division multiplexing frequency offset correction[C]. IEEE Transactions on communications, 1994.
[2] VOLDER J E. The CORDIC trigonometric computing technique[J]. IRE Transactions on Electronic Computers,1959,EC-8(3):330-334.
[3] Wu Chengshing, Wu Anyue. Modified vector rotational CORDIC(MVR-CORDIC) algorithm and its application to FFT[J]. IEEE Transactions on Circuits and Systems, 2001, 48(6):548-561.
[4] JUANG T B, HSIAO S F, TSAI M Y. Para-CORDIC: Parallel CORDIC rotation Algorithm[J]. IEEE Transactions on Circuits and Systems, 2004,51(8):1515-1524.
[5] HU Y H. CORDIC-based VLSI architecture for digital signal processing[C]. IEEE Signal Processing,1992.
[6]    KUHLMANN M, PARHI K K. A high-speed CORDIC algorithm and architecture for DSP application[C]. IEEE Workshop Signal Processing Systems(Sips), Taipei, Taiwan, 1999.
[7] MAHARATNA K,  TROYA A, KRSTI?譩 M, et al. A  CORDIC  like  processor  for computation of arctangent and absolute magnitude of a Vector[C]. IEEE ISCAS &prime;04, Vancouver (Canada), May 2004.
[8] WALTHER J S. A unified algorithm for elementary functions[C]. Spring joint computer conference, May 18-20, 1971.  
[9] 雷元武,周杰,葛穎增,等.并行CORDIC算法的研究及FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2008(8):259-261.
[10] 甘露,吳國(guó)綱,徐政五,等.改進(jìn)型MVR-CORDIC算法研究[J].電子科大學(xué)報(bào),2004,33(5):489-491.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。