CN106814990A - Cordic算法的优化方法 - Google Patents

Cordic算法的优化方法 Download PDF

Info

Publication number
CN106814990A
CN106814990A CN201710041104.0A CN201710041104A CN106814990A CN 106814990 A CN106814990 A CN 106814990A CN 201710041104 A CN201710041104 A CN 201710041104A CN 106814990 A CN106814990 A CN 106814990A
Authority
CN
China
Prior art keywords
optimization method
cordic algorithm
binary coding
recompiled
coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710041104.0A
Other languages
English (en)
Inventor
汪辉
史凯杰
田犁
章琦
汪宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Advanced Research Institute of CAS
Original Assignee
Shanghai Advanced Research Institute of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Advanced Research Institute of CAS filed Critical Shanghai Advanced Research Institute of CAS
Priority to CN201710041104.0A priority Critical patent/CN106814990A/zh
Publication of CN106814990A publication Critical patent/CN106814990A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5446Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供一种CORDIC算法的优化方法,包括:1)对输入角度值θ进行区间转换,以将所述输入角度值θ转换到第一象限[0,45°]区间;2)根据公式对所述输入角度值θ进行编码,得到系数sn的二进制编码S=s0s1s2...sn;3)依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码,并在需要重新编码时将所述二进制编码S进行重新编码;4)依据公式进行迭代运算。本发明的CORDIC算法的优化方法可以减少一半的迭代运算,节省近一半的运算单元,极大提升了运算速度,节省所需计算资源,对于DSP及FPGA应用具有重大意义。

Description

CORDIC算法的优化方法
技术领域
本发明属于数字处理技术领域,特别是涉及一种CORDIC算法的优化方法。
背景技术
坐标旋转数字式计算机(Coordinate Rotation Digital Computer)算法,是J.D.Volder1于1959年首次提出。在上个世纪五十年代,在大型实际计算机中的实行移位相加受到了当时技术的限制,所以使用CORDIC变得非常必要。到了七十年代,HewlettPackard和其他公司出产了手持式计算器,许多计算器使用内部一个CORDIC单元来计算所有的三角函数。随着八十年代高速乘法器与带有大存储量的通用处理器的出现,CORDIC算法变得无关紧要了。然而在二十一世纪的今天,对于FPGA来说,CORDIC一定是DSP应用中(诸如多输入多输出(MIMO),波束形成以其他自适应系统)计算三角函数的备选技术。
CORDIC算法的基本思想是通过一系列固定的、与运算基数相关的角度不断偏摆以逼近所需的旋转角度。为了扩展可解决的基本函数个数,1971年J.Walther提出了统一CORDIC算法(The Unified Cordic Algorithms),把圆周旋转、双曲旋转和直线旋转统一到同一个迭代方程里,因此可以通过选择不同的m值(如图1 CORDIC算法的操作模式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应用具有重大意义;同时,本发明的CORDIC算法的优化方法优化后的计算结果具有较高的精确度。
附图说明
图1显示为现有技术中的CORDIC算法的操作模式图。
图2显示为本发明提供的CORDIC算法的优化方法的流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图2。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,虽图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的形态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
请参阅图1,本发明提供一种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。
作为示例,步骤1)包括以下步骤:
1-1)将输入角度值θ转换到第一象限;
1-2)依据公式将所述输入角度值θ转换到第一象限[0,45°]区间。
作为示例,步骤2)中,在对输入角度值θ进行迭代之前,用一组基和二进制编码S=s0s1s2...sn表示所述输入角度值θ;这里需要使用一个m位的ROM表存储这组基其中,表示不小于的最小整数。在所述二进制编码S中0的位数越多,输入角度值θ用越少的基表示,CORDIC算法后续所需迭代步骤减少的越多。考虑到最坏的情况此时迭代操作并没有减少,因此需要对所述二进制编码S进行优化以达到所述二进制编码S中“多0少1”。
作为示例,步骤3)中,依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码具体方法为:将所述二进制编码S中0的位数记为t,当时不需要将所述二进制编码S进行重新编码,当时将所述二进制编码S进行重新编码;即当所述二进制编码S中0的位数大于或等于总位数的一半时,则不需要将所述二进制编码S进行重新编码,当所述二进制编码S中的位数小于总位数的一半时,则需要将所述二进制编码S进行重新编码。
作为示例,将所述二进制编码S进行重新编码的方式为取所述二进制编码S的反码具体为:
其中,“=”表示赋值。由上式可推导出S中只要有[n/2]中个“0”([n/2]表示不小于n/2的最小整数)。
作为示例,步骤4)中,进行迭代运算之后还包括将迭代运算的结果进行修正的步骤。具体的,将迭代运算的结果进行修正的具体方法为:将迭代运算的结果乘以一增益常数k进行修正,其中,
作为示例,CORDIC算法主要用于计算三角函数、指数等超越函数,可通过设置不同的初始值来求解具体的函数,在一示例中,初始值设置为:Y0=0,输入所述输入角度值θ,可以求出Xn=cosθ,Yn=sinθ。
作为示例,当步骤3)中需要将所述二进制编码S进行重新编码时,本实施例中,将所述二进制编码S反码得到Xn、Yn是计算输入角度为的结果,因此,最后求出的步骤4)之后还包括将步骤4)得到的结果进行调整的步骤,调整的具体方法为:记S0=111...11,与S0对应的输入角度值记为θ0,依据公式将步骤4)得到的结果进行调整。在实际过程中,一旦计算精度确定,迭代次数n即可确定,S0和θ0也随之确定。依据CORDIC算法具体邱珏的函数和上述调整公式即可求出最后的精确值。以三角函数为例,有如下关系式:
式中cosθ0、sinθ0、exp(θ0)均可预先求出存入ROM表中,最后求解时直接调用即可。
本发明通过对输入角度值的区间转换、编码和重新编码以及最后的迭代运算,虽然增加了编码操作、序列检测以及存储系数的ROM表,但节省了一半左右的迭代运算,相较于传统的CORDIC采用流水线结构实现,每次迭代需要两次移位运算、一次查找表、三次加法运算,而随着计算精度提高和迭代次数增多,本发明的CORDIC算法的优化方法将会节省一半迭代运算,所节省总的计算资源也能趋于50%。
综上所述,本发明提供一种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算法的优化方法可以减少一半的迭代运算,节省近一半的运算单元,极大提升了运算速度,节省所需计算资源,对于DSP及FPGA应用具有重大意义;同时,本发明的CORDIC算法的优化方法优化后的计算结果具有较高的精确度。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (9)

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)中,依据所述二进制编码S中0的位数判断是否将所述二进制编码进行重新编码具体方法为:将所述二进制编码S中0的位数记为t,当时不需要将所述二进制编码S进行重新编码,当时将所述二进制编码S进行重新编码。
5.根据权利要求1或4所述的CORDIC算法的优化方法,其特征在于:步骤3)中,将所述二进制编码S进行重新编码的方式为取所述二进制编码S的反码
6.根据权利要求1所述的CORDIC算法的优化方法,其特征在于:步骤4)中,进行迭代运算之后还包括将迭代运算的结果进行修正的步骤。
7.根据权利要求6所述的CORDIC算法的优化方法,其特征在于:将迭代运算的结果进行修正的具体方法为:将迭代运算的结果乘以一增益常数k进行修正,其中,
8.根据权利要求7所述的CORDIC算法的优化方法,其特征在于:步骤4)中,Y0=0。
9.根据权利要求1至8中任一项所述的CORDIC算法的优化方法,其特征在于:当步骤3)中需要将所述二进制编码S进行重新编码时,步骤4)之后还包括将步骤4)得到的结果进行调整的步骤,调整的具体方法为:记S0=111...11,与S0对应的输入角度值记为θ0,依据公式将步骤4)得到的结果进行调整。
CN201710041104.0A 2017-01-17 2017-01-17 Cordic算法的优化方法 Pending CN106814990A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710041104.0A CN106814990A (zh) 2017-01-17 2017-01-17 Cordic算法的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710041104.0A CN106814990A (zh) 2017-01-17 2017-01-17 Cordic算法的优化方法

Publications (1)

Publication Number Publication Date
CN106814990A true CN106814990A (zh) 2017-06-09

Family

ID=59111788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710041104.0A Pending CN106814990A (zh) 2017-01-17 2017-01-17 Cordic算法的优化方法

Country Status (1)

Country Link
CN (1) CN106814990A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032562A (zh) * 2018-06-14 2018-12-18 浙江大学 低时延高频单向旋转的cordic算法装置及算法
CN111061455A (zh) * 2019-12-04 2020-04-24 广东省新一代通信与网络创新研究院 一种三角函数cordic迭代运算协处理器
CN111984227A (zh) * 2020-08-26 2020-11-24 南京大学 一种针对复数平方根的近似计算装置及方法
CN112748401A (zh) * 2020-12-28 2021-05-04 中国科学院大学 一种实时权值产生方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032562A (zh) * 2018-06-14 2018-12-18 浙江大学 低时延高频单向旋转的cordic算法装置及算法
CN109032562B (zh) * 2018-06-14 2020-12-08 浙江大学 低时延高频单向旋转的cordic算法装置及算法
CN111061455A (zh) * 2019-12-04 2020-04-24 广东省新一代通信与网络创新研究院 一种三角函数cordic迭代运算协处理器
CN111984227A (zh) * 2020-08-26 2020-11-24 南京大学 一种针对复数平方根的近似计算装置及方法
CN111984227B (zh) * 2020-08-26 2023-10-13 南京大学 一种针对复数平方根的近似计算装置及方法
CN112748401A (zh) * 2020-12-28 2021-05-04 中国科学院大学 一种实时权值产生方法
CN112748401B (zh) * 2020-12-28 2024-02-06 中国科学院大学 一种实时权值产生方法

Similar Documents

Publication Publication Date Title
Gustafson et al. Beating floating point at its own game: Posit arithmetic
CN106814990A (zh) Cordic算法的优化方法
US6385632B1 (en) Fast CORDIC algorithm with sine governed termination
Shukla et al. Low latency hybrid CORDIC algorithm
CN107305484B (zh) 一种非线性函数运算装置及方法
CN103677738A (zh) 基于混合模式cordic算法的低延时基本超越函数实现方法及装置
CN104375802A (zh) 一种乘除法器及运算方法
CN105354006A (zh) 一种非线性函数的快速运算装置及其方法
CN103488459B (zh) 一种改进的高基cordic方法及基于其的复数乘法运算单元
Nguyen et al. A high-performance, resource-efficient, reconfigurable parallel-pipelined FFT processor for FPGA platforms
Zhu et al. Low latency and low error floating-point sine/cosine function based TCORDIC algorithm
CN109739470A (zh) 一种基于2型双曲cordic任意指数函数的计算系统
Dianov et al. Review of fast square root calculation methods for fixed point microcontroller-based control systems of power electronics
US20040267853A1 (en) Method and apparatus for implementing power of two floating point estimation
Lai et al. A hybrid number system processor with geometric and complex arithmetic capabilities
Salehi et al. Novel design for a low-latency CORDIC algorithm for sine-cosine computation and its Implementation on FPGA
CN108037906A (zh) 基于tcordic算法的浮点基本函数实现方法及装置
CN104102471B (zh) 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法
Hsiao et al. Design of hardware function evaluators using low-overhead nonuniform segmentation with address remapping
US20030149712A1 (en) Higher precision divide and square root approximations
CN111984226B (zh) 一种基于双曲cordic的立方根求解装置及求解方法
Wang Design and implementation of CORDIC algorithm based on FPGA
Mehta et al. High speed SRT divider for intelligent embedded system
Wu et al. Low-latency low-complexity method and architecture for computing arbitrary Nth root of complex numbers
CN110096672A (zh) 基于fpga的低成本流水线型fft处理器实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170609

RJ01 Rejection of invention patent application after publication