0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過對CORDIC算法的工作原理進行分析

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-10-12 11:16 ? 次閱讀

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

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

1 CORDIC算法的基本原理

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

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

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

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

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

其最終結(jié)果為:

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

可見,經(jīng)過上述處理就可將輸入相位zo轉(zhuǎn)換為標準的正弦和余弦信號。

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

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

在CORDIC流水線結(jié)構(gòu)算法中,每一級CORDIC迭代運算都使用單獨的運算單元,當流水線填滿之后,每個時鐘周期都馬上會計算出一組結(jié)果,所以計算速度很快。

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

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

3.1 實現(xiàn)方案

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

3.2 仿真結(jié)果

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

4 結(jié)束語

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21625

    瀏覽量

    601245
  • 通信系統(tǒng)
    +關(guān)注

    關(guān)注

    6

    文章

    1168

    瀏覽量

    53256
  • 信號發(fā)生器
    +關(guān)注

    關(guān)注

    28

    文章

    1443

    瀏覽量

    108606

原文標題:詳細分析CORDIC算法的原理及其FPGA實現(xiàn)方法

文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CORDIC理論分析

      1、CORDIC 理論   1.1、 坐標旋轉(zhuǎn)數(shù)字計算機CORDIC   坐標旋轉(zhuǎn)數(shù)字計算機CORDIC(COordinate Rotation DIgital Computer)
    發(fā)表于 07-28 17:57 ?1804次閱讀

    基于改進的CORDIC算法的FFT復乘及其FPGA實現(xiàn)

    的性能。但傳統(tǒng)CORDIC算法中每次CORDIC迭代方向需由剩余角度的計算來確定,影響了工作速度。為此,本文根據(jù)定點FFT復乘中旋轉(zhuǎn)因子的旋轉(zhuǎn)方向可預先確定的特點,對
    發(fā)表于 07-11 21:32

    CORDIC算法求助

    請問CORDIC算法用verilog算法實現(xiàn)時,角度累加器中的45度,26.56度,14.04度怎么跟verilog語言相對應?
    發(fā)表于 07-11 20:18

    FPGA設(shè)計中必須掌握的Cordic算法

    進行快速傅里葉變換 (FFT) 計算,以分析多種生理信號的頻譜。在本應用中,結(jié)合傳統(tǒng)的數(shù)學函數(shù),設(shè)計人員使用 CORDIC 實現(xiàn) FFT 旋轉(zhuǎn)因子。CORDIC 詳解
    發(fā)表于 09-19 09:07

    高性能HPOR CORDIC算法及實現(xiàn)

    CORDIC 算法在通信和圖像處理等各個領(lǐng)域有著廣泛的應用,但是浮點CORDIC 由于迭代延時大且實現(xiàn)復雜沒有得到很好的應用,本文提出了一種修正浮點CORDIC
    發(fā)表于 12-15 14:27 ?15次下載

    基于CORDIC算法的載波同步鎖相環(huán)設(shè)計

    研究了一種利用CORDIC算法的矢量及旋轉(zhuǎn)模式對載波同步中相位偏移進行估計并校正的方法。設(shè)計并實現(xiàn)了基于CORDIC算法的數(shù)字鎖相環(huán)。
    發(fā)表于 12-15 14:49 ?0次下載
    基于<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>的載波同步鎖相環(huán)設(shè)計

    cordic算法verilog實現(xiàn)(簡單版)

    cordic算法verilog實現(xiàn)(簡單版)(轉(zhuǎn)載)module cordic(clk, phi, cos, sin); parameter W = 13, W_Z = 14; input clk; input [W_Z-1
    發(fā)表于 02-11 03:06 ?3242次閱讀
    <b class='flag-5'>cordic</b><b class='flag-5'>算法</b>verilog實現(xiàn)(簡單版)

    高速低功耗CORDIC算法的研究與實現(xiàn)

    針對傳統(tǒng)CORDIC算法流水線結(jié)構(gòu)的迭代次數(shù)過多,運算速度不夠快,消耗硬件資源較多的缺點,改進了一種基于旋轉(zhuǎn)模式并行運算的CORDIC算法。該算法
    發(fā)表于 11-16 10:46 ?14次下載
    高速低功耗<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>的研究與實現(xiàn)

    基于FPGA的Cordic算法實現(xiàn)的設(shè)計與驗證

    本文是基于FPGA實現(xiàn)Cordic算法的設(shè)計與驗證,使用Verilog HDL設(shè)計,初步可實現(xiàn)正弦、余弦、反正切函數(shù)的實現(xiàn)。將復雜的運算轉(zhuǎn)化成FPGA擅長的加減法和乘法,而乘法運算可以用移位運算代替
    發(fā)表于 07-03 10:18 ?2648次閱讀
    基于FPGA的<b class='flag-5'>Cordic</b><b class='flag-5'>算法</b>實現(xiàn)的設(shè)計與驗證

    基于CORDIC的高速Sobel算法實現(xiàn)

    為提高圖像邊緣檢測的處理速度,提出一種基于CORDIC的高速Sobel算法實現(xiàn)。
    的頭像 發(fā)表于 10-05 09:54 ?3527次閱讀
    基于<b class='flag-5'>CORDIC</b>的高速Sobel<b class='flag-5'>算法</b>實現(xiàn)

    CORDIC算法的原理及具體應用

    CORDIC(Coordinate Rotation Digital Computer)算法即坐標旋轉(zhuǎn)數(shù)字計算方法,是J.D.Volder1于1959年首次提出,主要用于三角函數(shù)、雙曲線、指數(shù)、對數(shù)
    的頭像 發(fā)表于 11-13 07:09 ?6588次閱讀

    如何使用FPGA實現(xiàn)CORDIC算法在跟蹤環(huán)中的應用

    主要介紹了坐標旋轉(zhuǎn)數(shù)字計算(CORDIC算法在US,g,鑒別器中的應用,包括碼跟蹤環(huán)、鎖頻環(huán)和鎖相環(huán)鑒別器,并進行了FPGA實現(xiàn)。在設(shè)計中,采用統(tǒng)一cORDIc
    發(fā)表于 01-22 16:12 ?8次下載
    如何使用FPGA實現(xiàn)<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>在跟蹤環(huán)中的應用

    一文帶你們了解什么是CORDIC算法

    CORDIC算法簡介 在信號處理領(lǐng)域,CORDIC(Coordinate Rotation Digital Computer,坐標旋轉(zhuǎn)數(shù)字計算機)算法具有重大工程意義。
    的頭像 發(fā)表于 04-11 11:16 ?1.5w次閱讀
    一文帶你們了解什么是<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>

    CORDIC算法簡介

    在信號處理領(lǐng)域,CORDIC(Coordinate Rotation Digital Computer,坐標旋轉(zhuǎn)數(shù)字計算機)算法具有重大工程意義。
    的頭像 發(fā)表于 03-28 09:39 ?2133次閱讀

    深度解析CORDIC算法原理

    CORDIC算法的思想是通過迭代的方法,使得累計旋轉(zhuǎn)過的角度的和無限接近目標角度。它是一種數(shù)值計算逼近的方法,運算只有移位和加減。
    的頭像 發(fā)表于 04-29 16:48 ?2353次閱讀
    深度解析<b class='flag-5'>CORDIC</b><b class='flag-5'>算法</b>原理