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

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

3天內不再提示

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

電子工程師 ? 來源:OFweek維科網(wǎng) ? 作者: 科學文化人 ? 2021-04-11 11:16 ? 次閱讀

CORDIC算法簡介

信號處理領域,CORDIC(Coordinate Rotation Digital Computer,坐標旋轉數(shù)字計算機)算法具有重大工程意義。CORDIC算法由Vloder于1959年在設計美國航空導航控制系統(tǒng)時提出,主要用于解決導航系統(tǒng)中三角函數(shù)、反三角函數(shù)和開方等運算的實時計算問題。

1971年,Walther將圓周系統(tǒng)、線性系統(tǒng)和雙曲線系統(tǒng)統(tǒng)一到一個CORDIC迭代方程里,從而額提出了一種統(tǒng)一的CORDIC算法形式。

CORDIC算法的核心是利用加法和移位的迭代操作去替代復雜的運算,從而非常有利于硬件實現(xiàn)。CORDIC算法應用廣泛,如離散傅里葉變換(DFT)、離散余弦變換(DCT)、離散Hartley變換、Chirp-Z變換、各種濾波以及矩陣中的奇異值分解。

在工程領域,可采用CORDIC算法實現(xiàn)直接數(shù)字頻率合成器(DDS)、計算I/Q信號的幅度和相位。

01CORDIC基本原理

我們假設在笛卡爾坐標系(也就是我們常見的XY直角坐標系)中,將點(x1,y1)旋轉θ角度到點(x2,y2)的標準方法如下所示:

4e0868e4-99a8-11eb-8b86-12bb97331649.png

根據(jù)上圖,我們利用高中學習的三角函數(shù)、圓方程和極坐標等中學知識,可以得到:

4e1d3544-99a8-11eb-8b86-12bb97331649.png

這被稱為是平面旋轉、向量旋轉或者線性 ( 矩陣) 代數(shù)中的 Givens 旋轉。

上面的式子,我們將大學二年級學習的線性代數(shù)知識拿出來,用矩陣的形式來表示,于是得到:

4e28e5a6-99a8-11eb-8b86-12bb97331649.png

例如,我們做一個90°的相移,即θ=90:

4e3b4016-99a8-11eb-8b86-12bb97331649.png

這里注意cos和sin函數(shù)在直角坐標系下的物理意義,于是我們得到下面的圖示。

4e4b0ffa-99a8-11eb-8b86-12bb97331649.png

上面的第一個式子,我們假設提出一個公因子cosθ,那么我們可以得到:

4e5399cc-99a8-11eb-8b86-12bb97331649.png

如果去除項,我們得到 偽旋轉 方程式 :

4e683a44-99a8-11eb-8b86-12bb97331649.png

即旋轉的角度是正確的,但是x 與 y 的值增加cos-1θ 倍 ( 由于cos-1θ》 1),所以模值變大。

注意我們并不能通過適當?shù)臄?shù)學方法去除cosθ 項 , 然而隨后我們發(fā)現(xiàn)去除項可以簡化坐標平面旋轉的計算操作。

怎么說呢?

在XY坐標系中,結合上面的偽旋轉公式,我們可以用下圖表示:

4e73f26c-99a8-11eb-8b86-12bb97331649.png

于是,我們得出以下結論:

經(jīng)過偽旋轉之后,向量 R 的模值將增加1/cosθ 倍。

向量旋轉了正確的角度 , 但模值出現(xiàn)錯誤。

經(jīng)過偽旋轉后, 輸出進行適當?shù)姆壬炜s(1/cosθ),是不是就可以得到旋轉后的坐標了。

02CORDIC方法

CORDIC 方法的核心是 ( 偽) 旋轉角θ,其中,

4e81160e-99a8-11eb-8b86-12bb97331649.png

這個等式是怎么推導出來的呢?

所以方程為:

4e9c3628-99a8-11eb-8b86-12bb97331649.png

下面的表格指出用于 CORDIC 算法中每個迭代 (i) 的旋轉角度 (精確到 9位小數(shù)):

4eb06ee0-99a8-11eb-8b86-12bb97331649.png

note:由于i是整數(shù),所以對應的角度值都是一一確定的,只能通過幾個角度的加減組合來達到你所想要的角度值。

注意有三個方面的變化:

角度累加(減)

坐標值累加(減)

向量的模(也就是長度的,相對于橫縱坐標的)累加(減)

這三個累加的變化時不一樣的,注意區(qū)別,角度的累加和長度的累加有一定的對應關系。

4ed6a65a-99a8-11eb-8b86-12bb97331649.png

03角度累加器

4f11f962-99a8-11eb-8b86-12bb97331649.png

4f58711c-99a8-11eb-8b86-12bb97331649.png

上述三個方程式為圓周坐標系中用于角度旋轉的 CORDIC 算法的表達式。后續(xù)部分中我們還將看到CORDIC 算法被用于其它的坐標系,通過使用這些坐標系可以執(zhí)行更大范圍的函數(shù)計算。

04移位-加法算法

因此, 原始的算法現(xiàn)在已經(jīng)被減化為使用向量的偽旋轉來表示的迭代移位-相加算法 :

4fadaccc-99a8-11eb-8b86-12bb97331649.png

因此,每個迭代需要:

4fe6347a-99a8-11eb-8b86-12bb97331649.png

note:前面提到的去除 cos 項的原因是顯而易見的。當將該項去除時,轉換公式已經(jīng)被簡化為偽旋轉的迭代移位相加計算。

CORDIC 硬件實現(xiàn)結構:

500ead74-99a8-11eb-8b86-12bb97331649.png

05伸縮因子

前面提到,為了得到偽旋轉公式,我們把公因子cosθ忽略了,但在實際運算中,不能就這樣簡單粗暴拋棄。

我們再次對cosθ進行變形:

50222e62-99a8-11eb-8b86-12bb97331649.png

于是,我們可以得到:

5036b080-99a8-11eb-8b86-12bb97331649.png

如果我們已知了將被執(zhí)行的迭代次數(shù),我們便可以預先計算出 1/Kn 的值,并通過將 1/Kn 與 x(n) 和 y(n)相乘來校正x(n) 和 y(n) 的最終值。

CORDIC有兩種工作模式:旋轉模式和向量模式。

50810b94-99a8-11eb-8b86-12bb97331649.png

50f33318-99a8-11eb-8b86-12bb97331649.png

51fd388a-99a8-11eb-8b86-12bb97331649.png

520ef584-99a8-11eb-8b86-12bb97331649.png

06三種坐標系下的CORDIC

5565e846-99a8-11eb-8b86-12bb97331649.png

55a30320-99a8-11eb-8b86-12bb97331649.png

然而, 我們將會看到,通過考慮其它坐標系中的旋轉, 我們可以直接計算更多的函數(shù), 如乘法和除法, 進而間接計算更多的其它函數(shù)。

55d58d90-99a8-11eb-8b86-12bb97331649.png

使用其它坐標系的 CORDIC 算法的優(yōu)點是可以計算更多的函數(shù), 而缺點則是系統(tǒng)將變得更加復雜。當把CORDIC 算法用于線性或雙曲坐標系時, 在圓周坐標系中的旋轉角度集將不再有效。所以, 這些系統(tǒng)應使用其它的兩種旋轉角度集。

我們會發(fā)現(xiàn),可以推導出可在 3 個坐標系中表示 CORDIC 方程的通用公式。這意味著在方程式中引入兩個新變量。其中一個新變量 (e(i)) 代表了適當?shù)淖鴺讼抵杏糜诒硎拘D的角度集。

當把CORDIC算法用于雙曲線旋轉時,伸縮因子K與圓周旋轉的因子有所不同。

5603f3a6-99a8-11eb-8b86-12bb97331649.png

我們通過引入一個新變量μ,得到CORDIC的通用方程:

562dfe80-99a8-11eb-8b86-12bb97331649.png

至此,三個坐標系下的CORDIC方程得到大一統(tǒng)。

5664387e-99a8-11eb-8b86-12bb97331649.png

5683033a-99a8-11eb-8b86-12bb97331649.png

56cfc0d0-99a8-11eb-8b86-12bb97331649.png

56d9721a-99a8-11eb-8b86-12bb97331649.png

在使用FPGA進行CORDIC算法實現(xiàn)時,理想CORDIC 架構取決于具體應用中速率與面積的權衡。

可以將 CORDIC 方程直接翻譯成迭代型的位并行設計,然而:

位并行變量移位器不能很好地映射到 FPGA 中

需要若干個 FPGA 單元。導致設計規(guī)模變大而設計時間變長

參考文獻

關于 CORDIC 算法的基礎以及細節(jié)問題,可參見下面的材料 :

[1] R. Andraka. A survey of CORDIC algorithms for FPGA based computers. www.andraka.com/cordic.htm

[2] The CORDIC Algorithms. www.ee.byu.edu/ee/class/ee621/Lectures/L22.PDF

[3] CORDIC Tutorial. http://my.execpc.com/~geezer/embed/cordic.htm

[4] M. J. Irwin. Computer Arithmetic. http://www.cse.psu.edu/~cg575/lectures/cse575-cordic.pdf

編輯:jq

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

    關注

    19

    文章

    7605

    瀏覽量

    89768
  • COS
    COS
    +關注

    關注

    1

    文章

    24

    瀏覽量

    20180
  • CORDIC算法
    +關注

    關注

    0

    文章

    17

    瀏覽量

    9792

原文標題:什么是CORDIC算法

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 2人收藏
  • jf_395401191
  • jinniuxing1

評論

相關推薦

帶你了解工業(yè)計算機尺寸

項艱巨的任務。本博客將指導您了解關鍵的工業(yè)計算機尺寸、使用案例。關鍵工業(yè)計算機外形要素及其使用案例、工業(yè)微型PC尺寸范圍:寬度:100毫米-180毫米深度:10
的頭像 發(fā)表于 04-24 13:35 ?85次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>工業(yè)計算機尺寸

帶你了解芯片開封技術

芯片開封的定義芯片開封,即Decap,是種對完整封裝的集成電路(IC)芯片進行局部處理的工藝。其目的是去除芯片的封裝外殼,暴露出芯片內部結構,同時確保芯片功能不受損。芯片開封是芯片故障分析實驗
的頭像 發(fā)表于 04-07 16:01 ?281次閱讀
<b class='flag-5'>帶你</b><b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>芯片開封技術

帶你了解什么是燈具檢測測試

在燈具制造業(yè)中,技術檢驗是確保產(chǎn)品符合安全和質量標準的基石。本文將深入探討燈具產(chǎn)品在技術檢驗中需遵循的各項測試要求和行業(yè)標準,以保障其在市場上的可靠性和競爭力。兩種規(guī)格的高壓測試1.UL/cUL普通固定式燈具需經(jīng)受1500V/1.0mA/1秒的高壓測試,可移動式燈具則為1500V/0.5mA/1秒。測試頻率應處于40~70Hz區(qū)間,且泄漏電流上限為0.5mA
的頭像 發(fā)表于 01-15 15:34 ?483次閱讀
<b class='flag-5'>帶你</b><b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>什么是燈具檢測測試

帶你了解arm主板

當您聽到“ARM主板”詞時,您可能會想知道它與大多數(shù)個人計算機中使用的典型x86主板有何不同。事實是,ARM主板在從智能手機和平板電腦到服務器和嵌入式系統(tǒng)等各種應用中越來越受歡迎。但是什么讓它們
的頭像 發(fā)表于 01-02 10:51 ?396次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>arm主板

帶你了解FIB技術

FIB技術定義聚焦離子束(FocusedIonBeam,FIB)技術是種先進的微納加工技術,它利用高度聚焦的離子束對材料進行精確的加工、分析和成像。FIB技術能夠在納米尺度上實現(xiàn)材料的去除、沉積
的頭像 發(fā)表于 12-20 12:55 ?2170次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>FIB技術

帶你了解工業(yè)電腦

您是否正在尋找適合您應用的工業(yè)電腦,但又不知道從哪里開始?以下是工業(yè)電腦和商用電腦之間的差異及其優(yōu)勢,可幫助您找到合適的產(chǎn)品。工業(yè)電腦是人們和企業(yè)每天所依賴的許多機器的大腦,從倉庫機器人到國家安全系統(tǒng)。在工業(yè)領域,機器視覺、工業(yè)機器人、人工智能(AI)和深度學習等應用都依賴于強大、可靠的工業(yè)電腦,以確保流程平穩(wěn)高效地運行。本文介紹了工業(yè)和商用電腦之間的差異、
的頭像 發(fā)表于 12-02 15:12 ?341次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>工業(yè)電腦

帶你了解什么是SD NAND存儲芯片

存儲芯片:   了解了EEPROM存儲芯片和NAND芯片以及EMMC存儲芯片他們都有各自的有點,比如說現(xiàn)在需要款芯片是擁有較大的存儲空間和較為簡單的存儲驅動什么樣的芯片適合呢?答案是:SD NAND
發(fā)表于 11-13 15:20

智慧公交是什么?帶你詳解智慧公交的解決方案!

智慧公交是什么?帶你詳解智慧公交的解決方案!
的頭像 發(fā)表于 11-05 12:26 ?723次閱讀
智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>詳解智慧公交的解決方案!

帶你了解透過率測量

透過率的定義光透過能力,即透光率,描述的是特定條件下,物體透過的光量與其接收的入射光量之間的比例。在光的傳播過程中,部分光線會被物體吸收,而另部分則能夠穿透物體,這種透過現(xiàn)象被稱作透光率。金鑒
的頭像 發(fā)表于 11-04 13:00 ?563次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>透過率測量

帶你了解IP地址別名

、什么是IP地址別名 IP地址別名是將多個IP地址與個網(wǎng)絡接口關聯(lián)起來的種方式。實現(xiàn)在網(wǎng)絡上的個節(jié)點可以與網(wǎng)絡建立多個連接,每個連接可以用于不同的用途。 就像在
的頭像 發(fā)表于 09-05 14:11 ?403次閱讀

帶你了解IP版本

?、IP地址有哪些版本 互聯(lián)網(wǎng)協(xié)議的原始版本于1983年在互聯(lián)網(wǎng)的前身ARPANET中首次部署,也就是互聯(lián)網(wǎng)協(xié)議版本4(IPv4)。在發(fā)展過程中,IPv4逐漸成為了互聯(lián)網(wǎng)的基礎協(xié)議之。然而可供
的頭像 發(fā)表于 09-05 13:36 ?480次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>IP版本

帶你了解半導體公司的各個崗位

銷售工程師(SalesEngineer)芯片公司的銷售工程師與傳統(tǒng)的銷售人員不同,需要具備以下職業(yè)素養(yǎng):1.技術背景,雖然銷售崗位通常不要求具備技術背景,但芯片公司的銷售崗位需要對芯片技術有
的頭像 發(fā)表于 08-08 16:28 ?5102次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>半導體公司的各個崗位

帶你了解什么是工控機?

?在工業(yè)計算領域,無風扇系統(tǒng)因其獨特的設計和眾多優(yōu)勢而獲得了巨大的關注。與依靠風扇進行冷卻的傳統(tǒng)計算機不同,無風扇工業(yè)計算機經(jīng)過精心設計,無需移動部件即可散熱。在這篇文章中,我們將探討無風扇工業(yè)計算機的引人注目的優(yōu)勢以及它們在各個行業(yè)中越來越受歡迎的原因。增強的可靠性和耐用性:無風扇工業(yè)計算機沒有像風扇這樣隨著時間的推移會發(fā)生故障的機械部件。這會提高可靠性并
的頭像 發(fā)表于 07-08 16:38 ?483次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>什么是工控機?

帶你詳細了解工業(yè)電腦

扇設計、承受振動和惡劣環(huán)境的能力、輕松配置、全面的I/O選項、延長生命周期、耐用的組件。了解如何為您的應用選擇工業(yè)電腦對提高設施的生產(chǎn)力和效率至關重要。詳細了解
的頭像 發(fā)表于 06-12 14:24 ?693次閱讀
<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>詳細<b class='flag-5'>了解</b>工業(yè)電腦

深度解析CORDIC算法原理

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

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品