在無線電接收機(jī)系統(tǒng)中,由于會受到發(fā)射機(jī)運(yùn)動、接收機(jī)運(yùn)動和標(biāo)準(zhǔn)頻率隨時(shí)間動態(tài)變化等因素的影響,其接收機(jī)接收信號往往會發(fā)生頻率偏移,因而需要進(jìn)行頻偏校正。在擴(kuò)頻通信系統(tǒng)中,頻偏校正電路能消除中頻偏移對接收機(jī)擴(kuò)頻碼的捕獲以及數(shù)據(jù)解調(diào)性能的影響,從而提高接收機(jī)的性能。
頻偏校正電路中通常需要根據(jù)給定相位產(chǎn)生余弦信號和正弦信號,其中最重要的實(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í)針方向旋轉(zhuǎn)φ度得到向量(x1,y1),則兩向量的代數(shù)關(guān)系為:
在式(1)中,如果讓旋轉(zhuǎn)的角度φ滿足條件:tanφ=±2-i,則式(1)中的乘法操作就可以轉(zhuǎn)換為移位操作,從而很容易在FPGA中實(shí)現(xiàn)。圖l所示是直角坐標(biāo)下的向量旋轉(zhuǎn)示意圖。若需要旋轉(zhuǎn)的角度為θ,那么就可以通過n次旋轉(zhuǎn)一系列預(yù)定角度αi來完成。
(2)式中,di表示每次旋轉(zhuǎn)的方向?yàn)棣羒。由于每次旋轉(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)算,從而大大的簡化了FPGA的實(shí)現(xiàn)復(fù)雜性。由于還需要一個(gè)方程決定di的符號,引入變量zi表示每次旋轉(zhuǎn)預(yù)定角度的累加值:
這樣,CORDIC算法的迭代方程可表示為:
其最終結(jié)果為:
在頻偏校正電路中,通常需要根據(jù)給定相位θ產(chǎn)生余弦信號cosθ和正弦信號sinθ。為了產(chǎn)生標(biāo)準(zhǔn)且無放大的正弦和余弦信號,可令輸入向量的y分量(即yo)為0,x分量(即xo)為1/An,這樣,式(6)就可簡化為:
可見,經(jīng)過上述處理就可將輸入相位zo轉(zhuǎn)換為標(biāo)準(zhǔn)的正弦和余弦信號。
2 CORDIC算法的FPGA實(shí)現(xiàn)
用FPGA實(shí)現(xiàn)CORDIC算法,最常用的方法有迭代算法和基于流水線的算法。CORDIC迭代算法只有一級迭代單元,在系統(tǒng)時(shí)鐘的驅(qū)動下,可將迭代單元的輸出作為本級的輸入,并通過同一級迭代完成計(jì)算。迭代算法的硬件開銷很小,但完成一次CORDIC運(yùn)算需要多個(gè)時(shí)鐘周期,其運(yùn)算速度相對較慢。
在CORDIC流水線結(jié)構(gòu)算法中,每一級CORDIC迭代運(yùn)算都使用單獨(dú)的運(yùn)算單元,當(dāng)流水線填滿之后,每個(gè)時(shí)鐘周期都馬上會計(jì)算出一組結(jié)果,所以計(jì)算速度很快。
雖然流水線結(jié)構(gòu)算法的計(jì)算速度很快,但其精度會受到流水線級數(shù)的限制。而要提高精度,就必須增加流水線級數(shù),從而增大硬件開銷,因此,流水線級數(shù)的選擇要兼顧速度和精度的要求。
3 實(shí)現(xiàn)方案與仿真結(jié)果
3.1 實(shí)現(xiàn)方案
CORDIC算法的流水線流程圖如圖2所示,該方法采用7級流水線,故可大大提高計(jì)算速度。
3.2 仿真結(jié)果
基于CORDIC算法的正余弦信號發(fā)生器的仿真結(jié)果如圖3所示,由圖3可見,該算法可以實(shí)現(xiàn)標(biāo)準(zhǔn)的正弦波和余弦波,并可直接作為頻偏校正單元。
4 結(jié)束語
本文通過對CORDIC算法的工作原理進(jìn)行分析,給出了基于CORDIC算法和FPGA實(shí)現(xiàn)數(shù)字頻率校正的實(shí)現(xiàn)方案。仿真結(jié)果證明,該方法可以實(shí)現(xiàn)標(biāo)準(zhǔn)的正弦波和余弦波信號,可以直接作為頻偏校正單元來對數(shù)字頻率信號進(jìn)行校正。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21802瀏覽量
606405 -
通信系統(tǒng)
+關(guān)注
關(guān)注
6文章
1205瀏覽量
53496 -
信號發(fā)生器
+關(guān)注
關(guān)注
28文章
1480瀏覽量
109065
原文標(biāo)題:詳細(xì)分析CORDIC算法的原理及其FPGA實(shí)現(xiàn)方法
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
CORDIC理論分析
基于改進(jìn)的CORDIC算法的FFT復(fù)乘及其FPGA實(shí)現(xiàn)
CORDIC算法求助
FPGA設(shè)計(jì)中必須掌握的Cordic算法
高性能HPOR CORDIC算法及實(shí)現(xiàn)
基于CORDIC算法的載波同步鎖相環(huán)設(shè)計(jì)
![基于<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>的載波同步鎖相環(huán)設(shè)計(jì)](https://file.elecfans.com/web2/M00/48/CB/pYYBAGKhtCSAWEmIAAAvfwzK8iY098.jpg)
cordic算法verilog實(shí)現(xiàn)(簡單版)
![<b class='flag-5'>cordic</b><b class='flag-5'>算法</b>verilog實(shí)現(xiàn)(簡單版)](https://file1.elecfans.com//web2/M00/A6/AB/wKgZomUMP4OAFy6kAAA6Rpj4--U377.png)
高速低功耗CORDIC算法的研究與實(shí)現(xiàn)
![高速低功耗<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>的研究與實(shí)現(xiàn)](https://file.elecfans.com/web2/M00/49/59/poYBAGKhwKSAIL2uAAAdCf4KPPI835.jpg)
基于FPGA的Cordic算法實(shí)現(xiàn)的設(shè)計(jì)與驗(yàn)證
![基于FPGA的<b class='flag-5'>Cordic</b><b class='flag-5'>算法</b>實(shí)現(xiàn)的設(shè)計(jì)與驗(yàn)證](https://file.elecfans.com/web1/M00/56/1A/o4YBAFs65GqAfw_ZAABLax6NZn0507.png)
CORDIC算法的原理及具體應(yīng)用
如何使用FPGA實(shí)現(xiàn)CORDIC算法在跟蹤環(huán)中的應(yīng)用
![如何使用FPGA實(shí)現(xiàn)<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>在跟蹤環(huán)中的應(yīng)用](https://file.elecfans.com/web1/M00/DC/4F/pIYBAGAKjgSAA86OAACXovJxCxc727.png)
一文帶你們了解什么是CORDIC算法
![一文帶你們了解什么是<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>](https://file.elecfans.com/web1/M00/EA/70/pIYBAGBybBCALe46AAAovRx1Lgk191.png)
CORDIC算法簡介
深度解析CORDIC算法原理
![深度解析<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>原理](https://file1.elecfans.com/web2/M00/DE/63/wKgZomYvX5aAIhT4AAAqV8FfYwg827.png)
評論