摘 要: 提出了一種改進的向量模式下的CORDIC算法——MV-CORDIC算法,可以用來實現(xiàn)通信系統(tǒng)中頻偏估計幅角的計算。仿真結(jié)果表明,該算法相比傳統(tǒng)的CORDIC算法,可以大幅度減少CORDIC算法的迭代次數(shù)。算法輸出幅角的誤差小,可以利用其實現(xiàn)頻偏估計中幅角的計算。
關(guān)鍵詞: CORDIC;頻偏估計;OFDM
正交頻分復(fù)用(OFMD)技術(shù)具有抗多徑、頻譜利用率高等特點,在寬帶無線傳輸領(lǐng)域中得到廣泛的應(yīng)用。無線局域網(wǎng)(WLAN)標準802.11a/b/g均將OFDM技術(shù)作為其物理層的標準。然而在OFDM系統(tǒng)中,系統(tǒng)對載波頻偏極為敏感。載波頻偏會破壞載波間的正交性,引入的子信道間的干擾(ICI),導(dǎo)致各子信道不能正確解調(diào),帶來嚴重的誤碼,使系統(tǒng)的性能大幅度下降。因此,頻偏估計算法的設(shè)計和實現(xiàn)是OFDM系統(tǒng)中一個重要的問題。采用基于訓(xùn)練符號的時域相關(guān)算法計算頻偏時,需要在小數(shù)倍頻偏估計階段對頻偏的幅角進行計算[1]。一般采用CORDIC(Coordinate Rotation Digital Compute)[2]算法實現(xiàn)幅角的計算,這種算法的顯著特點是用硬件實現(xiàn)該算法時只需要加法器和移位寄存器,因此在現(xiàn)代通信系統(tǒng)中得到了廣泛使用。但是,CORDIC算法的迭代次數(shù)和輸入數(shù)據(jù)的字長相同,對于輸入字長為N的數(shù)據(jù)需要迭代N次才能得到最精確的幅角值。
隨著超大規(guī)模集成電路VLSI(Very Large Scale Integrated Circuites)的發(fā)展,提高CORDIC算法的速度和精度,已經(jīng)提出了很多改進的CORDIC算法[3-6],但主要集中在旋轉(zhuǎn)模式中對CORDIC算法的改進。參考文獻[7]提出一種類CORDIC算法來計算幅角值,但沒有減少CORDIC算法的迭代次數(shù)。本文提出了一種改進的向量模式下的CORDIC算法——MV-CORDIC算法,在滿足一定輸出精度的條件下能有效減少算法的迭代次數(shù)。
1 CORDIC算法
CORDIC是一種在直線、圓弧和雙曲坐標系統(tǒng)下進行復(fù)雜計算的迭代算法。CORDIC只用移位和加法操作就可以完成復(fù)雜運算的實現(xiàn)。在直角坐標系統(tǒng)中,它包括旋轉(zhuǎn)模式(Rotation Mode)和向量模式(Vector Mode)兩種操作模式。旋轉(zhuǎn)模式指的是用一對初始向量(x0,y0)和一組角度序列{?茲i}去逼近一個目標向量(xn,yn)。向量模式用來計算初始向量(x0,y0)的模和幅角。該算法的統(tǒng)一算法模式[8]如式(1)和表1所示。
2 MV-CORDIC算法
CORDIC將簡單的運算分解為加法和移位運算,大大減少了運算量,適合FPGA以及硬件邏輯的實現(xiàn)。但是CORDIC算法是一個線性收斂和順序執(zhí)行的迭代算法,即對N位精度至少需要N次迭代,第i次迭代只有在第i+1次迭代完成后才能執(zhí)行。這些特性限制了CORDIC算法的計算速度。提高CORDIC計算速度的方法主要有:(1)減少CORDIC算法每次迭代所用的時間;(2)減少CORDIC算法的迭代次數(shù)。在旋轉(zhuǎn)模式下有很多算法采用并行方法來加速CORDIC的計算。比如并行CODIRC旋轉(zhuǎn)算法[9]和MVR-CORDIC算法[10]。
本設(shè)計借鑒MVR-CORDIC[10]算法在旋轉(zhuǎn)模式下對角度處理的思想,改進向量模式下CORDIC的計算,提出MV-CORDIC算法,使算法在保證一定輸出精度的前提下迭代次數(shù)變少。
2.1 算法思路
基于MVR-CORDIC的思想,本設(shè)計中的算法改變了傳統(tǒng)CORDIC算法中的微循環(huán),算法的主要特點如下。
?。?)跳過某些微循環(huán)。這樣不僅能減少迭代次數(shù),還可以提高角度循環(huán)的精度,比如:X0=1,Y0=1,按照傳統(tǒng)CORDIC算法迭代7次,最終的幅角值的殘余誤差為0.015;如果采用本設(shè)計的算法只需要進行一次?琢i=π/4的微循環(huán),而跳過其他微循環(huán),所得幅角的殘余誤差為0;
?。?)重復(fù)某些微旋轉(zhuǎn)。傳統(tǒng)CORDIC算法對基本角度的集合中的每個元素只能使用一次,對某些特殊的X0、Y0,其幅角為基本角度集的整數(shù)倍時,本算法進行多次相同基本角度的微旋轉(zhuǎn),這樣也能減少幅角的殘余誤差;
?。?)大大減少了迭代次數(shù)。傳統(tǒng)的CORDIC算法為能達到一定的精度一般要求迭代次數(shù)Rm等于字長W,而在本算法中,迭代次數(shù)Rm<<W。如上所述,本算法的迭代方程式可以改寫為:
3.3 仿真測試
MATLAB仿真測試分別使用16 bit定點數(shù)來表示輸入的輻角。對10萬組X0,Y0隨機數(shù)據(jù)采用不同的迭代次數(shù),得到MV-CORDIC算法和原始CORDIC算法對比結(jié)果及真實值的平均精度差,分別如圖1和表2所示??梢钥吹?,MV-CORDIC算法大大降低了算法的迭代次數(shù),使得系統(tǒng)可以根據(jù)輸出數(shù)據(jù)精度的要求,選擇更少的迭代次數(shù)來實現(xiàn)頻偏估計幅角的計算。
本文提出了MV-CORDIC算法來實現(xiàn)通信系統(tǒng)中頻偏估計幅角的計算,以減少CORDIC算法的迭代次數(shù)。通過仿真實驗可以看到,在保證一定精度的情況下,采用MV-CORDIC算法對比傳統(tǒng)模式下的CORDIC可以大大地減少迭代次數(shù)。采用MV-CORDIC算法優(yōu)于原始CORDIC算法,可以用于頻偏估計,提高通信系統(tǒng)的信噪比。
參考文獻
[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 ′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實現(xiàn)[J].計算機工程與科學(xué),2008(8):259-261.
[10] 甘露,吳國綱,徐政五,等.改進型MVR-CORDIC算法研究[J].電子科大學(xué)報,2004,33(5):489-491.