基于CORDIC算法和FPGA的數字頻率校正的實(shí)現
O 引言
本文引用地址:http://dyxdggzs.com/article/191070.htm在無(wú)線(xiàn)電接收機系統中,由于會(huì )受到發(fā)射機運動(dòng)、接收機運動(dòng)和標準頻率隨時(shí)間動(dòng)態(tài)變化等因素的影響,其接收機接收信號往往會(huì )發(fā)生頻率偏移,因而需要進(jìn)行頻偏校正。在擴頻通信系統中,頻偏校正電路能消除中頻偏移對接收機擴頻碼的捕獲以及數據解調性能的影響,從而提高接收機的性能。
頻偏校正電路中通常需要根據給定相位產(chǎn)生余弦信號和正弦信號,其中最重要的實(shí)現技術(shù)是CORDIC (Coordinate Rotation Digital Computer,坐標旋轉數字計算機)算法。本文將詳細分析CORDIC算法的原理及其FPGA實(shí)現方法。
在直角坐標系統中,假設有一向量(x,y),按逆時(shí)針?lè )较蛐Dφ度得到向量(x1,y1),則兩向量的代數關(guān)系為:

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


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


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

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

其最終結果為:

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

可見(jiàn),經(jīng)過(guò)上述處理就可將輸入相位zo轉換為標準的正弦和余弦信號。
2 CORDIC算法的FPGA實(shí)現
用FPGA實(shí)現CORDIC算法,最常用的方法有迭代算法和基于流水線(xiàn)的算法。CORDIC迭代算法只有一級迭代單元,在系統時(shí)鐘的驅動(dòng)下,可將迭代單元的輸出作為本級的輸入,并通過(guò)同一級迭代完成計算。迭代算法的硬件開(kāi)銷(xiāo)很小,但完成一次CORDIC運算需要多個(gè)時(shí)鐘周期,其運算速度相對較慢。
在CORDIC流水線(xiàn)結構算法中,每一級CORDIC迭代運算都使用單獨的運算單元,當流水線(xiàn)填滿(mǎn)之后,每個(gè)時(shí)鐘周期都馬上會(huì )計算出一組結果,所以計算速度很快。
雖然流水線(xiàn)結構算法的計算速度很快,但其精度會(huì )受到流水線(xiàn)級數的限制。而要提高精度,就必須增加流水線(xiàn)級數,從而增大硬件開(kāi)銷(xiāo),因此,流水線(xiàn)級數的選擇要兼顧速度和精度的要求。
3 實(shí)現方案與仿真結果
3.1 實(shí)現方案
CORDIC算法的流水線(xiàn)流程圖如圖2所示,該方法采用7級流水線(xiàn),故可大大提高計算速度。

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

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