CN107423026B - 一种正余弦函数计算的实现方法及装置 - Google Patents

一种正余弦函数计算的实现方法及装置 Download PDF

Info

Publication number
CN107423026B
CN107423026B CN201710265266.2A CN201710265266A CN107423026B CN 107423026 B CN107423026 B CN 107423026B CN 201710265266 A CN201710265266 A CN 201710265266A CN 107423026 B CN107423026 B CN 107423026B
Authority
CN
China
Prior art keywords
calculation
angle
sine
bit
multiplier
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.)
Active
Application number
CN201710265266.2A
Other languages
English (en)
Other versions
CN107423026A (zh
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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201710265266.2A priority Critical patent/CN107423026B/zh
Publication of CN107423026A publication Critical patent/CN107423026A/zh
Application granted granted Critical
Publication of CN107423026B publication Critical patent/CN107423026B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/548Trigonometric functions; Co-ordinate transformations

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开一种正余弦函数计算的实现方法及装置,步骤包括:1)判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度输出;2)对目标计算角度采用TCORDIC算法执行正弦或余弦函数的计算,且当目标计算角度与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC算法完成正余弦函数的计算;该装置包括角度压缩单元以及TCORDIC计算单元。本发明能够实现任意角度的正弦、余弦函数的计算,且具有实现方法简单、计算复杂度低,计算效率以及精度高等优点。

Description

一种正余弦函数计算的实现方法及装置
技术领域
本发明涉及函数计算技术领域,尤其涉及一种正余弦函数计算的实现方法及装置。
背景技术
正余弦函数计算是科学计算和工程应用程序的重要组成部分,此类计算通常要求计算结果的误差能够达到很小,且需要能够适用于任意的输入角度范围。CORDIC(COordinate Rotation DIgital Computer,坐标旋转数字计算机)是一种用于计算多种超越函数的数字迭代算法,CORDIC算法通过简单的加法和移位操作就可以完成三角函数函数的计算,并且该算法规整、结构简单,可以容易的在硬件上实现,表达式如下所示:
Figure BDA0001275861070000011
其中X0=Kn,Y0=0,Z0∈[0,π/2],迭代结果等于正弦余弦的值。
正余弦函数计算时,输入角度ZR经过CORDIC算法计算后得到cos(ZR)和sin(ZR),最后由Q和输入角度Z符号SZ得到cos(Z)和sin(Z),角度与象限对应关系如表1所示,表中SZ为正。
表1:角度与象限对应关系表。
Domain Q[1:0l sin(Z) cos(Z)
[0,π/2] 00 sin(Z<sub>R</sub>) cos(Z<sub>R</sub>)
[π/2,π] 01 cos(Z<sub>R</sub>) -sin(Z<sub>R</sub>)
[π,3π/2] 10 -sin(Z<sub>R</sub>) -cos(Z<sub>R</sub>)
[3π/2r2π] II -cos(Z<sub>R</sub>) sin(Z<sub>R</sub>)
但是采用CORDIC算法计算正余弦函数时,因为有限的操作数位宽和迭代次数会产生误差,在输入角度属于ZRε[0,π/2]时,当输入角度ZR趋近于0或者π/2,采用CORDIC算法的计算结果浮点相对误差较大,造成最终的计算结果误差较大。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够实现任意角度正弦、余弦函数计算,且实现方法简单、计算复杂度低,计算效率以及精度高的正余弦函数计算的实现方法及装置。
为解决上述技术问题,本发明提出的技术方案为:
一种正余弦函数计算的实现方法,步骤包括:
1)角度压缩:判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度输出;
2)TCORDIC计算:对目标计算角度采用TCORDIC算法执行正弦或余弦函数的计算,且当目标计算角度与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC算法完成正余弦函数的计算。
作为本发明方法的进一步改进,所述步骤1)中对输入角度进行压缩的具体步骤为:
1.1)预处理:根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
1.2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
1.3)规格化:获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过规格化得到指数
Figure BDA0001275861070000021
和尾数
Figure BDA0001275861070000022
输出;
1.4)π/2截断乘法运算:将所述尾数
Figure BDA0001275861070000023
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
作为本发明方法的进一步改进,所述步骤1.1)的具体步骤为:
1.1)分别获取所述指数EZ的高位、低位,根据获取到的所述指数EZ的高位从2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
1.2)将获取的所述指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
作为本发明方法的进一步改进,所述步骤1.2)中具体采用
Figure BDA0001275861070000024
位截断乘法器执行2/π乘法运算,其中LC为所述区间C的长度,
Figure BDA0001275861070000025
为待压缩角度Z的尾数MZ的长度;所述采用截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure BDA0001275861070000026
位和小数位的低
Figure BDA0001275861070000027
位截断不输出,输出中间
Figure BDA0001275861070000028
位计算结果。
作为本发明方法的进一步改进:所述步骤4)中具体采用
Figure BDA0001275861070000029
位截断乘法器执行π/2乘法运算,其中
Figure BDA00012758610700000210
为所述第一尾数
Figure BDA00012758610700000211
的长度,LD为乘数D的长度;所述采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
作为本发明方法的进一步改进:所述步骤2)中Taylor展开式完成正弦或余弦函数的计算时,具体采用截断乘法器完成Taylor展开式中前两项的计算。
作为本发明方法的进一步改进:所述步骤2)中使用CORDIC计算完成正余弦函数的计算时,将X和Y通路中前半部分采用基于CSA的迭代计算进行计算、后半部分采用基于CSA的并行迭代计算进行计算;所述步骤2)中使用CORDIC算法完成正余弦函数的计算时,Z通路基于符号预测进行计算。
一种正余弦函数计算的实现装置,包括:
角度压缩单元,用于判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度ZR输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度ZR输出;
TCORDIC计算单元,用于对目标计算角度ZR采用TCORDIC算法执行正弦或余弦函数的计算,且当压缩后角度ZR与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC计算完成正余弦函数的计算。
作为本发明装置的进一步改进,所述角度压缩单元包括:
预处理模块,用于根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
规格化模块,用于获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过规格化得到指数
Figure BDA0001275861070000031
和尾数
Figure BDA0001275861070000032
输出;
π/2截断乘法运算模块,用于将所述尾数
Figure BDA0001275861070000033
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
作为本发明装置的进一步改进,所述2/π截断乘法运算模块具体采用
Figure BDA0001275861070000034
位截断乘法器,其中LC为所述区间C的长度,
Figure BDA0001275861070000035
为待压缩角度Z的尾数MZ的长度;所述
Figure BDA0001275861070000036
位截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure BDA0001275861070000037
位和小数位的低
Figure BDA0001275861070000038
位截断不输出,输出中间
Figure BDA0001275861070000039
位计算结果;
所述π/2截断乘法运算模块中具体采用
Figure BDA00012758610700000310
位截断乘法器,其中
Figure BDA00012758610700000311
为所述第一尾数
Figure BDA00012758610700000312
的长度,LD为乘数D的长度;所述
Figure BDA00012758610700000313
位截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位;
所述TCORDIC计算单元包括Taylor展开式模块以及CORDIC计算模块,当目标计算角度ZR与0度或π/2度之间的差值小于指定阈值时,执行所述Taylor展开式模块,否则执行CORDIC计算模块。
与现有技术相比,本发明的优点在于:
1)本发明通过首先将输入角度压缩至[0,π/2]范围内,再采用TCORDIC算法执行正弦或余弦函数的计算,能够实现任意单精度、双精度角度正余弦函数的高效计算,同时TCORDIC计算过程中结合CORDIC算法和Taylor算法实现,使得当目标计算角度接近0度或π/2度时,利用Taylor展开式计算,同时充分利用CORDIC算法精确计算0度至π/2度范围内其他角度的正余弦函数,从而使得在0度或π/2度以及0度至π/2度整个范围内时均能够实现高精度正弦、余弦函数计算;
2)本发明结合TCORDIC计算,基于硬件流水结构首先实现任意浮点输入角度的压缩,角度压缩过程中通过先确定2/π中需要参与乘法运算的区间,再采用截断乘法器执行2/π乘法运算、以及使用截断乘法器执行π/2乘法运算,以优化乘法器的位宽,能够在保证压缩精度的同时,有效减少参与压缩过程中乘法运算的位数,大大减少了角度压缩阶段所需的乘法器硬件开销,从而能够在保证计算精度的同时,最大限度的减少正余弦函数整个计算过程的复杂度及硬件开销;
3)本发明使用2/π截断乘法器执行2/π乘法运算,以及π/2截断乘法器执行π/2乘法运算的基础上,通过采用
Figure BDA0001275861070000041
位截断乘法器执行2/π乘法运算,以及采用
Figure BDA0001275861070000042
位截断乘法器执行π/2乘法运算,优化2/π截断乘法器、π/2截断乘法器的位宽,能够进一步减少压缩的硬件开销,同时提高浮点角度压缩的精度,从而进一步减少正余弦函数计算的开销、提高计算精度;
4)本发明使用CORDIC计算完成正余弦函数的计算时,将X和Y通路中前半部分采用基于CSA的迭代计算进行计算、后半部分采用基于CSA的并行迭代计算进行计算,Z通路基于符号预测进行计算,能够消除数据相关,同时高精度、低延时的函数计算。
附图说明
图1是本实施例正余弦函数计算的实现方法的实现流程示意图。
图2是本实施例步骤1)中对输入角度进行压缩的实现流程示意图。
图3是使用位宽被优化的乘法器执行2/π乘法运算时第一种计算部分的原理示意图。
图4是使用位宽被优化的乘法器执行2/π乘法运算时第二种计算部分的原理示意图。
图5是使用截断乘法器执行π/2乘法运算所需计算部分的原理示意图。
图6是本发明具体实施例中所采用的角度压缩单元的结构示意图。
图7是本发明具体实施例中所采用的TCORDIC计算单元中预处理模块的结构示意图。
图8是本发明具体实施例中所采用的TCORDIC计算单元中Taylor展开式模块结构示意图。
图9是本发明具体实施例中所采用的TCORDIC计算单元中CORDIC计算模块的结构示意图。
图10是本发明具体实施例中所采用的TCORDIC计算单元中后处理模块的结构示意图。
图11是本发明具体实施例中所采用的正余弦函数计算的实现装置的结构示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例正余弦函数计算的实现方法,步骤包括:
1)角度压缩:判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度输出;
2)TCORDIC计算:对目标计算角度ZR采用TCORDIC算法执行正弦或余弦函数的计算,且当目标计算角度与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC算法完成正余弦函数的计算。
本实施例通过输入任意的双精度、单精度角度,当输入角度不在[0,π/2]范围内时,首先将输入角度进行压缩,压缩后采用TCORDIC算法执行正弦或余弦函数的计算,否则直接采用TCORDIC算法执行,同时TCORDIC计算过程中结合CORDIC算法和Taylor算法实现,使得当目标计算角度接近0度或π/2度时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC算法完成正余弦函数的计算,即在CORDIC算法精度不高的接近0度、π/2度时利用Taylor展开式计算,并充分利用CORDIC算法精确计算0度至π/2度范围内其他角度的正余弦函数,从而使得在0度或π/2度以及0度至π/2度整个范围内时均能够实现高精度正弦、余弦函数计算。
如图2所示,本实施例步骤1)中对输入角度进行压缩的具体步骤为:
1.1)预处理:根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
1.2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
1.3)规格化:获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过规格化得到指数
Figure BDA0001275861070000051
和尾数
Figure BDA0001275861070000052
输出;
1.4)π/2截断乘法运算:将所述尾数
Figure BDA0001275861070000053
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
对于任意IEEE-754双精度格式输入角度Z,首先需要将输入角度压缩至ZRε[0,π/2]的范围内,根据正余弦函数的周期性,输入角度压缩前浮点表示
Figure BDA0001275861070000061
定点表示M;压缩后输入角度浮点表示和定点表示对应为ZR和MR。通过mod函数定义角度压缩:
Figure BDA0001275861070000062
其中Z和
Figure BDA0001275861070000063
为实数,
Figure BDA0001275861070000064
且K为整数,其中
Figure BDA0001275861070000065
首先进行区间映射:
Figure BDA0001275861070000066
计算出Q和R,Q是整数、R是小数;然后进行象限选择,根据整数最低两位Q[1:0]和输入角度Z符号SZ确定压缩后输入角度所在象限,假设SZ为正,象限选择对应表如表1所示;再进行映射角度计算:
Figure BDA0001275861070000067
得到映射角度MR;上述角度压缩过程中,本实施例使用2/π截断乘法器执行尾数MZ与区间C之间的2/π乘法运算、以及使用π/2截断乘法器执行尾数
Figure BDA0001275861070000068
和乘数D之间的π/2乘法运算,D是π/2的高LD位,其中对于双精度浮点数D是π/2的高60位。
表1:象限选择对应表。
Domain Q[1∶0]
[0,π/2] 00
[π/2,π] 01
[π,3π/2] 10
[3π/2,2π] 11
在上述区间映射步骤中,执行乘法操作
Figure BDA0001275861070000069
时,实质是尾数MZ和2/π进行计算,得到的结果包括整数Q和小数R。当使用完整乘法器执行2/π乘法运算时,参与乘法运算的2/π的位数是
Figure BDA00012758610700000610
其中LQ为整数Q的长度,LRH为小数位高位部分RH的长度,则根据角度压缩原理,需要计算整数Q指示输入角度所在象限,Q包括EZ-Eoffset+1位;同时为保证压缩后角度满足精度要求,小数高位部分RH需要包含
Figure BDA00012758610700000611
有效位,其中
Figure BDA00012758610700000612
为第一尾数
Figure BDA00012758610700000613
的长度,从而保证最终的压缩结果RH×π/2有
Figure BDA00012758610700000614
有效位,其中
Figure BDA00012758610700000615
为第二尾数
Figure BDA00012758610700000616
即RH需要的位数由RH中前导零位数LRLZERO、π/2截断乘法器输入的有效位
Figure BDA00012758610700000617
2/π截断乘法器的保护位LRG组成;但是当输入角度越接近π/2的整数倍时,RH中前导零的位数越多,为保证此时仍然有
Figure BDA00012758610700000618
有效位,需要计算的RH位数增多,参与乘法运算的2/π的位数增多,使得乘法器开销也同时增大。
考虑上述压缩过程中开销问题,为了减少参与乘法运算的2/π的位数,本实施例在上述TCORDIC计算上,基于硬件流水结构实现任意浮点输入角度的压缩,角度压缩过程中通过先确定2/π中需要参与乘法运算的区间C,再采用截断乘法器执行2/π乘法运算、以及使用截断乘法器执行π/2乘法运算,以优化乘法器的位宽,能够在保证压缩精度的同时,有效减少参与压缩过程中乘法运算的位数,大大减少了角度压缩阶段所需的乘法器硬件开销,从而能够在保证计算精度的同时,最大限度的减少正余弦函数整个计算过程的复杂度及硬件开销。
本实施例具体通过减少LQ
Figure BDA0001275861070000071
位数优化乘法器位宽,能够保证压缩精度的同时,减少角度压缩所需的硬件开销。对于
Figure BDA0001275861070000072
位数,本实施例具体通过获取小数位高位部分RH中前导零位数的最大值LMAXLZERO,基于最大值LMAXLZERO减少
Figure BDA0001275861070000073
位数,小数位R前导零位数的最大值LMAXLZERO具体可采用W.Kahan搜索算法等方法,其中对于双精度,LMAXLZERO=61。对于LQ的位数,根据三角函数的周期性原理,整数部分Q需要计算的只是低两位Q[1:0],为计算任意指数的输入角度,2/π中需要存储的位数最少是
Figure BDA0001275861070000074
但是参与乘法运算的只是2/π的一个区间,本实施例通过确定2/π中需要参与乘法运算的区间C,以减少LQ的位数。
本实施例中,步骤1.1)的具体步骤为:
1.1)分别获取指数EZ的高位、低位,根据获取到的指数EZ的高位从2/π存储单元中查找出区间C所在的所有r个存储单元组;
1.2)将获取的指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的存储单元组进行移位,由各个左移位器输出的高位部分得到区间C。
本实施例具体采用二级查找的方法从2/π中存储的位数中获得区间C,通过EZ的高位部分查找出区间C所在的所有存储单元组r个,其中
Figure BDA0001275861070000075
EZ的低位作为r个桶形左移位器的移位控制信号对查找出的存储单元组进行移位,r个移位器输出拼接的高位部分就是所需区间C。
Figure BDA0001275861070000076
时,如图3所示,矩形框内包围的部分代表位宽被优化的截断乘法器计算的部分,填充部分代表位宽被优化的完整乘法器计算的部分,则2/π中参与乘法运算的区间C应当为:从2/π第
Figure BDA0001275861070000077
位开始,向低位取
Figure BDA0001275861070000078
位,区间C的长度为
Figure BDA0001275861070000079
位;
Figure BDA00012758610700000710
时,如图4所示,矩形框内包围的部分代表位宽被优化的截断乘法器计算的部分,填充部分代表位宽被优化的完整乘法器计算的部分,左侧阴影填充部分是指在2/π之前补充的0位,此时2/π中参与乘法运算的区间C应当为:最高
Figure BDA00012758610700000711
位是补充的0位,接下来从2/π第0位开始,向低位取
Figure BDA0001275861070000081
位,区间C的长度为
Figure BDA0001275861070000082
位。
本实施例2/π存储单元中存储的位数被划分成k个存储单元,每个存储单元有l位,最后一个未存满的存储单元补0,如对于单精度,存储单元l=32,k=7,对于双精度,l=64,k=19。由上述可知,本实施例采用截断乘法器,相比于传统的完整乘法器,最高
Figure BDA0001275861070000083
位和最低
Figure BDA0001275861070000084
位可以不用计算。为保证对任意指数的输入角度都能有统一位数的区间C,本实施例具体使得2/π中需要存储的位数最少是
Figure BDA0001275861070000085
其中最高
Figure BDA0001275861070000086
位是补充的0,其余由2/π的高位组成。其中
Figure BDA0001275861070000087
LC为区间C的长度,且
Figure BDA0001275861070000088
本实施例中,步骤1.2)中具体采用
Figure BDA0001275861070000089
位截断乘法器执行2/π乘法运算,其中LC为所述区间C的长度,
Figure BDA00012758610700000810
为待压缩角度Z的尾数MZ的长度;采用截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure BDA00012758610700000811
位和小数位的低
Figure BDA00012758610700000812
位截断不输出,输出中间
Figure BDA00012758610700000813
位计算结果。
本实施例对2/π截断乘法器,输入(
Figure BDA00012758610700000814
位,LMZ位),乘法器的最高
Figure BDA00012758610700000815
位和最低
Figure BDA00012758610700000816
位都截断不计算,输出中间的
Figure BDA00012758610700000817
位,其中最高两位是Q[1:0],其余是
Figure BDA00012758610700000818
保护位
Figure BDA00012758610700000819
位,LRLZERO是RH中前导零位数,LRTCORDIC是基于TCORDIC算法的正余弦函数计算需要的有效位数。当Z最接近π/2的整数倍时,RH中前导零位数越多LMAXRLZERO
当Eoffset-EZR>N,其中N是TCORDIC算法计算的边界,RH中前导零个数是最大值LMAXRLZERO,正弦计算需要的有效位数是
Figure BDA00012758610700000820
余弦计算LRTCORDIC=LCORDIC,所以
Figure BDA00012758610700000821
当Eoffset-EZR<N,RH中前导零个数是LRLZERO=N(N是TCORDIC算法计算的边界),正余弦计算需要的有效位数都是LCORDIC,所以LRH2≥N+LCORDIC+LRG
综上可得,LRH=max{LRH1,LRH2}。
本实施例中,步骤1.4)中具体采用
Figure BDA00012758610700000822
位截断乘法器执行π/2乘法运算,其中
Figure BDA00012758610700000823
为第一尾数
Figure BDA00012758610700000824
的长度,LD为D的长度;采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。为保证后续的后处理中MZR位宽,同时考虑到压缩后角度
Figure BDA0001275861070000091
最高位有可能为0的情况,
Figure BDA0001275861070000092
中至少需要高MZR+1精确位。如图5所示,当采用截断乘法器时,图中填充处代表省略不计算,为保证高MZR+1位计算结果正确,必须满足:
Figure BDA0001275861070000093
其中
Figure BDA0001275861070000094
代入MZR,解得
Figure BDA0001275861070000095
即执行π/2计算时,截断乘法器的输入
Figure BDA0001275861070000096
位,输出高
Figure BDA0001275861070000097
位,其中高MZR+1位是需要保证的精确位,其余为保护位。
本实施例使用2/π截断乘法器执行2/π乘法运算,以及π/2截断乘法器执行π/2乘法运算的基础上,通过采用上述方式进一步优化2/π截断乘法器、π/2截断乘法器的位宽,压缩后的计算结果误差具体可小于1ulp。
本实施例具体对于正弦函数,当压缩后的输入角度ZR-Eoffset<N时,正弦计算由低延迟的CORDIC算法完成,当ZR-Eoffset≥N时,余弦计算由Taylor展开式完成。对于余弦函数来说,当压缩后的输入角度ZR'-Eoffset<N时,余弦计算由低延迟的CORDIC算法完成,当ZR'-Eoffset≥N时,余弦计算由Taylor展开式计算完成。其中ZR'是指π/2-ZR'规格化之后的指数。
本实施例中,步骤2)中Taylor展开式完成正弦或余弦函数的计算时,具体采用截断乘法器完成Taylor展开式中前两项的计算,以直接算Taylor展开式。
由于Taylor算法在其自变量较小时,具有较快的收敛速度,假定展开的项数为c-1,本实施例具体使得展开被省略的项之和小于
Figure BDA0001275861070000098
为了保证计算结果的精度,被省略的项之和应该小于
Figure BDA0001275861070000099
可得
Figure BDA00012758610700000910
本实施例中,步骤2)中使用CORDIC计算完成正余弦函数的计算时,将X和Y通路中前半部分采用基于CSA的迭代计算进行计算、后半部分采用基于CSA的并行迭代计算进行计算;步骤2)中使用CORDIC算法完成正余弦函数的计算时,Z通路基于符号预测进行计算,能够消除第一种数据相关。
本实施例Z通路计算具体步骤为:
Zj的二进制表达式
Figure BDA00012758610700000911
其中bj∈{0,1}。假设Zj=b0.b1...bj-1bj...bk,其中b0=b1=...=bj-1
第j位到第k位的转换规则定义如下:如果Zj为正数,即bj-1为0,则σj为1,反之σj为-1;对i>j-1,如果bi为0,则σi+1为-1,否则σi+1为1;上述预测规则的每一次迭代都可能产生的角度误差为2-ii,为保证收敛性,则k-i+1次迭代产生的累积误差必须小于2-N,因此k和i必须满足k≤3i+1。
当迭代索引
Figure BDA0001275861070000104
时,2-ii<2-N,使用2-i代替αi而直接使用转换规则得到后2/3次迭代的旋转方向;当迭代索引
Figure BDA0001275861070000105
时,根据关系式k≤3i+1在迭代序列中适当的位置加入校正迭代以保证预测正确性。
本实施例在上述符合预测的基础上,X、Y通路中前半部分的压缩迭代利用CSA完成,CSA可以消除每次压缩迭代中随位宽而增加的进位延时,使之与操作字长无关,保证了在高精度计算情况下的低延时,同时避免Z通路计算成为关键路径,通过X和Y通路前半部分采用基于CSA的迭代计算、后半部分采用基于CSA的并行迭代,能够大大降低延迟。本实施例X、Y通路中,相比于传统的使用超前进位加法器,具体采用4:2压缩的进位保留加法器。
本实施例中CORDIC算法中后半部分计算利用并行迭代,将其展开计算,能够消除第二种数据相关,并减少迭代次数。
Figure BDA0001275861070000101
次的迭代可以看成是对旋转角度
Figure BDA0001275861070000102
即Zn/2+1的旋转,即:
Figure BDA0001275861070000103
本实施例将并行迭代进行化简,使用两个乘法器和两个加法器完成即可完成后半部分的迭代计算。
本实施例上述步骤完成后,进一步执行后处理步骤,根据角度是否压缩的指示信号SR、象限指示信号Q[1:0]、Taylor展开式是否选择信号ST,选择出最终的正余弦函数计算结果。
如图6~11所示,本发明在具体实施例中实现正余弦函数计算所采用的装置结构,具体包括角度压缩单元、TCORDIC计算单元,TCORDIC计算单元包括Taylor展开式模块以及CORDIC计算模块,当目标计算角度ZR与0度或π/2度之间的差值小于指定阈值时,执行Taylor展开式模块,否则执行CORDIC计算模块;如图中所示,结构位宽以双精度为例,共包括①~⑤部分,其中①为角度压缩,②为TCORDIC预处理,③为Taylor通路计算,④为CORDIC通路计算,以及⑤为TCORDIC后处理。
如图6所示为本发明具体实施例中所采用的角度压缩单元,具体包括预处理模块、2/π截断乘法运算模块、规格化模块以及π/2截断乘法运算模块。首先输入浮点格式角度Z,当0≤E时,输入角度需要进行角度压缩,此时SR信号为真;当E<-5时,ST信号为真,输入角度的正弦值由Taylor算法完成;2/π存储查找表的所有的存储单元都是64位宽,共20个E=EZ-Eoffset,E[10:6]索引2/π存储表的连续8个存储单元,E[5:0]决定了存储单元位移位数;在移位之后,在通过拼接选择,得到需要参与乘法运算的2/π的175位。2/π的175位和53位的MZ采用截断乘法器,输出乘法结果高175,175位中有整数位55位,高53整数位舍去,最低2位整数位指示象限,小数部分的高120位是R;再R1通过规格化得到其有效位的高73位
Figure BDA0001275861070000111
最后和73位的π/2利用截断乘法器相乘,乘法结果高73位是压缩后的角度,ER,MZR分别对应输入角度的E,MZ
如图7所示,本发明具体实施例中TCORDIC计算单元中的用于预处理的预处理模块,目标计算角度ZR根据指数的ER和N大小,判断是否需要选择Taylor算法;同时通过移位操作将目标计算角度的尾数从IEEE-754双精度格式转换成定点格式,本实施例取Z0格式:73(小数位)+1(整数位)+1(符号位)=75位。
如图8所示,本发明具体实施例中TCORDIC计算单元中的Taylor展开式模块,采用三个截断乘法器完成Taylor展开式前两项,其中前两个截断乘法器分别计算Src×Src和Src×1/6,采用34*34位截断乘法器输出38位,其中保护位6位,得到的精确位32位中间计算结果输入32*32位截断乘法器。
如图9,本发明具体实施例中的TCORDIC计算中CORDIC计算模块,包括Z通路计算通路,XY计算通路,Z计算通路采用符号预测,XY计算通路将前半部分采用基于CSA的迭代计算、后半部分采用基于CSA的并行迭代。CORDIC算法中具体X,Y通路迭代次数及位宽是73,前9级采用初始查找表代替迭代,第9级到第32级采用迭代压缩的方式,最后的32级采用并行迭代的方式,采用截断乘法器完成。Z37在经过36次迭代之后,高36位已经变成了符号位,所以只需输入Z37的低36位参与乘法运算。为得到36位精确结果,乘法器输入39*39位,输出42位,其中精确36位。Z通路采用压缩和求和交替的方法,共有三个符号预测模块,在需要进行符号预测的Z1,Z4,Z13采用CLA求和,其余采用CSA压缩迭代的方法。
如图10所示,本发明具体实施例中TCORDIC计算中后处理模块,根据是否需要角度压缩的信号SR、是否需要选择Taylor展开计算通路的信号ST,以及象限指示信号Q[1:0],选择输出最终正余弦的计算结果。
本实施例进一步包括正余弦函数计算的实现装置,包括:
角度压缩单元,用于判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度ZR输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度ZR输出;
TCORDIC计算单元,用于对目标计算角度ZR采用TCORDIC算法执行正弦或余弦函数的计算,且当压缩后角度ZR与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC计算完成正余弦函数的计算。
本实施例中,角度压缩单元包括:
预处理模块,用于根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度Z的尾数MZ与获取到的区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
规格化模块,用于获取乘法运算结果M0中整数部分Q以及小数位R,根据整数部分Q确定压缩后角度ZR的象限,并将小数位R经过规格化得到指数
Figure BDA0001275861070000121
和尾数
Figure BDA0001275861070000122
输出;
π/2截断乘法运算模块,用于将尾数
Figure BDA0001275861070000123
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
本实施例中,2/π截断乘法运算模块具体采用
Figure BDA0001275861070000124
位截断乘法器,其中LC为区间C的长度,
Figure BDA0001275861070000125
为待压缩角度Z的尾数MZ的长度;
Figure BDA0001275861070000126
位截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure BDA0001275861070000127
位和小数位的低
Figure BDA0001275861070000128
位截断不输出,输出中间
Figure BDA0001275861070000129
位计算结果;
π/2截断乘法运算模块中具体采用
Figure BDA00012758610700001210
位截断乘法器,其中
Figure BDA00012758610700001211
为第一尾数
Figure BDA00012758610700001212
的长度,LD为乘数D的长度;
Figure BDA00012758610700001213
位截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位;
本实施例中,TCORDIC计算单元包括Taylor展开式模块以及CORDIC计算模块,当目标计算角度ZR与0度或π/2度之间的差值小于指定阈值时,执行Taylor展开式模块,否则执行CORDIC计算模块。Taylor展开式模块具体采用截断乘法器完成Taylor展开式中前两项的计算。CORDIC计算模块包括Z通路计算单元、XY通路计算单元,XY通路计算单元将X和Y通路中前半部分采用基于CSA的迭代计算进行计算、后半部分采用基于CSA的并行迭代计算进行计算。
本发明具体实施例中正余弦函数计算的实现装置如图6~11所示。本实施例正余弦函数计算的实现装置与正余弦函数计算的实现方法的原理一致,在此不再赘述。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (8)

1.一种正余弦函数计算的实现方法,其特征在于,步骤包括:
1)角度压缩:判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度输出;
2)TCORDIC计算:对目标计算角度采用TCORDIC算法执行正弦或余弦函数的计算,且当目标计算角度与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC算法完成正余弦函数的计算;
所述步骤1)中对输入角度进行压缩的具体步骤为:
1.1)预处理:根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
1.2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
1.3)规格化:获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过规格化得到指数
Figure FDA0003043886680000011
和尾数
Figure FDA0003043886680000012
输出;
1.4)π/2截断乘法运算:将所述尾数
Figure FDA0003043886680000013
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
2.根据权利要求1所述的正余弦函数计算的实现方法,其特征在于,所述步骤1.1)的具体步骤为:
1.11)分别获取所述指数EZ的高位、低位,根据获取到的所述指数EZ的高位从2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
1.12)将获取的所述指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
3.根据权利要求2所述的正余弦函数计算的实现方法,其特征在于,所述步骤1.12)中具体采用
Figure FDA0003043886680000014
位截断乘法器执行2/π乘法运算,其中LC为所述区间C的长度,
Figure FDA0003043886680000015
为待压缩角度Z的尾数MZ的长度;所述采用截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure FDA0003043886680000016
位和小数位的低
Figure FDA0003043886680000017
位截断不输出,输出中间
Figure FDA0003043886680000018
位计算结果。
4.根据权利要求2或3所述的正余弦函数计算的实现方法,其特征在于:所述步骤1.4)中具体采用
Figure FDA0003043886680000019
位截断乘法器执行π/2乘法运算,其中
Figure FDA00030438866800000110
为第一尾数
Figure FDA00030438866800000111
的长度,LD为乘数D的长度;所述采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
5.根据权利要求1或2或3所述的正余弦函数计算的实现方法,其特征在于,所述步骤2)中Taylor展开式完成正弦或余弦函数的计算时,具体采用截断乘法器完成Taylor展开式中前两项的计算。
6.根据权利要求1或2或3所述的正余弦函数计算的实现方法,其特征在于,所述步骤2)中使用CORDIC计算完成正余弦函数的计算时,将X和Y通路中前半部分采用基于CSA的迭代计算进行计算、后半部分采用基于CSA的并行迭代计算进行计算;所述步骤2)中使用CORDIC算法完成正余弦函数的计算时,Z通路基于符号预测进行计算。
7.一种正余弦函数计算的实现装置,其特征在于,包括:
角度压缩单元,用于判断输入角度是否在指定范围内,如果是,将输入角度作为目标计算角度ZR输出,否则对输入角度进行压缩,并将输出压缩后角度作为目标计算角度ZR输出;
TCORDIC计算单元,用于对目标计算角度ZR采用TCORDIC算法执行正弦或余弦函数的计算,且当压缩后角度ZR与0度或π/2度之间的差值小于指定阈值时,通过Taylor展开式完成正弦或余弦函数的计算,否则使用CORDIC计算完成正余弦函数的计算;
所述角度压缩单元包括:
预处理模块,用于根据输入角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0
规格化模块,用于获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过规格化得到指数
Figure FDA0003043886680000021
和尾数
Figure FDA0003043886680000022
输出;
π/2截断乘法运算模块,用于将所述尾数
Figure FDA0003043886680000023
和乘数D采用截断乘法器执行π/2乘法运算,得到压缩后角度输出。
8.根据权利要求7所述的正余弦函数计算的实现装置,其特征在于:
所述2/π截断乘法运算模块具体采用
Figure FDA0003043886680000024
位截断乘法器,其中LC为所述区间C的长度,
Figure FDA0003043886680000025
为待压缩角度Z的尾数MZ的长度;所述
Figure FDA0003043886680000026
位截断乘法器执行2/π乘法运算时,具体将整数位的高
Figure FDA0003043886680000027
位和小数位的低
Figure FDA0003043886680000028
位截断不输出,输出中间
Figure FDA0003043886680000029
位计算结果;
所述π/2截断乘法运算模块中具体采用
Figure FDA00030438866800000210
位截断乘法器,其中
Figure FDA00030438866800000211
为第一尾数
Figure FDA00030438866800000212
的长度,LD为乘数D的长度;所述
Figure FDA00030438866800000213
位截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位;
所述TCORDIC计算单元包括Taylor展开式模块以及CORDIC计算模块,当目标计算角度ZR与0度或π/2度之间的差值小于指定阈值时,执行所述Taylor展开式模块,否则执行CORDIC计算模块。
CN201710265266.2A 2017-04-21 2017-04-21 一种正余弦函数计算的实现方法及装置 Active CN107423026B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710265266.2A CN107423026B (zh) 2017-04-21 2017-04-21 一种正余弦函数计算的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710265266.2A CN107423026B (zh) 2017-04-21 2017-04-21 一种正余弦函数计算的实现方法及装置

Publications (2)

Publication Number Publication Date
CN107423026A CN107423026A (zh) 2017-12-01
CN107423026B true CN107423026B (zh) 2021-07-13

Family

ID=60423307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710265266.2A Active CN107423026B (zh) 2017-04-21 2017-04-21 一种正余弦函数计算的实现方法及装置

Country Status (1)

Country Link
CN (1) CN107423026B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108416311B (zh) * 2018-03-14 2022-04-19 电子科技大学 一种基于可编程门阵列和坐标旋转处理的方位角获取方法
CN109165006B (zh) * 2018-08-07 2021-08-06 上海交通大学 Softmax函数的设计优化及硬件实现方法及系统
WO2021056507A1 (zh) * 2019-09-29 2021-04-01 深圳市大疆创新科技有限公司 浮点数处理方法、设备和可移动平台

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155627A (zh) * 2016-06-30 2016-11-23 中国人民解放军国防科学技术大学 基于t_cordic算法的低开销迭代三角函数装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480871B1 (en) * 1999-04-07 2002-11-12 Dhananjay S. Phatak Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions
US7394881B2 (en) * 2004-08-05 2008-07-01 Broadcom Corporation Radio receiver and/or transmitter including a programmable equalizer
CN101110016A (zh) * 2007-08-29 2008-01-23 中国人民解放军国防科学技术大学 子字并行整数乘法器
CN103488459B (zh) * 2013-09-13 2017-01-25 复旦大学 一种改进的高基cordic方法及基于其的复数乘法运算单元
CN103677738B (zh) * 2013-09-26 2016-08-17 中国人民解放军国防科学技术大学 基于混合模式cordic算法的低延时基本超越函数实现方法及装置
CN105389157A (zh) * 2015-10-29 2016-03-09 中国人民解放军国防科学技术大学 基于Goldschmidt算法的浮点除法器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155627A (zh) * 2016-06-30 2016-11-23 中国人民解放军国防科学技术大学 基于t_cordic算法的低开销迭代三角函数装置

Also Published As

Publication number Publication date
CN107423026A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
CN109062540B (zh) 一种基于cordic算法的可重构浮点运算装置
US6163791A (en) High accuracy estimates of elementary functions
CN106202890B (zh) 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置
CN106155627B (zh) 基于t_cordic算法的低开销迭代三角函数装置
CN107305485B (zh) 一种用于执行多个浮点数相加的装置及方法
CN101630243B (zh) 超越函数装置以及用该装置实现超越函数的方法
JPH02196328A (ja) 浮動小数点演算装置
CN107423026B (zh) 一种正余弦函数计算的实现方法及装置
WO2022170809A1 (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
CN108037906B (zh) 基于tcordic算法的浮点基本函数实现方法及装置
CN111666064B (zh) 基于cordic的三角函数循环迭代求解方法和装置
CN111666065B (zh) 基于cordic的三角函数流水线迭代求解方法和装置
CN108228135B (zh) 一种运算多种超越函数的装置
WO2022001722A1 (zh) 一种用于计算正弦或余弦函数的实现方法及装置
US5278782A (en) Square root operation device
CN107015783B (zh) 一种浮点角度压缩实现方法及装置
CN109298848B (zh) 双模式浮点除法平方根的电路
CN107657078B (zh) 基于fpga的超声相控阵浮点聚焦发射实现方法
EP3451152B1 (en) Device and method for performing multiple transcendental function operations
CN112783471A (zh) 基于cordic算法的正余弦、反正切函数运算的装置及方法
Pande et al. Design and implementation of floating point divide-add fused architecture
CN112783470A (zh) 一种用于执行浮点对数运算的装置和方法
US6055553A (en) Apparatus for computing exponential and trigonometric functions
CN112416296A (zh) 一种用于计算反正切函数的实现方法及装置
Vázquez et al. Computation of decimal transcendental functions using the CORDIC algorithm

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant