当前位置:硬件测评 > 三角函数计算、Cordic算法介绍

三角函数计算、Cordic算法介绍

  • 发布:2023-10-05 15:35

-->

[-]

  1. 三角函数计算的Cordic算法简介

    1. 从二分查找法开始
    2. 减少乘法
    3. 消除乘法

三角函数计算、Cordic算法介绍

三角函数的计算是一个复杂的课题。在计算机出现之前,人们通常通过查三角函数表来计算任意角度的三角函数值。此类表格自三角函数诞生之初就已存在,它们通常是通过从已知值(例如 sin(π/2)=1)开始并重复应用半角和与差公式来生成的。

现在有了计算机,三角函数表也被引入了历史舞台。但像我这样喜欢追根究底的人不禁想知道计算机是如何计算三角函数的值的。最容易想到的方法是使用级数展开(例如泰勒级数)来逼近三角函数。只要项数足够,就可以以任意精度逼近函数值。除了泰勒级数逼近之外,还有很多其他的逼近方法,例如切比雪夫逼近、最佳一致逼近和Padé逼近等。

所有这些逼近方法本质上都是利用多项式函数来逼近我们要计算的三角函数,计算过程中必然会涉及到大量的浮点运算。在缺乏硬件乘法器的简单设备(例如没有浮点单元的微控制器)上,使用这些方法计算三角函数可能非常耗时。为了解决这个问题,J. Volder于1959年提出了一种快速算法,称为CORDIC(坐标旋转数字计算机)算法。该算法仅使用移位和加减运算来计算常用三角函数的值,例如Sin、Cos、Sinh、Cosh等函数。 J. Walther于1974年进一步改进了该算法,使其能够计算多种超越函数,这进一步扩展了Cordic算法的应用范围。由于Cordic算法仅使用移位和加法,很容易用纯硬件实现,因此我们经常可以在FPGA计算平台上看到它。然而,大多数软件程序员从未听说过这种算法,也不会主动使用它。其实,在开发嵌入式软件时,尤其是在没有浮点运算指令的嵌入式平台(如定点DSP)上进行开发时,还是会遇到可以使用Cordic算法的情况,所以要掌握基本的Cordic算法。还是有用的。

相关文章