CORDIC算法的优化方法技术

技术编号:15615734 阅读:36 留言:0更新日期:2017-06-14 03:17
本发明专利技术提供一种CORDIC算法的优化方法,包括:1)对输入角度值θ进行区间转换,以将所述输入角度值θ转换到第一象限[0,45°]区间;2)根据公式

【技术实现步骤摘要】
CORDIC算法的优化方法
本专利技术属于数字处理
,特别是涉及一种CORDIC算法的优化方法。
技术介绍
坐标旋转数字式计算机(CoordinateRotationDigitalComputer)算法,是J.D.Volder1于1959年首次提出。在上个世纪五十年代,在大型实际计算机中的实行移位相加受到了当时技术的限制,所以使用CORDIC变得非常必要。到了七十年代,HewlettPackard和其他公司出产了手持式计算器,许多计算器使用内部一个CORDIC单元来计算所有的三角函数。随着八十年代高速乘法器与带有大存储量的通用处理器的出现,CORDIC算法变得无关紧要了。然而在二十一世纪的今天,对于FPGA来说,CORDIC一定是DSP应用中(诸如多输入多输出(MIMO),波束形成以其他自适应系统)计算三角函数的备选技术。CORDIC算法的基本思想是通过一系列固定的、与运算基数相关的角度不断偏摆以逼近所需的旋转角度。为了扩展可解决的基本函数个数,1971年J.Walther提出了统一CORDIC算法(TheUnifiedCordicAlgorithms),把圆周旋转、双曲旋转和直线旋转统一到同一个迭代方程里,因此可以通过选择不同的m值(如图1CORDIC算法的操作模式m所示)来实现多种不同的计算功能,设计通用的CORDIC芯片。CORDIC算法可计算的函数包括乘、除、平方根、正弦、余弦、反正切、向量旋转(即复数乘法)、坐标转换、指数运算以及FFT、DHT、DFT、DCT、DST等技术函数。通常完成这些变换通过两类方法:第一类是专用硬件电路或专用数字信号处理器,通常采用比较或查表的方法,这类方法一般来说运算结构精度低、芯片面积大,更为关键的是设计的灵活性差;第二类则采用软件编程的方法,由于这些变换均是非线性变换,完成一次运算需要运行较多的程序,运算速度较低。上述两种方法在精度、速度、简单性和效率方面都不能兼顾,难以满足现代高速实时信号处理的要求。相比之下,CORDIC算法很好地兼顾了这几方面,非常适合FPGA的实现。对于传统的硬件算法设计中既耗时又占用面积大的乘、除等基本数学函数运算,CORDIC算法将其分解成为一些简单的且在硬件中容易实现的基本算法,如加法、移位等,使得这些算法在硬件上可以很好的实现。此外,该算法是一种规则化的算法,它满足了硬件对算法的模块化、规则化的要求,因此CORDIC算法可以充分发挥硬件的优势,利用硬件的资源,从而实现硬件与算法相结合的一种优化方法。目前CORDIC算法存在的主要问题:(1)CORDIC算法主要可通过迭代结构和流水线结构来实现。迭代结构使用一个算法单元,将输出反馈到输入反复迭代计算。这种结构节省计算资源,可以实现可调算法精度,但是运行速度慢;流水线结构是将迭代结构展开采用n个算法单元,这将大大提高系统速度,每增加一次迭代精度提高一位,理论上可以通过增加迭代次数无限制提高精度,但是精度受流水线级数的限制,要提高精度必须增加流水线级数,而随着流水线级数的增加,系统面积成指数级增长。(2)CORDIC算法在每一级迭代中都需要在表ROM中取出事先预存好的arctan(2-i)值。但是随着运算字长的扩大,ROM表的容量成指数增长,系统所占资源急剧加大,每次访问ROM表也会降低系统速度。(3)传统CORDIC算法的旋转角度覆盖的角度只有-99.88°~99.88°,为了确保算法收敛,其所有旋转角度之和必须大于实际需要旋转的角度,因此无法覆盖整个周期0°≤θ≤360°。由于CORDIC算法本身的局限性,曾提出过多种改进和优化措施,主要技术总结如下:(1)增加多次的迭代,使得算法旋转覆盖的角度范围达到一个完整的周期[0,2π]。(2)跳过不必要的旋转。跳过输入相位值中为0的位对应的旋转,减少了迭代次数,并且只有正向旋转。对于特殊角度,例如π/4,通过很少次数的旋转就己经达到该角度,即可不再进行后面的旋转。(3)用几位最高有效数字来决定旋转的方向。然而以上种技术主要针对CORDIC算法角度覆盖范围和运算速度方面的局限性对其进行改进,有效地优化了传统的CORDIC算法。但是,每种改进方法也同时引入了一些新的问题,例如方法1中校正因子为变量,很难确定其值;方法2不能显著的减少迭代次数方法;方法3能有效的减少迭代次数,但是会引起比例因子的变化。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种CORDIC算法的优化方法,用于解决现有技术中CORDIC算法的优化方法存在的不能显著减少迭代次数的问题,以及校正因子为变量、减少迭代次数的同时引起比例因子的变化而导致的计算精度不高的问题。为实现上述目的及其他相关目的,本专利技术提供一种CORDIC算法的优化方法,所述CORDIC算法的优化方法包括以下步骤:1)对输入角度值θ进行区间转换,以将所述输入角度值θ转换到第一象限[0,45°]区间;2)根据公式对所述输入角度值θ进行编码,得到系数sn的二进制编码S=s0s1s2...sn;其中,系数sn为所述二进制编码S中第n位上的0或1;3)依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码,并在需要重新编码时将所述二进制编码S进行重新编码;4)依据公式进行迭代运算,其中,sn为所述二进制编码S中第n位上的0或1,或为所述二进制编码S重新编码后第n位上的0或1。作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤1)包括以下步骤:1-1)将输入角度值θ转换到第一象限;1-2)依据公式将所述输入角度值θ转换到第一象限[0,45°]区间。作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤2)中,使用m位的ROM表存储其中,表示不小于的最小整数。作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤3)中,依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码具体方法为:将所述二进制编码S中0的位数记为t,当时不需要将所述二进制编码S进行重新编码,当时将所述二进制编码S进行重新编码。作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤3)中,将所述二进制编码S进行重新编码的方式为取所述二进制编码S的反码作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤4)中,进行迭代运算之后还包括将迭代运算的结果进行修正的步骤。作为本专利技术的CORDIC算法的优化方法的一种优选方案,将迭代运算的结果进行修正的具体方法为:将迭代运算的结果乘以一增益常数k进行修正,其中,作为本专利技术的CORDIC算法的优化方法的一种优选方案,步骤4)中,Y0=0。作为本专利技术的CORDIC算法的优化方法的一种优选方案,当步骤3)中需要将所述二进制编码S进行重新编码时,步骤4)之后还包括将步骤4)得到的结果进行调整的步骤,调整的具体方法为:记S0=111...11,与S0对应的输入角度值记为θ0,依据公式将步骤4)得到的结果进行调整。如上所述,本专利技术的CORDIC算法的优化方法,具有以下有益效果:本专利技术的CORDIC算法的优化方法可以减少一半的迭代运算,节省近一半的运算单元,极大提升了运算速度,节省所需计算资源,对于DSP及FPGA应用具有重大意义;同时,本专利技术的CO本文档来自技高网
...
CORDIC算法的优化方法

【技术保护点】
一种CORDIC算法的优化方法,其特征在于,所述CORDIC算法的优化方法包括以下步骤:1)对输入角度值θ进行区间转换,以将所述输入角度值θ转换到第一象限[0,45°]区间;2)根据公式

【技术特征摘要】
1.一种CORDIC算法的优化方法,其特征在于,所述CORDIC算法的优化方法包括以下步骤:1)对输入角度值θ进行区间转换,以将所述输入角度值θ转换到第一象限[0,45°]区间;2)根据公式sn={0,1}对所述输入角度值θ进行编码,得到系数sn的二进制编码S=s0s1s2...sn;其中,系数sn为所述二进制编码S中第n位上的0或1;3)依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码,并在需要重新编码时将所述二进制编码S进行重新编码;4)依据公式进行迭代运算,其中,sn为所述二进制编码S中第n位上的0或1,或为所述二进制编码S重新编码后第n位上的0或1。2.根据权利要求1所述的CORDIC算法的优化方法,其特征在于:步骤1)包括以下步骤:1-1)将输入角度值θ转换到第一象限;1-2)依据公式将所述输入角度值θ转换到第一象限[0,45°]区间。3.根据权利要求1所述的CORDIC算法的优化方法,其特征在于:步骤2)中,使用m位的ROM表存储其中,表示不小于的最小整数。4.根据权利要求1所述的CORDIC算法的优化方法,其特征在于:步骤3)中,依据所述...

【专利技术属性】
技术研发人员:汪辉史凯杰田犁章琦汪宁
申请(专利权)人:中国科学院上海高等研究院
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1