CORDIC迭代算法研究
杨治国+付俊
摘要:在实际的工程应用中,经常需要计算角度的三角函数运算,比如计算流水线型快速傅里叶变换处理器蝶形运算中的旋转因子,采用CORDIC迭代加法器,性能与直接采用乘法器相比性能损失很小,但可以大大节约数字面积。CORDIC的定点化运算中,迭代次数是算法的重要指标之一,其关系到算法的复杂度及计算误差。算法迭代次数与要求的数据精度相关,该文将实现CORDIC算法的旋转模式,利用迭代不同次数得到的值与精确值的误差进行比较来确定CORDIC算法需要进行的迭代次数。这样在节约计算量的同时,保证计算精度不受较大影响,从而在节约计算量的前提下保证CORDIC算法的性能。
关键词:CORDIC;定点化算法;旋转模式;向量模式
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2016)12-0090-02
1 CORDIC迭代算法简介
CORDIC[1][2]主要应用于直角坐标与极坐标的数值相互转换,其在特征值,快速傅里叶运算[3]的定点运算[4,5]有重要意义。CORDIC迭代算法的基本原理如图1所示:
4 结束语
从算法流程可知,快速傅里叶蝶形算法中旋转因子计算中,ROM不直接存储旋转因子的值,而是存储少量的单位旋转角度值 ,再通过CORDIC流水线循环迭代,得到所需的旋转角度值[θ];无需复数乘法器,每步运算可分解为简单的移位、相加来完成;为了保证CORDIC计算精度,需要考虑旋转因子位宽与迭代次数关系,如果迭代次数多大,影响CORDIC运算的复杂度,次数不足,则影响CORDIC运算的精度。本文仿真验证了迭代次数与位宽的关系。当然后续也可以利用门限阀值对迭代性能做进一步研究。
参考文献:
[1] Andraka R.A Survey of Cordic Algorithms for FPGA Based Computers[C]. Proceedings of the ACM/SIGDA 6th International Symposium on Field Programmable Gate Arrays (FPGA '98) ,1998.
[2] 耿丹.CORDIC算法研究与实现[J].论文与技术报告:2007(S1):39-40.
[3] 彭清兵,李方军.基于CORDIC算法的FFT处理器设计[J].工程应用技术与实现,2011(23):208-209.
[4] 孙明革,陈靖.CORDIC算法在定点DSP中的应用[J].吉林化工学院学报,2012(5):61-62.
[5] Martin Uhlmann, Keshab K P.A high-speed CORDIC algorithm and architecture for DSP application[J]. IEEE,2005,52:1-5.
[6] Granado J, Torralba A, Chavez J,et al. Optimization of CORDIC cells in the backward circular rotation mode[J].AEU-International Journal of Electronics and Communications, 2007,61:337-340
[7] 王建军,徐力,安鹏.基于CORDIC的频偏估计幅角计算算法[J].技术与方法,2014(7):77-78.
[8] 梁源,王兴华.一种基于贪婪算法的CORDIC改进算法[J].电讯技术,2014(3):313-314.