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

2020-12-17 電子發燒友

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

李倩 發表於 2018-10-12 11:16:23

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

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

1 CORDIC算法的基本原理

在直角坐標系統中,假設有一向量(x,y),按逆時針方向旋轉φ度得到向量(x1,y1),則兩向量的代數關係為:

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

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

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

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

其最終結果為:

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

可見,經過上述處理就可將輸入相位zo轉換為標準的正弦和餘弦信號。

2 CORDIC算法的FPGA實現

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

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

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

3 實現方案與仿真結果

3.1 實現方案

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

3.2 仿真結果

基於CORDIC算法的正餘弦信號發生器的仿真結果如圖3所示,由圖3可見,該算法可以實現標準的正弦波和餘弦波,並可直接作為頻偏校正單元。

4 結束語

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

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • Cordic算法(sinx,cosx)的Verilog實現
    該算法通過基本的加和移位運算代替乘法運算,使得矢量的旋轉和定向的計算不再需要三角函數、乘法、開方、反三角、指數等函數【2】。為什麼要用cordic算法?首先根據上述的解釋,我們可以看出:cordic算法的最大特點是使用加減法和移位操作實現初等函數的計算。
  • 基於CORDIC改進算法的DDS設計
    將基於改進的並行流水結構的CORDIC算法作為IP應用於高端DDS晶片中,同時利用Matlab的M語言進行仿真與調試,可以直觀地看到該改進算法的輸出波形。本文提出了一種基於CORDIC算法的16位流水線並行結構的DDS,取代傳統ROM查找表,實現了高速度和資源佔用率低的要求。利用Matlab工具進行仿真分析,不僅能直觀地看出輸出波形,而且加快了設計進程。1 DDS的基本結構 DDS的基本結構如圖1所示,主要包括:參考頻率源、相位累加器、ROM正弦查找表、D/A轉換器及低通濾波器。
  • 分分鐘看懂CORDIC算法
    最近出於項目需要,對CORDIC算法深入學習下。
  • FPGA之CORDIC算法:①CORDIC的基本原理介紹
    答案就是咱們今天的標題了,CORDIC,而且CORDIC是一個比較全能的算法,通過這一原理,我們可以實現三角函數,反三角函數,對數函數,指數函數等多種運算。接下來,一休哥就帶領大家來學習CORDIC的原理吧。
  • 基於FPGA的CORDIC算法的改進及實現
    若用傳統的乘、除等計算方法,需要佔用大量的硬體資源,甚至算法是難以實現的,這樣就不能滿足設計者的要求。CORDIC算法正是由此產生的,它僅在硬體電路上用到了移位和加/減,大大節約了硬體資源,使得這些算法在硬體上可以得到較好地實現,從而滿足設計者的要求。根據它的迭代原理,CORDIC單元可以用流水線結構表示,使向量旋轉並行處理,大大加快了蝶形運算的速度[1]。
  • 基於CORDIC算法和FPGA的數字頻率校正的實現
    O 引言   在無線電接收機系統中,由於會受到發射機運動、接收機運動和標準頻率隨時間動態變化等因素的影響,其接收機接收信號往往會發生頻率偏移,因而需要進行頻偏校正。   頻偏校正電路中通常需要根據給定相位產生餘弦信號和正弦信號,其中最重要的實現技術是CORDIC (Coordinate Rotation Digital Computer,坐標旋轉數字計算機)算法。本文將詳細分析CORDIC算法的原理及其FPGA實現方法。
  • 基於SoPC和CORDIC算法的通用數據機
    1 引言  軟體無線電SDR(Software Defined Radio)是構造具有開放性、標準化、模塊化的通用硬體平臺,將諸如工作頻段
  • 基於改進的CORDIC算法的FFT復乘及其FPGA實現
    FFT(快速傅立葉變換)在無線通信、語音識別、圖像處理和頻譜分析等領域有著廣泛應用。CORDIC算法只需簡單的移位與加減運算就能實現向量旋轉,具有使用資源少、硬體規模小等優勢。因此在FFT蝶形運算中用其代替傳統FFT運算中的複數乘法器,可以獲得更好的性能。但傳統CORDIC算法中每次CORDIC迭代方向需由剩餘角度的計算來確定,影響了工作速度。
  • 動態平衡原理分析(智能平衡車的工作原理)
    打開APP 動態平衡原理分析(智能平衡車的工作原理) 發表於 2018-03-21 14:38:00 據了解,智能平衡車的工作原理被稱為動態平衡原理。
  • 智能手環工作原理_智能手環是如何進行數據傳輸的
    打開APP 智能手環工作原理_智能手環是如何進行數據傳輸的 發表於 2017-12-30 16:21:07 由於每個人運動隨個人身體體徵的不同而產生不同的效果,因而用戶在使用手環進行監測前需要在APP中錄入自己的性別、年齡、身高、體重等信息,信息自動同步到手環中,通過傳感器監測運動動作,經過特定算法最終實現運動監測的功能。
  • 集成學習算法與Boosting算法原理
    而個體學習器按照個體學習器之間是否存在依賴關係可以分為兩類,第一個是個體學習器之間存在強依賴關係,一系列個體學習器基本都需要串行生成,代表算法是boosting系列算法,第二個是個體學習器之間不存在強依賴關係,一系列個體學習器可以並行生成,代表算法是bagging和隨機森林(Random Forest)系列算法。本文主要介紹Boosting算法的原理。2.
  • 今日頭條算法原理(全文)
    今日頭條委託資深算法架構師曹歡歡博士,公開今日頭條的算法原理,以期推動整個行業問診算法、建言算法;通過讓算法透明,來消除各界對算法的誤解,並逐步推動整個行業讓算法更好的造福社會。以下為《今日頭條算法原理》全文:
  • 反向傳播算法的工作原理(2)
    推薦圖書:《數據準備和特徵工程》在第一部分(《反向傳播算法的工作原理(1)》)已經得到了如下結論,本文將在前述基礎上,做進一步的證明和解釋。其它兩個方程(BP3)和(BP4),也可以遵循鏈式法則進行證明。此處從略。反向傳播算法根據前述方程,下面以算法的形式,顯示地寫出反向傳播算法:研究一下這個算法,你就會明白為什麼它被稱為反向傳播。
  • 神經網絡分析算法
    我們先簡要的分析下人類大腦的工作過程,我小心翼翼的在網上找到了一張勉強看起來舒服的大腦圖片而神經元之間四通過樹突和另一個神經元的軸突相聯繫,同時進行著信息傳遞和加工。我去...好複雜....我們來看看神經網絡的原理算法公式
  • 基於CORDIC算法的OFDM 系統載波同步實現
    同時,它也是一種並行技術,可通過將一個高速數據流分割成許多低速的數據流並在多個子載波上並行傳輸,從而實現數據的高速傳輸。 OFDM正交頻分復用技術與一般的多載波傳輸技術的不同之處在於,該技術允許子載波頻譜相互重疊,只要滿足子載波間的相互正交就可以從混疊的子載波中分離出數據信息,從而使得頻譜利用率大大提高。
  • 中文分詞算法技術的原理和理論運用
    我們知道,在英文的行文中,單詞之間是以空格作為自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符,雖然英文也同樣存在短語的劃分問題,不過在詞這一層上,中文比之英文要複雜得多、困難得多,所以中文詞語分析可以說是中文信息處理的基礎與關鍵。
  • 基於Verilog的Cordic算法實現
    CORDIC(Coordinate Rotation Digital Computer)算法即坐標旋轉數字計算方法,是J.D.Volder1於1959年首次提出,主要用於三角函數、雙曲線、指數、對數的計算。該算法通過基本的加和移位運算代替乘法運算,使得矢量的旋轉和定向的計算不再需要三角函數、乘法、開方、反三角、指數等函數。
  • 重學算法:Hash 算法原理及應用漫談
    點擊藍色「五分鐘學算法」關注我喲加個「星標」,天天中午 12:15,一起學算法本文作者:jeffhe,騰訊 IEG 開發工程師提到hash,相信大多數同學都不會陌生,之前很火現在也依舊很火的技術區塊鏈背後的底層原理之一就是hash,下面就從hash算法的原理和實際應用等幾個角度,對hash算法進行一個講解。
  • FPGA基於CORDIC算法的求平方實現
    CORDIC是在沒有專用乘法器(最小化門數量)情況下,一組完成特定功能的算法,包括平方、超越、Log、sin/cos/artan。
  • 遺傳算法簡介、基本原理及算法實現
    雖然遺傳算法存在諸如陷入局部最優解,收斂速度緩慢等問題,人們也進行了很多的修改,但是鑑於遺傳算法本身就具有很高的性能,而且各種修正方案都存在一定的複雜性和非普適性,所以經典遺傳算法在應用領域還是幾乎絕對的主流。二、遺傳算法的原理遺傳的算法的背景是達爾文的進化論,沒錯!