基于CORDIC算法的OFDM 系統(tǒng)載波同步實(shí)現(xiàn)
0 引言
OFDM正交頻分復(fù)用技術(shù)是一種特殊的多載波傳輸方案,它可以看作是一種調(diào)制技術(shù),也可以看作是一種復(fù)用技術(shù)。OFDM正交頻分復(fù)用技術(shù)具有許多其他無(wú)線(xiàn)通信技術(shù)所無(wú)法比擬的優(yōu)越性,其中一個(gè)主要原因就在于它能很好的對(duì)抗頻率選擇性衰落或窄帶干擾。同時(shí),它也是一種并行技術(shù),可通過(guò)將一個(gè)高速數(shù)據(jù)流分割成許多低速的數(shù)據(jù)流并在多個(gè)子載波上并行傳輸,從而實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。
OFDM正交頻分復(fù)用技術(shù)與一般的多載波傳輸技術(shù)的不同之處在于,該技術(shù)允許子載波頻譜相互重疊,只要滿(mǎn)足子載波間的相互正交就可以從混疊的子載波中分離出數(shù)據(jù)信息,從而使得頻譜利用率大大提高。由此可見(jiàn),OFDM正交頻分復(fù)用技術(shù)對(duì)本來(lái)無(wú)線(xiàn)資源就十分貧乏的無(wú)線(xiàn)通信來(lái)說(shuō),是一種高效的傳輸技術(shù)。然而,OFDM系統(tǒng)對(duì)頻率偏移又非常敏感,這是因?yàn)?,頻偏會(huì)破壞子載波間的正交性,并引入子信道間干擾(I-CD,從而導(dǎo)致各子信道不能正確解調(diào)。因此頻偏估計(jì)算法的設(shè)計(jì)與實(shí)現(xiàn)是OFDM系統(tǒng)中的一個(gè)重要問(wèn)題。
本文首先分析了殘余頻偏估計(jì)和校正的系統(tǒng)原理,然后重點(diǎn)介紹了雙模CORDIC算法的原理與FPGA設(shè)計(jì)。最后給出了基于FPGA的整個(gè)系統(tǒng)實(shí)現(xiàn)方案。
1 OFDM系統(tǒng)與載波頻偏對(duì)系統(tǒng)的影響
OFDM正交頻分復(fù)用系統(tǒng)的結(jié)構(gòu)如圖1所示。在無(wú)線(xiàn)通信系統(tǒng)中,由于接收端和發(fā)送端的載波振蕩器之間不可避免地存在著差異,同時(shí)由于移動(dòng)信道中的多普勒頻移和相位噪聲的影響,使得接收機(jī)本地的載波和接收到的OFDM正交頻分復(fù)用信號(hào)的載波之間不可避免的存在著偏差。事實(shí)上,與單載波系統(tǒng)相比,OFDM系統(tǒng)對(duì)載波頻偏更加敏感。
圖2所示是小數(shù)倍載波頻率偏差對(duì)FFT之后各個(gè)子載波的影響??梢?jiàn),小數(shù)部分頻偏會(huì)使子載波間不再正交。從而發(fā)生能量泄漏并產(chǎn)生ICI,使系統(tǒng)性能急劇惡化。
2 載波頻偏方案設(shè)計(jì)
本文介紹的設(shè)計(jì)方法采用的是Schmidl同步方案,其同步方案框圖如圖3所示,并在每一個(gè)OFDM數(shù)據(jù)幀前加入由重復(fù)的PN序列組成的OFDM訓(xùn)練符號(hào)。
在接收端,通過(guò)對(duì)訓(xùn)練序列的延遲相關(guān),可以得到如下公式:
然后對(duì)上式求相角,可以得到:
如果|ψ|的值能夠保證小于π,那么,其頻偏估計(jì)值為:
對(duì)于載波頻率偏移的計(jì)算與補(bǔ)償,一般需要實(shí)現(xiàn)的兩個(gè)最重要的功能:第一是求相角的功能,第二是需要產(chǎn)生糾正頻偏用的和函數(shù)。求相角函數(shù)的實(shí)現(xiàn)有許多可行的方法。其中最直觀的就是通過(guò)復(fù)數(shù)虛部對(duì)實(shí)部的比值,也就是求反正切來(lái)得到角度值。這樣就引入了除法運(yùn)算,并且需要在RAM里建立一個(gè)反正切函數(shù)的查找表。另一種方法是使用CORDIC算法,該算法在多次迭代的情況下,只需要很少的硬件資源,但由于迭代計(jì)算的特點(diǎn),所以會(huì)有幾個(gè)時(shí)鐘周期的時(shí)延。由于相角的計(jì)算在每一個(gè)幀到來(lái)時(shí)只需要計(jì)算一次,所以,這個(gè)很小的時(shí)延不會(huì)對(duì)系統(tǒng)的性能造成影響。由于采用查找表的方法計(jì)算反正切函數(shù)需要大量的RAM空間,所以,設(shè)計(jì)時(shí)可采用CORDIC算法來(lái)實(shí)現(xiàn)角度的計(jì)算。
3 CORDIC算法原理與FPGA實(shí)現(xiàn)
3.1 CORDIC算法
計(jì)算三角函數(shù)和其它一些硬件不易實(shí)現(xiàn)的函數(shù),一般可使用查表法、多項(xiàng)式展開(kāi)或近似的方法。這些方法均不能兼顧速度、精度、簡(jiǎn)單性等方面的要求。CORDIC算法則是為解決這種問(wèn)題而產(chǎn)生的。它從算法本身人手,可將復(fù)雜的算法分解成一些在硬件中容易實(shí)現(xiàn)的基本算法,如加法、移位等,從而使這些算法在硬件上可以得到較好的實(shí)現(xiàn)。由于該算法是一種規(guī)則化的算法,它滿(mǎn)足硬件對(duì)算法的模塊化、規(guī)則化要求,因此,CORDIC算法是可以充分發(fā)揮硬件優(yōu)勢(shì)并利用硬件資源來(lái)實(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è)過(guò)程可以表示為:
如果向量a(xa,ya)經(jīng)過(guò)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的迭代式,它只需要通過(guò)移位和相加就可以完成矢量的旋轉(zhuǎn)。其向量a向向量b逼近的精度由迭代的次數(shù)決定,迭代的次數(shù)越多,逼近的精度越高。而引入變量z則表示進(jìn)行i次旋轉(zhuǎn)后與目標(biāo)角度之差。這樣,迭代n次所得到的最終結(jié)果為:
可以看出,此模式下,便可求出給定角度的三角函數(shù)值。
3.3 用于頻偏估計(jì)的CORDIC算法的向量模式
另外一種工作模式是向量工作模式,向量模式就是不斷地使yi趨近于0。在向量模式下,CORDIC迭代n次得到的最終結(jié)果為:
可以看出,此模式下可以求出給定向量的模值和角度。
4 仿真結(jié)果
仿真設(shè)計(jì)中的CORDIC框圖如圖5所示。其中輸入和輸出的位寬均為可變的參數(shù),并可根據(jù)系統(tǒng)的實(shí)際需要進(jìn)行調(diào)整。輸入和輸出均為二進(jìn)制有符號(hào)的補(bǔ)碼形式。這里需要注意的是,z的取值范圍為[-π,π],假設(shè)z的位寬為z_bits,則π=2z_bits-1,-π=-2z_bits-1。圖6所示是其仿真波形圖
5 結(jié)束語(yǔ)
本文介紹了OFDM中頻偏估計(jì)和校正的基本原理,及頻偏對(duì)OFDM系統(tǒng)的影響。重點(diǎn)介紹了CORDIC算法的兩種模式在頻率同步中的應(yīng)用。并在FPGA中對(duì)系統(tǒng)進(jìn)行了仿真驗(yàn)證,結(jié)果證明:本設(shè)計(jì)的數(shù)據(jù)位寬可以跟據(jù)系統(tǒng)對(duì)誤差的要求來(lái)確定,并可根據(jù)實(shí)際項(xiàng)目的需求來(lái)設(shè)置。