APP下载

流水线 CORDIC算法的 FPGA实现

2010-09-13王亚春蔡德林张梦龙王俊

通信技术 2010年11期

王亚春, 蔡德林, 张梦龙, 王俊

(①安徽大学电子科学与技术学院,安徽 合肥 230039;②中国电子科技集团第 38研究所,安徽 合肥 200031)

0 引言

坐标旋转计算机(CORDIC,Coordinate Rotational Digital Computer)算法是 Volder于 1959年在美国航空控制系统的设计中提出来的,它是一种用于计算运算函数的循环迭代算法。其基本思想是用一系列与运算基数相关的角度的不断偏摆,从而逼近所需旋转的角度,从广义上讲它是一个数值计算逼近的方法。这些固定的角度与计算基数有关,运算只有移位和加减,可通过该算法不同的实现模式(如圆周模式、双曲线模式、线性模式等)来计算的函数包括乘、除、平方根、正余弦、反正切以及指数运算等。1971年,J.S Walther提出了统一的CORDIC算法形式,把圆周旋转、双曲旋转和直线旋转统一到同一个CORDIC迭代方程中,为同一硬件实现多功能运算奠定了基础。在传统的硬件算法设计中,乘、除等基本数学函数运算是一种既耗时又占用面积大的运算,CORDIC算法正是为解决这种问题而产生的,它从算法本身入手,将复杂的算法分解成一些在硬件中容易实现的基本运算,如加法、移位等,从而使得这些算法在硬件上可以得到较好的实现。

1 CORDIC算法的基本原理

以基于圆周模式的 CORDIC算法实现为例,介绍CORDIC算法的基本原理[1]。假设平面直角坐标系里有一向量:a(xi,yi)=a(r cosα,r sinα),现将其旋转 θ角得到新向量:b(xj,yj)=b(r cos(α+θ),r sin(α+θ)),如图 1所示,则有:

图 1 CORDIC算法旋转示意

写成矩阵形式就是:

如果向量 a(xi,yi)经过 n次旋转才到达 b(xi,yi),其中第 k次旋转的角度为 θk,那么第 k次旋转的表达式为:

如果限制 tanθk=±2-k,则可以将 tanθk乘项的乘法操作变为移位操作,式(3)将只有一个乘积项 cosθk:

登录APP查看全文