《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CORDIC算法和FPGA的數(shù)字頻率校正的實(shí)現(xiàn)
基于CORDIC算法和FPGA的數(shù)字頻率校正的實(shí)現(xiàn)
電子發(fā)燒友
摘要: 本文通過(guò)對(duì)CORDIC算法的工作原理進(jìn)行分析,,給出了基于CORDIC算法和FPGA實(shí)現(xiàn)數(shù)字頻率校正的實(shí)現(xiàn)方案,。仿真結(jié)果證明,該方法可以實(shí)現(xiàn)標(biāo)準(zhǔn)的正弦波和余弦波信號(hào),,可以直接作為頻偏校正單元來(lái)對(duì)數(shù)字頻率信號(hào)進(jìn)行校正,。
Abstract:
Key words :

  O 引言

  在無(wú)線電接收機(jī)系統(tǒng)中,由于會(huì)受到發(fā)射機(jī)運(yùn)動(dòng),、接收機(jī)運(yùn)動(dòng)和標(biāo)準(zhǔn)頻率隨時(shí)間動(dòng)態(tài)變化等因素的影響,,其接收機(jī)接收信號(hào)往往會(huì)發(fā)生頻率偏移,因而需要進(jìn)行頻偏校正,。在擴(kuò)頻通信系統(tǒng)中,,頻偏校正電路能消除中頻偏移對(duì)接收機(jī)擴(kuò)頻碼的捕獲以及數(shù)據(jù)解調(diào)性能的影響,從而提高接收機(jī)的性能。

  頻偏校正電路中通常需要根據(jù)給定相位產(chǎn)生余弦信號(hào)和正弦信號(hào),,其中最重要的實(shí)現(xiàn)技術(shù)是CORDIC (Coordinate Rotation Digital Computer,,坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算機(jī))算法。本文將詳細(xì)分析CORDIC算法的原理及其FPGA實(shí)現(xiàn)方法,。

  1 CORDIC算法的基本原理

  在直角坐標(biāo)系統(tǒng)中,,假設(shè)有一向量(x,y),,按逆時(shí)針?lè)较蛐D(zhuǎn)φ度得到向量(x1,,y1),則兩向量的代數(shù)關(guān)系為:

  

 

  在式(1)中,,如果讓旋轉(zhuǎn)的角度φ滿(mǎn)足條件:tanφ=±2-i,,則式(1)中的乘法操作就可以轉(zhuǎn)換為移位操作,從而很容易在FPGA中實(shí)現(xiàn),。圖l所示是直角坐標(biāo)下的向量旋轉(zhuǎn)示意圖,。若需要旋轉(zhuǎn)的角度為θ,那么就可以通過(guò)n次旋轉(zhuǎn)一系列預(yù)定角度αi來(lái)完成,。

  

 

  

 

  (2)式中,di表示每次旋轉(zhuǎn)的方向?yàn)?alpha;i,。由于每次旋轉(zhuǎn)都為預(yù)定角度值,,所以cosαi為常數(shù),而n次旋轉(zhuǎn)中每次迭代的處理可表示為:

  

 

  

 

  一般情況下,,當(dāng)旋轉(zhuǎn)的次數(shù)足夠大時(shí),,Ki一般為常數(shù)。由于在實(shí)現(xiàn)時(shí),,可在最終的計(jì)算結(jié)果中再乘以這一常數(shù),,所以,可以去掉式(3)中的Ki,,這樣,,迭代方程就僅含移位和加法運(yùn)算,從而大大的簡(jiǎn)化了FPGA的實(shí)現(xiàn)復(fù)雜性,。由于還需要一個(gè)方程決定di的符號(hào),,引入變量zi表示每次旋轉(zhuǎn)預(yù)定角度的累加值:

  

 

  這樣,CORDIC算法的迭代方程可表示為:

  

 

  其最終結(jié)果為:

  

 

  在頻偏校正電路中,,通常需要根據(jù)給定相位θ產(chǎn)生余弦信號(hào)cosθ和正弦信號(hào)sinθ,。為了產(chǎn)生標(biāo)準(zhǔn)且無(wú)放大的正弦和余弦信號(hào),可令輸入向量的y分量(即yo)為0,,x分量(即xo)為1/An,,這樣,式(6)就可簡(jiǎn)化為:

  

 

  可見(jiàn),經(jīng)過(guò)上述處理就可將輸入相位zo轉(zhuǎn)換為標(biāo)準(zhǔn)的正弦和余弦信號(hào),。

  2 CORDIC算法的FPGA實(shí)現(xiàn)

  用FPGA實(shí)現(xiàn)CORDIC算法,,最常用的方法有迭代算法和基于流水線的算法。CORDIC迭代算法只有一級(jí)迭代單元,,在系統(tǒng)時(shí)鐘的驅(qū)動(dòng)下,,可將迭代單元的輸出作為本級(jí)的輸入,并通過(guò)同一級(jí)迭代完成計(jì)算,。迭代算法的硬件開(kāi)銷(xiāo)很小,,但完成一次CORDIC運(yùn)算需要多個(gè)時(shí)鐘周期,其運(yùn)算速度相對(duì)較慢,。

  在CORDIC流水線結(jié)構(gòu)算法中,,每一級(jí)CORDIC迭代運(yùn)算都使用單獨(dú)的運(yùn)算單元,當(dāng)流水線填滿(mǎn)之后,,每個(gè)時(shí)鐘周期都馬上會(huì)計(jì)算出一組結(jié)果,,所以計(jì)算速度很快。

  雖然流水線結(jié)構(gòu)算法的計(jì)算速度很快,,但其精度會(huì)受到流水線級(jí)數(shù)的限制,。而要提高精度,就必須增加流水線級(jí)數(shù),,從而增大硬件開(kāi)銷(xiāo),,因此,流水線級(jí)數(shù)的選擇要兼顧速度和精度的要求,。

  3 實(shí)現(xiàn)方案與仿真結(jié)果

  3.1 實(shí)現(xiàn)方案

  CORDIC算法的流水線流程圖如圖2所示,,該方法采用7級(jí)流水線,故可大大提高計(jì)算速度,。

  

 

  3.2 仿真結(jié)果

  基于CORDIC算法的正余弦信號(hào)發(fā)生器的仿真結(jié)果如圖3所示,,由圖3可見(jiàn),該算法可以實(shí)現(xiàn)標(biāo)準(zhǔn)的正弦波和余弦波,,并可直接作為頻偏校正單元,。

  

 

  4 結(jié)束語(yǔ)

  本文通過(guò)對(duì)CORDIC算法的工作原理進(jìn)行分析,給出了基于CORDIC算法和FPGA實(shí)現(xiàn)數(shù)字頻率校正的實(shí)現(xiàn)方案,。仿真結(jié)果證明,,該方法可以實(shí)現(xiàn)標(biāo)準(zhǔn)的正弦波和余弦波信號(hào),可以直接作為頻偏校正單元來(lái)對(duì)數(shù)字頻率信號(hào)進(jìn)行校正,。

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