一种改进CORDIC算法的研究与实现
2011-01-10段素蓉
段素蓉
(西南交通大学信息科学与技术学院,四川成都 610031)
0 引 言
三角函数的坐标旋转数字计算机(Coordinate Rotation Digital Computer,CORDIC)算法最早是由Volder于1959年提出,主要应用于实时导航的数字处理[1],通过扩展,该方法现已应用于众多领域,如风力发电、航空航天、雷达信号处理、图像处理、数字滤波以及通信设备等[2-4].
基本CORDIC算法的思路为:设定一个旋转角度,经过多步旋转迭代,最终计算出三角函数值.该方法由于迭代公式的选取限制了最大旋转角度,所以旋转角度不能覆盖整个周期(-π~+π),导致部分角度计算出的三角函数值偏差较大,在应用中存在较大误差[5-8].本文利用三角函数的对称性,对输入角度进行了预处理,把角度限制在基本CORDIC算法能正确计算的范围内,再对迭代结果进行后处理,实现了完整周期(-π~+π)的三角函数计算.算法采用18级流水线结构实现,具有转换速度快,精度高,占用资源少等特点.
1 CORDIC算法原理及改进
1.1 CORDIC算法原理
假设在直角坐标系下有向量(Xi,Yi),按图1所示的方向旋转角度θ得到向量(Xj,Yj),则二者关系为,

图1 坐标旋转图

使用迭代的方法,坐标需要旋转的角度可通过多步旋转叠加完成(见图2).根据多步旋转叠加完成

图2 多次旋转叠加示意图
平面坐标旋转,则式(1)可进一步转化为,


假设,tanθn= Sn/22,则,θn= Snarctan(1/2n).这里,Sn={-1;+1},当Sn=-1时,表示向量逆时针旋转,否则为顺时针旋转.式(2)中的cosθn= cos(arctan(1/2n)).随着旋转次数的增加,该式收敛为一个常数,k≈0.607253.如果令 Y的初始分量为0,X的初始分量为单位1,则有,

当 n→∞时,CORDIC公式的输出变为,

1.2 改进CORDIC算法设计

基本CORDIC算法……