基于CORDIC算法的OFDM 系統(tǒng)載波同步實(shí)現(xiàn)
在接收端,通過對(duì)訓(xùn)練序列的延遲相關(guān),可以得到如下公式:
然后對(duì)上式求相角,可以得到:
如果|ψ|的值能夠保證小于π,那么,其頻偏估計(jì)值為:
對(duì)于載波頻率偏移的計(jì)算與補(bǔ)償,一般需要實(shí)現(xiàn)的兩個(gè)最重要的功能:第一是求相角的功能,第二是需要產(chǎn)生糾正頻偏用的和函數(shù)。求相角函數(shù)的實(shí)現(xiàn)有許多可行的方法。其中最直觀的就是通過復(fù)數(shù)虛部對(duì)實(shí)部的比值,也就是求反正切來得到角度值。這樣就引入了除法運(yùn)算,并且需要在RAM里建立一個(gè)反正切函數(shù)的查找表。另一種方法是使用CORDIC算法,該算法在多次迭代的情況下,只需要很少的硬件資源,但由于迭代計(jì)算的特點(diǎn),所以會(huì)有幾個(gè)時(shí)鐘周期的時(shí)延。由于相角的計(jì)算在每一個(gè)幀到來時(shí)只需要計(jì)算一次,所以,這個(gè)很小的時(shí)延不會(huì)對(duì)系統(tǒng)的性能造成影響。由于采用查找表的方法計(jì)算反正切函數(shù)需要大量的RAM空間,所以,設(shè)計(jì)時(shí)可采用CORDIC算法來實(shí)現(xiàn)角度的計(jì)算。本文引用地址:http://2s4d.com/article/191868.htm
3 CORDIC算法原理與FPGA實(shí)現(xiàn)
3.1 CORDIC算法
計(jì)算三角函數(shù)和其它一些硬件不易實(shí)現(xiàn)的函數(shù),一般可使用查表法、多項(xiàng)式展開或近似的方法。這些方法均不能兼顧速度、精度、簡單性等方面的要求。CORDIC算法則是為解決這種問題而產(chǎn)生的。它從算法本身人手,可將復(fù)雜的算法分解成一些在硬件中容易實(shí)現(xiàn)的基本算法,如加法、移位等,從而使這些算法在硬件上可以得到較好的實(shí)現(xiàn)。由于該算法是一種規(guī)則化的算法,它滿足硬件對(duì)算法的模塊化、規(guī)則化要求,因此,CORDIC算法是可以充分發(fā)揮硬件優(yōu)勢并利用硬件資源來實(shí)現(xiàn)硬件與算法相結(jié)合的一種優(yōu)化方案。
3.2 用于頻偏校正的CORDIC算法的旋轉(zhuǎn)模式
假設(shè)直角坐標(biāo)系內(nèi)有一個(gè)向量a(xa,ya),逆時(shí)針旋轉(zhuǎn)θ角度后得到另一個(gè)向量b(xb,yb),那么,這個(gè)過程可以表示為:
如果向量a(xa,ya)經(jīng)過n次旋轉(zhuǎn)才到達(dá)向量b(xb,yb),其中第i次旋轉(zhuǎn)的角度為θi,那么,第i次旋轉(zhuǎn)的表達(dá)式為:
CORDIC算法的旋轉(zhuǎn)示意圖如圖4所示。圖中,若取旋轉(zhuǎn)的角度總和這里的Si={-1;+1}。其中Si=+1表示向量是逆時(shí)針旋轉(zhuǎn),Si=-1表示向量是順時(shí)針旋轉(zhuǎn)。式中:隨著旋轉(zhuǎn)次數(shù)的增加,該式將收斂為一個(gè)常數(shù)k:
如果暫時(shí)不考慮這個(gè)增益因子k,則有:
這就是CORDIC的迭代式,它只需要通過移位和相加就可以完成矢量的旋轉(zhuǎn)。其向量a向向量b逼近的精度由迭代的次數(shù)決定,迭代的次數(shù)越多,逼近的精度越高。而引入變量z則表示進(jìn)行i次旋轉(zhuǎn)后與目標(biāo)角度之差。這樣,迭代n次所得到的最終結(jié)果為:
可以看出,此模式下,便可求出給定角度的三角函數(shù)值。
評(píng)論