基于浮点运算单元的基本超越函数运算方法及其协处理器的制作方法

文档序号:6369470阅读:570来源:国知局
专利名称:基于浮点运算单元的基本超越函数运算方法及其协处理器的制作方法
技术领域
本发明涉及利用浮点运算单元完成基本超越函数运算的技术领域,特别是三角和反三角函数,双曲函数,指数函数和对数函数的计算,并实现了基于该方法的协处理器。
背景技术
求解基本超越函数是科学计算和工程应用中最重要的运算。特别是在方程求解、 数值分析、概率统计、计算机图形学、数字信号处理、机器视觉、人工智能等领域中被广泛使用。但是基本超越函数计算过程复杂,运算速度低,特别是硬件不易实现。因此,实现一种易于硬件实现的高性能基本超越函数运算的方法成为近年来的研究热点。常用的硬件实现基本超越函数的方法有三类查表法、级数近似法和逐位迭代法。查表法是最直接的函数求值方法,适用于低精度计算,随着计算精度的提高,ROM容量的需求成指数增长,不适合进行高精度函数计算;级数近似法通常采用Taylor级数的展开形式进行多次迭代,该方法计算量大、速度慢,对于一个接近于I的参数需要很长的迭代步骤,而且对于不同的超越函数需要不用的硬件分别实现;逐位迭代法用简单的以为和加法运算的迭代为基础,实现简单,是硬件实现超越函数最常用的方法,但它的线性收敛非常慢,而且每次迭代都以前次迭代的结果为基础,不能有效的并行实现。随着IC技术的发展,作为高效的硬件算法,逐位迭代法在电路硬件实现中的应用越来越多。从功能模块公用的角度,最好的逐位迭代法是CORDIC (Coordinate RotationDigital Computer)算法。CORDIC 算法由 J. E. Voider 于 1959 年提出(J. E. Voider, “TheCORDIC trigonometric computing technique”),它的基本概念以二维几何学为基础。它是一种用于计算数学函数的循环迭代算法,其基本思想是用一系列只与运算基数相关的角度的不断偏转,从而逼近所需旋转的角度。由于偏转角度至于计算的基数有关,这一算法只需要进行移位和加法运算。传统的CORDIC算法根据不同的旋转轨迹分成圆周系统、双曲系统和线性系统,每种系统又有旋转模式和向量模式。为了能计算更多的函数,J. S. Walther于1971 年提出了 CORDIC 算法的扩展和统一形式(J. S. Walther, “A unified algorithm forelementary functions”),将三种系统统一到同一个迭代方程组中
权利要求
1.一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,将CORDIC算法分解成函数运算控制和浮点计算两个部分;其中,函数运算控制分为五个步骤译码、前处理、迭代运算控制、后处理和函数运算控制,函数运算控制部分完成CORDIC算法的运算控制功能;浮点计算支持浮点数的求绝对值、加/减、乘、除、开方和比较运算,并且浮点计算中用到的通用寄存器可被函数运算控制模块读写。
2.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,函数运算控制中的译码步骤完成接收和译码函数运算指令,将函数运算指令译码为正弦、余弦、正切、反正弦、反余弦、反正切、双曲正弦、双曲余弦、双曲正切、对数和指数函数指令码,译码结果送给前处理、迭代运算和后处理部分。
3.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,函数运算控制中的前处理步骤根据接收到的译码后的函数运算指令,通过向浮点计算单元发送浮点运算指令并配合前处理内运算完成迭代初始数据的计算和输入控制;前处理步骤通过内部运算和发送浮点运算指令完成如下运算 (1)在进行三角函数sin9、cos 0或tan 9计算时,需要完成如下运算if ( Q〈O)
4.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,函数运算控制中的迭代运算步骤根据接收到的译码后的函数运算指令,通过向浮点计算单元发送浮点运算指令并配合迭代运算步骤内运算完成CORDIC算法的迭代运算过程;迭代运算步骤通过内部运算和发送浮点运算指令完成如下运算 (I)根据译码单元发送的指令,确定所计算函数对应于圆周系统或双曲系统,工作模式属于向量模式或双曲模式;根据所确定的系统和模式,给定m的初值以及0 i的计算公式; (2)判定迭代循环次数i大于循环上限时,跳出循环,输出结果;或者,在旋转模式时Qi小于所设阈值或者在向量模式时Yi小于所设阈值,跳出循环,输出结果;其中,所设阈值为保证函数计算结果的精度; (3)旋转模式时%〈0,Oi=-I5COiX), 0 尸1 ;向量模式时 yi〈0,Oi=I ;Yi>0, Oi=-I; (4)根据之前得到的0i和前处理单元得到的X(l、y0和Oci完成迭代运算
5.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,函数运算控制中后处理步骤根据接收到的译码后的函数运算指令,通过向浮点计算单元发送浮点运算指令并配合后处理单元内运算得到函数运算的输出结果;后处理步骤通过内部运算和发送浮点运算指令完成如下运算(1)在进行三角函数sin0、cos 0或tan 0计算时,需要将迭代运算得到的xi+1和yi+1乘以缩放因子
6.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法,其特征在于,函数运算控制中函数运算控制根据接收到的译码后的函数运算指令,控制译码、前处理、迭代和后处理依次顺序进行函数运算,并在函数运算完成后发出完成运算信号。
7.根据权利要求I所述的一种使用浮点运算单元实现CORDIC算法完成基本超越函数运算的方法设计实现的一种基本超越函数协处理器,其特征在于包括函数运算控制模块和浮点计算单元;其中,函数运算控制模块包括译码单元、前处理单元、迭代运算单元、后处理单元和函数运算控制单元,译码单元、前处理单元、迭代运算单元、后处理单元和函数运算控制单元分别完成权利要求2、3、4、5、6所述的运算和控制功能,完成CORDIC算法的计 算控制;浮点计算单元至少包括绝对值、加/减、乘、除、开方和比较指令单元,并且浮点计算单元中的通用寄存器可被函数运算控制模块读写。
全文摘要
本发明提供一种基于浮点运算单元的基本超越函数运算方法及其协处理器;该方法将CORDIC算法分解成函数运算控制和浮点计算两个部分;函数运算控制部分完成CORDIC算法的运算控制功能;浮点计算支持浮点数的求绝对值、加/减、乘、除、开方和比较运算,并且浮点计算中用到的通用寄存器可被函数运算控制模块读写。传统方法都要根据需求重新设计实现专用数学函数计算部件,控制和结构复杂、硬件资源消耗大。本发明通过增加一个结构简单的函数运算控制模块,可以在已有浮点运算单元的基础上利用已有浮点运算指令实现超越函数运算,其结构简单、易于实现和应用、能够支持三角和反三角函数,双曲函数,指数函数和对数函数的计算。
文档编号G06F7/57GK102722469SQ20121016899
公开日2012年10月10日 申请日期2012年5月28日 优先权日2012年5月28日
发明者季翔, 张少愚, 张斌, 杨玉辰, 梅魁志, 殷浩, 董培祥, 郑南宁 申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1