CORDIC算法是一种用于在硬件上实现各类数学函数计算的数字方法。最初于1959年由Jack Volder开发,以解决实时导航问题,后来其应用领域被扩展到更广泛的函数类别。CORDIC算法之所以流行,是因为它能通过简单的加法、减法和移位操作来得到结果,而不需要在FPGA上使用大型硬件乘法器,取而代之的是小型查找表(LUT)。它特别适用于需要大量三角函数计算的场合,例如合成孔径雷达(SAR)成像处理。
本文主要关注基于CORDIC算法的反正弦(arcsine)和反余弦(arccosine)函数的FPGA硬件实现。在计算这些反三角函数时,原版CORDIC算法存在缺点,即随着迭代次数的增加,结果的精度会受到影响。Mazenc和C通过使用“双迭代算法”解决了这个问题,但同时增加了计算的复杂性。T. Lang提出了一种方法,需要使用标准的CORDIC算法,并通过改进初始旋转向量和旋转方向的判断条件来节省两次迭代,并修正了之前算法的缺陷。
文章中提到的CORDIC算法的硬件实现一般涉及旋转模式,通过迭代逼近方法来计算各种数学函数。在旋转模式中,算法从一个初始向量开始,通过一系列迭代,该向量旋转到一个特定的角度。每次迭代通过向左或向右旋转一个小的角度来逼近目标角度,并通过乘以一个比例因子来补偿增益。CORDIC算法的迭代可以用数学方程精确表示,这些方程描述了角度旋转和向量缩放的过程。
本文通过对CORDIC算法进行改进,节省了两次迭代过程,并且提高了计算结果的准确性。改进方法包括修改迭代过程中的初始旋转向量以及旋转方向的判断条件。这种优化对于减少硬件资源的消耗具有重要意义,因为硬件资源是FPGA设计中的宝贵资产,尤其是对于那些需要在有限的硬件资源中实现复杂算法的场合。
通过减少所需的迭代次数,可以降低FPGA设计的复杂度,并且提高其运行效率。这对于实时系统,如SAR成像处理,特别重要,因为它们对算法的计算速度有很高的要求。因此,本文提出的改进方案不仅提高了结果的精度,而且对于减少系统功耗、降低成本和提高系统可靠性都有正面的影响。
本文的研究表明,通过优化算法中的关键参数和迭代逻辑,可以在不牺牲精度的前提下实现更高的计算效率和硬件资源利用率。这种优化策略对于推动FPGA在实时计算领域的应用具有重要的指导意义,并为解决其他涉及复杂数学运算的硬件设计问题提供了新的思路。