0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文带你们了解什么是CORDIC算法

电子工程师 ? 来源:OFweek维科网 ? 作者: 科学文化人 ? 2021-04-11 11:16 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CORDIC算法简介

信号处理领域,CORDIC(Coordinate Rotation Digital Computer,坐标旋转数字计算机)算法具有重大工程意义。CORDIC算法由Vloder于1959年在设计美国航空导航控制系统时提出,主要用于解决导航系统中三角函数、反三角函数和开方等运算的实时计算问题。

1971年,Walther将圆周系统、线性系统和双曲线系统统一到一个CORDIC迭代方程里,从而额提出了一种统一的CORDIC算法形式。

CORDIC算法的核心是利用加法和移位的迭代操作去替代复杂的运算,从而非常有利于硬件实现。CORDIC算法应用广泛,如离散傅里叶变换(DFT)、离散余弦变换(DCT)、离散Hartley变换、Chirp-Z变换、各种滤波以及矩阵中的奇异值分解。

在工程领域,可采用CORDIC算法实现直接数字频率合成器(DDS)、计算I/Q信号的幅度和相位。

01CORDIC基本原理

我们假设在笛卡尔坐标系(也就是我们常见的XY直角坐标系)中,将点(x1,y1)旋转θ角度到点(x2,y2)的标准方法如下所示:

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

根据上图,我们利用高中学习的三角函数、圆方程和极坐标等中学知识,可以得到:

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

这被称为是平面旋转、向量旋转或者线性 ( 矩阵) 代数中的 Givens 旋转。

上面的式子,我们将大学二年级学习的线性代数知识拿出来,用矩阵的形式来表示,于是得到:

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

例如,我们做一个90°的相移,即θ=90:

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

这里注意cos和sin函数在直角坐标系下的物理意义,于是我们得到下面的图示。

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),所以模值变大。

注意我们并不能通过适当的数学方法去除cosθ 项 , 然而随后我们发现去除项可以简化坐标平面旋转的计算操作。

怎么说呢?

在XY坐标系中,结合上面的伪旋转公式,我们可以用下图表示:

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

于是,我们得出以下结论:

经过伪旋转之后,向量 R 的模值将增加1/cosθ 倍。

向量旋转了正确的角度 , 但模值出现错误。

经过伪旋转后, 输出进行适当的幅度伸缩(1/cosθ),是不是就可以得到旋转后的坐标了。

02CORDIC方法

CORDIC 方法的核心是 ( 伪) 旋转角θ,其中,

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

这个等式是怎么推导出来的呢?

所以方程为:

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

下面的表格指出用于 CORDIC 算法中每个迭代 (i) 的旋转角度 (精确到 9位小数):

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

note:由于i是整数,所以对应的角度值都是一一确定的,只能通过几个角度的加减组合来达到你所想要的角度值。

注意有三个方面的变化:

角度累加(减)

坐标值累加(减)

向量的模(也就是长度的,相对于横纵坐标的)累加(减)

这三个累加的变化时不一样的,注意区别,角度的累加和长度的累加有一定的对应关系。

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

03角度累加器

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

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

上述三个方程式为圆周坐标系中用于角度旋转的 CORDIC 算法的表达式。后续部分中我们还将看到CORDIC 算法被用于其它的坐标系,通过使用这些坐标系可以执行更大范围的函数计算。

04移位-加法算法

因此, 原始的算法现在已经被减化为使用向量的伪旋转来表示的迭代移位-相加算法 :

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

因此,每个迭代需要:

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

note:前面提到的去除 cos 项的原因是显而易见的。当将该项去除时,转换公式已经被简化为伪旋转的迭代移位相加计算。

CORDIC 硬件实现结构:

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

05伸缩因子

前面提到,为了得到伪旋转公式,我们把公因子cosθ忽略了,但在实际运算中,不能就这样简单粗暴抛弃。

我们再次对cosθ进行变形:

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

于是,我们可以得到:

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

如果我们已知了将被执行的迭代次数,我们便可以预先计算出 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

然而, 我们将会看到,通过考虑其它坐标系中的旋转, 我们可以直接计算更多的函数, 如乘法和除法, 进而间接计算更多的其它函数。

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

使用其它坐标系的 CORDIC 算法的优点是可以计算更多的函数, 而缺点则是系统将变得更加复杂。当把CORDIC 算法用于线性或双曲坐标系时, 在圆周坐标系中的旋转角度集将不再有效。所以, 这些系统应使用其它的两种旋转角度集。

我们会发现,可以推导出可在 3 个坐标系中表示 CORDIC 方程的通用公式。这意味着在方程式中引入两个新变量。其中一个新变量 (e(i)) 代表了适当的坐标系中用于表示旋转的角度集。

当把CORDIC算法用于双曲线旋转时,伸缩因子K与圆周旋转的因子有所不同。

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

我们通过引入一个新变量μ,得到CORDIC的通用方程:

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

至此,三个坐标系下的CORDIC方程得到大一统。

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算法实现时,理想CORDIC 架构取决于具体应用中速率与面积的权衡。

可以将 CORDIC 方程直接翻译成迭代型的位并行设计,然而:

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

需要若干个 FPGA 单元。导致设计规模变大而设计时间变长

参考文献

关于 CORDIC 算法的基础以及细节问题,可参见下面的材料 :

[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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7679

    浏览量

    91005
  • COS
    COS
    +关注

    关注

    1

    文章

    24

    浏览量

    20267
  • CORDIC算法
    +关注

    关注

    0

    文章

    17

    浏览量

    9874

原文标题:什么是CORDIC算法

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    带你了解什么是机器视觉网卡

    机器视觉网卡通常指的是在机器视觉系统中用于连接工业相机到计算机的以太网卡。它的核心作用是实现高速、稳定、低延迟的图像数据传输。以下是关于机器视觉网卡的关键信息:1.核心功能:高速图像传输:处理来自千兆以太网或万兆以太网相机产生的大量图像数据流。万兆网卡能提供更高的带宽,满足高分辨率、高帧率相机的需求。支持GigEVision协议:这是机器视觉领域最重要的工业
    的头像 发表于 07-09 16:18 ?189次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>什么是机器视觉网卡

    带你了解电源测试系统的功能!

    在当今电子与电力技术飞速发展的时代,各类电子设备、电力系统以及新能源相关产品的研发、生产和维护过程中,电源测试系统扮演着至关重要的角色。本文将带你了解源仪电子的电源测试系统的功能。
    的头像 发表于 07-02 09:10 ?210次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>电源测试系统的功能!

    了解电压谐波

    我们经常会听到谐波,到底什么是谐波,怎么定义的?为什么要关注谐波?什么时候关注谐波?谐波如何计算或标准规定的谐波的算法是怎样的?GB关于电压谐波又是如何评估的?带着诸多的问题,我们一起来了解
    的头像 发表于 06-28 17:23 ?1940次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>电压谐波

    【微五科技CF5010RBT60开发板试用体验】Cordic数学计算测试

    Cordic数学计算测试本文分享cordic硬件数学计算。 Xprintf.h配置支持浮点打印#define XF_USE_FP1 /* 1: Enable support for floating
    发表于 06-27 23:55

    带你了解工业计算机尺寸

    项艰巨的任务。本博客将指导您了解关键的工业计算机尺寸、使用案例。关键工业计算机外形要素及其使用案例、工业微型PC尺寸范围:宽度:100毫米-180毫米深度:10
    的头像 发表于 04-24 13:35 ?366次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>工业计算机尺寸

    带你了解芯片开封技术

    芯片开封的定义芯片开封,即Decap,是种对完整封装的集成电路(IC)芯片进行局部处理的工艺。其目的是去除芯片的封装外壳,暴露出芯片内部结构,同时确保芯片功能不受损。芯片开封是芯片故障分析实验
    的头像 发表于 04-07 16:01 ?605次阅读
    <b class='flag-5'>带你</b><b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>芯片开封技术

    带你了解arm主板

    当您听到“ARM主板”词时,您可能会想知道它与大多数个人计算机中使用的典型x86主板有何不同。事实是,ARM主板在从智能手机和平板电脑到服务器和嵌入式系统等各种应用中越来越受欢迎。但是什么让它们
    的头像 发表于 01-02 10:51 ?622次阅读
    <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技术能够在纳米尺度上实现材料的去除、沉积
    的头像 发表于 12-20 12:55 ?3277次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>FIB技术

    带你了解工业电脑

    您是否正在寻找适合您应用的工业电脑,但又不知道从哪里开始?以下是工业电脑和商用电脑之间的差异及其优势,可帮助您找到合适的产品。工业电脑是人们和企业每天所依赖的许多机器的大脑,从仓库机器人到国家安全系统。在工业领域,机器视觉、工业机器人、人工智能(AI)和深度学习等应用都依赖于强大、可靠的工业电脑,以确保流程平稳高效地运行。本文介绍了工业和商用电脑之间的差异、
    的头像 发表于 12-02 15:12 ?525次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>工业电脑

    带你了解什么是SD NAND存储芯片

    存储芯片:   了解了EEPROM存储芯片和NAND芯片以及EMMC存储芯片他们都有各自的有点,比如说现在需要款芯片是拥有较大的存储空间和较为简单的存储驱动什么样的芯片适合呢?答案是:SD NAND
    发表于 11-13 15:20

    智慧公交是什么?带你详解智慧公交的解决方案!

    智慧公交是什么?带你详解智慧公交的解决方案!
    的头像 发表于 11-05 12:26 ?1040次阅读
    智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b>详解智慧公交的解决方案!

    带你了解透过率测量

    透过率的定义光透过能力,即透光率,描述的是特定条件下,物体透过的光量与其接收的入射光量之间的比例。在光的传播过程中,部分光线会被物体吸收,而另部分则能够穿透物体,这种透过现象被称作透光率。金鉴
    的头像 发表于 11-04 13:00 ?868次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>透过率测量

    带你了解IP地址别名

    、什么是IP地址别名 IP地址别名是将多个IP地址与个网络接口关联起来的种方式。实现在网络上的个节点可以与网络建立多个连接,每个连接可以用于不同的用途。 就像在
    的头像 发表于 09-05 14:11 ?581次阅读

    带你了解IP版本

    ?、IP地址有哪些版本 互联网协议的原始版本于1983年在互联网的前身ARPANET中首次部署,也就是互联网协议版本4(IPv4)。在发展过程中,IPv4逐渐成为了互联网的基础协议之。然而可供
    的头像 发表于 09-05 13:36 ?680次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>IP版本

    带你了解半导体公司的各个岗位

    销售工程师(SalesEngineer)芯片公司的销售工程师与传统的销售人员不同,需要具备以下职业素养:1.技术背景,虽然销售岗位通常不要求具备技术背景,但芯片公司的销售岗位需要对芯片技术有
    的头像 发表于 08-08 16:28 ?6684次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>半导体公司的各个岗位