当前位置: 首页 > news >正文

CORDIC三角计算技术

CORDIC 原理论文信息

  • 标题The CORDIC Trigonometric Computing Technique

  • 作者Jack E. Volder

  • 发表出处IRE Transactions on Electronic Computers, Volume EC-8, Issue 3, Sept. 1959

  • 页码: 330-334

  • DOI: 10.1109/TEC.1959.5222693


《CORDIC三角计算技术》中文翻译

摘要

本文描述了一种用于三角学计算的坐标旋转数字计算机技术。该机器通过执行以下迭代方程来进行平面旋转和三角函数计算:

xi+1=xi−m⋅yi⋅di⋅2−iyi+1=yi+xi⋅di⋅2−izi+1=zi−di⋅eixi+1​yi+1​zi+1​​=xi​−m⋅yi​⋅di​⋅2−i=yi​+xi​⋅di​⋅2−i=zi​−di​⋅ei​​

其中 mm 取值为 +1+1(用于圆周坐标系)、00(用于线性坐标系)或 −1−1(用于双曲坐标系)。对于 m=1m=1,eiei​ 是满足 tan⁡(ei)=2−itan(ei​)=2−i 的角度。该技术特别适用于那些具有并行寄存器移位和高速加法器,但乘法器速度较慢或成本高昂的计算机。它允许在约 nn 次加法中计算 nn 位三角函数,而使用乘法器则需要约 nn 次乘法。

1. 引言

在实时数字计算机中,经常需要将平面坐标系中的一个点 (X,Y)(X,Y) 旋转一个角度 ZZ,或者等价地,计算向量 (X,Y)(X,Y) 的幅度和相位角。这些计算通常涉及以下方程:

x=Xcos⁡Z−Ysin⁡Zy=Ycos⁡Z+Xsin⁡Zxy​=XcosZ−YsinZ=YcosZ+XsinZ​

或者,为了计算幅度 RR 和角度 AA:

R=(X2+Y2)1/2A=arctan⁡(Y/X)RA​=(X2+Y2)1/2=arctan(Y/X)​

这些计算通常需要四个乘法、两个加法/减法以及一个平方根或时间上的三角计算。在那些具有快速加法器但乘法器速度较慢或成本高昂的计算机中,能够在不使用乘法器的情况下执行这些操作是可取的。本文描述了一种技术,它通过一系列移位和加法操作来实现这些计算,这些操作与计算数字的位数成比例。

2. CORDIC 计算技术

该技术可以通过考虑图1所示的平面旋转来可视化。

图1,展示一个向量 (x, y) 旋转角度 θ 到新位置 (x', y')。

旋转可以通过以下矩阵运算表示:

[x′y′]=[cos⁡θ−sin⁡θsin⁡θcos⁡θ][xy][x′y′​]=[cosθsinθ​−sinθcosθ​][xy​]

如果我们将旋转角度 θθ 分解为一系列微旋转,每个微旋转一个二进制位,会如何?也就是说,我们选择一系列角度 θiθi​,使得 θ=∑θiθ=∑θi​,并且每个 θiθi​ 的正切值是2的负幂次:

tan⁡θi=±2−itanθi​=±2−i

那么,

θi=arctan⁡(2−i)θi​=arctan(2−i)

这些角度是固定的,可以预先计算并存储在计算机中。现在,第 ii 次微旋转(旋转角度 θiθi​)的方程变为:

xi+1=Ki(xi−yi⋅di⋅2−i)yi+1=Ki(yi+xi⋅di⋅2−i)xi+1​yi+1​​=Ki​(xi​−yi​⋅di​⋅2−i)=Ki​(yi​+xi​⋅di​⋅2−i)​

其中 di=±1di​=±1(用于控制旋转方向),并且 Ki=cos⁡θi=(1+2−2i)−1/2Ki​=cosθi​=(1+2−2i)−1/2。

因子 KiKi​ 在每次迭代中都会出现。然而,如果我们进行固定次数的旋转,并且所有旋转方向都已知,那么总的比例因子 K=∏KiK=∏Ki​ 是一个常数。对于大量的迭代次数,KK 趋近于 0.60725...。因此,如果我们事先知道要旋转的总角度,我们可以通过使用这个常数 KK 来补偿比例因子。

但是,如果我们希望旋转一个未知的角度 ZZ 呢?在这种情况下,我们可以引入一个第三个变量,它累积到目前为止的旋转角度。我们从一个初始向量 (x0,y0)(x0​,y0​) 和角度 z0z0​(即我们想要旋转的角度)开始。然后我们执行以下迭代:

xi+1=xi−yi⋅di⋅2−iyi+1=yi+xi⋅di⋅2−izi+1=zi−di⋅θixi+1​yi+1​zi+1​​=xi​−yi​⋅di​⋅2−i=yi​+xi​⋅di​⋅2−i=zi​−di​⋅θi​​

其中 di=sign(zi)di​=sign(zi​)(即,如果 zizi​ 为正,则 di=+1di​=+1;如果 zizi​ 为负,则 di=−1di​=−1)。这样,变量 zizi​ 会驱使它自己趋向于零。在迭代过程结束时,znzn​ 将为零(或在最低位精度范围内),并且我们已经有效地旋转了初始角度 z0z0​。

请注意,比例因子 KiKi​ 在上面的方程中被省略了。为了校正这个,我们可以通过乘以预计算的常数 KK 来预先缩放初始的 x0x0​ 和 y0y0​,或者在计算完成后进行校正。

3. 计算模式

CORDIC技术可以以两种基本模式运行:

  1. 旋转模式:将一个向量旋转一个角度 z0z0​。初始时加载 (x0,y0,z0)(x0​,y0​,z0​),其中 z0z0​ 是所需旋转的角度。经过迭代后,结果得到 (xn,yn,0)(xn​,yn​,0),其中:

    xn=K(x0cos⁡z0−y0sin⁡z0)yn=K(y0cos⁡z0+x0sin⁡z0)xn​yn​​=K(x0​cosz0​−y0​sinz0​)=K(y0​cosz0​+x0​sinz0​)​

    通过选择特殊的初始值,我们可以直接计算三角函数。例如,设置 x0=1/Kx0​=1/K, y0=0y0​=0,则:

    xn=cos⁡z0yn=sin⁡z0xn​yn​​=cosz0​=sinz0​​
  2. 向量化模式:计算一个向量的幅度和角度。初始时加载 (x0,y0,z0=0)(x0​,y0​,z0​=0)。迭代规则中的 didi​ 现在由 yiyi​ 的符号决定:di=−sign(yi)di​=−sign(yi​)。这样做的目的是在每次迭代中旋转向量,使其趋向于x轴(即使 yiyi​ 趋向于零)。迭代结束后,我们有:

    xn=Kx02+y02(幅度)zn=z0+arctan⁡(y0/x0)(角度)xn​zn​​=Kx02​+y02​​(幅度)=z0​+arctan(y0​/x0​)(角度)​

4. 硬件实现与扩展

CORDIC算法的美妙之处在于其硬件实现的简洁性。它只需要三个寄存器(X, Y, Z)、两个移位器(用于产生 2−i2−i 项)和三个加法器/减法器。通过简单的序列控制,同一套硬件可以用于旋转和向量化模式,以及计算各种三角函数和反三角函数。

沃尔特在论文中还指出,通过改变角度序列 eiei​ 和参数 mm,该技术可以扩展到线性函数(m=0m=0,此时 ei=2−iei​=2−i)和双曲函数(m=−1m=−1,此时 )的计算。

5. 结论

CORDIC技术是一种高效的计算方法,特别适合于没有硬件乘法器的数字系统。它用简单的移位和加法操作取代了复杂的乘法运算,为实现三角函数、反三角函数、幅度计算等提供了强有力的工具。


补充说明

  1. 术语: “CORDIC” 是 Coordinate Rotation Digital Computer(坐标旋转数字计算机)的缩写。

  2. 后续发展: 沃尔特的原始论文主要关注三角计算。后来,约翰·R·沃尔特等人将CORDIC算法推广到双曲坐标系和线性坐标系,使其能够计算双曲函数、指数函数、对数函数等,极大地扩展了其应用范围。

  3. 现代应用: 尽管现代通用CPU拥有强大的浮点运算单元,CORDIC算法因其硬件实现简单、节省资源的特点,至今仍在数字信号处理器、FPGA、专用集成电路以及各种嵌入式系统中广泛应用,例如在软件定义的无线电、雷达处理和图形处理器中。

http://www.dtcms.com/a/521111.html

相关文章:

  • Miniconda介绍与安装
  • 服务器硬件设备都有哪些?
  • 中山市建设局网站窗口电话号码wordpress时间轴插件
  • JS逆向 - spiderdemo T6题(JSVMP喵喵盾、protobuf、css)纯算
  • 做怎样的企业网站480元做网站
  • 佛山做外贸网站开发一个电商网站
  • 我的世界做mc壁纸的网站网站建设背景是什么
  • MySQL Galera Cluster部署如何实现负载均衡和高可用
  • 唐山哪个公司做网站wordpress 新增页面
  • Cursor:GIT版本控制
  • 怎么把服务器做网站优秀网站设计 pdf
  • express框架 获取请求体数据
  • 用Python轻松提取视频音频并去除静音片段
  • 常德网站公司百度快速排名软件原理
  • 在blender中安装vtk插件
  • 河南做网站的费用做网站需要准备什么资料
  • 我国成功研制新型芯片:以更贴近人类直觉的计算方式,显著提升了计算效率并大幅降低能耗
  • 高级软考-系统架构设计师知识点3
  • 算法练习:前缀和专题
  • 网站建设与运营就业品牌推广与传播方案
  • 赣州网站建设哪家好加强网站建设的意义
  • 中国城市建设控股集团有限公司网站网站优化试卷
  • 网站建设框架模板下载网站运营一个月多少钱
  • 临漳企业做网站推广做中东服装有什么网站
  • 模块化有什么好处?
  • 算法训练.17
  • ESD整改实战手册:4 大核心措施(含 8kV/15kV 案例)+ 阿赛姆电子一站式方案助过测
  • 建站网络建立科技开发建筑工程资质合作
  • 建设信用卡银行商城网站学物联网工程后悔死了
  • Truffle 合约编译与部署:从.sol 文件到上链全流程