一种基于双曲CORDIC的对数函数计算系统及方法与流程

文档序号:18642964发布日期:2019-09-11 23:47阅读:521来源:国知局
一种基于双曲CORDIC的对数函数计算系统及方法与流程
本发明涉及函数计算领域,更具体地说,涉及一种基于双曲cordic的对数函数计算系统及方法。
背景技术
:对数函数的计算在许多应用中都是必需的,包括信号和图像处理、通讯系统和生物医学系统等等。在实际工程应用中,由于使用软件计算对数函数的速度不够快,这就需要专用的硬件设计进行加速实现。如何在满足精度的要求下,尽可能少地占用资源以及更大范围内进行对数函数运算成为主要的研究问题。传统实现方式主要有查找表、分段线性近似法、多项式近似法以及数值循环法等,但这些方法都存在硬件资源开销大或精度低或数据支持范围小等缺点,因此如何克服上述的硬件实现缺点,是现有技术亟需解决的问题。cordic(coordinaterotationdigitalcomputer)算法即坐标旋转数字计算方法,主要用于基本函数的计算。该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数、乘法、开方、反三角、指数等函数。cordic算法是一个“化繁为简”的算法,将许多复杂的运算转化为一种“仅需要移位和加法”的迭代操作,利用硬件电路实现cordic算法具有良好的应用价值。针对cordic算法的应用,现有技术中也提出了一些技术方案,例如
专利名称:为:一种基于2型双曲cordic任意指数函数的计算系统(申请号:201811653497.1;申请日:2018-12-30),该系统包括核心算法控制模块、2型双曲旋转模式cordic模块、2型双曲向量模式cordic模块及基本运算模块,基本运算模块包括浮点转换单元、延时单元、加法单元和乘法单元,根据输入的浮点型底数、定点型指数,利用这四个单元以及上述两个模块计算并输出类浮点型结果,可以支持任意浮点型底数、任意定点型指数进行指数函数运算;但是该方案只是解决了指数函数的计算问题。综上所述,如何解决对数函数计算所需的硬件面积大,且计算精度较低的不足,是现有技术中值得去思考解决的问题。技术实现要素:1.要解决的问题本发明的目的在于克服现有技术中,对数函数计算所需的硬件面积大,且计算精度较低的不足,提供了一种基于双曲cordic的对数函数计算系统及方法,可以实现任意浮点型真数进行以2为底的对数函数计算,且本发明的硬件资源开销小,计算精度高,可以满足不同精度的应用要求。2.技术方案为了解决上述问题,本发明所采用的技术方案如下:本发明的一种基于双曲cordic的对数函数计算系统,包括控制模块、变体双曲向量模式cordic模块和基本运算模块,控制模块和变体双曲向量模式cordic模块分别与基本运算模块连接,且变体双曲向量模式cordic模块与控制模块连接;其中,控制模块用于进行任务调度,变体双曲向量模式cordic模块用于计算以2为底、真数范围在[1,2]之间的对数函数。更进一步地,基本运算模块包括浮点转换单元、延时单元和加法单元,浮点转换单元和加法单元分别与延时单元连接。更进一步地,浮点转换单元和加法单元分别与变体双曲向量模式cordic模块连接。本发明的一种基于双曲cordic的对数函数计算方法,采用上述的一种基于双曲cordic的对数函数计算系统,先输入任意有效的浮点型数据,再利用基本运算模块对浮点型实数进行分离得到阶码和尾数,而后尾数与1相加并传送至变体双曲向量模式cordic模块进行计算,再利用基本运算模块将变体双曲向量模式cordic模块的输出值和阶码进行相加,最后将相加的结果输出。更进一步地,利用基本运算模块的浮点转换单元对浮点型数据进行分离,并利用控制模块将尾数与1相加。更进一步地,利用基本运算模块的延时单元对阶码进行延时,而后将阶码传送至基本运算模块的加法单元。更进一步地,利用加法单元将阶码和变体双曲向量模式cordic模块的输出值进行相加。更进一步地,利用控制模块输出加法单元的计算结果。3.有益效果相比于现有技术,本发明的有益效果为:(1)本发明的一种基于双曲cordic的对数函数计算系统,通过设置控制模块、变体双曲向量模式cordic模块和基本运算模块,从而可以实现任意浮点型真数进行以2为底的对数函数运算,硬件实现只需通过移位和加法操作,该对数函数计算系统不仅硬件实现面积小,且可以适用于不同的精度要求,从而提高了本发明的适用性;(2)本发明的一种基于双曲cordic的对数函数计算方法,通过利用控制模块、变体双曲向量模式cordic模块和基本运算模块,可以实现任意浮点型真数进行以2为底的对数函数运算,而且本发明的方法硬件资源开销小,计算精度高,并且支持的数据范围广,从而可以满足不同精度的应用要求。附图说明图1为本发明一种基于双曲cordic的对数函数计算系统结构示意图;图2为实施例2对数函数计算方法的流程示意图;图3为实施例2变体双曲向量模式cordic模块架构图;具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例;而且,各个实施例之间不是相对独立的,根据需要可以相互组合,从而达到更优的效果。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为进一步了解本发明的内容,结合附图和实施例对本发明作详细描述。实施例1结合图1所示,本发明的一种基于双曲cordic的对数函数计算系统,包括控制模块、变体双曲向量模式cordic模块和基本运算模块,变体双曲向量模式cordic模块与控制模块连接;其中,控制模块用于进行任务调度,变体双曲向量模式cordic模块用于计算以2为底、真数范围在[1,2]之间的对数函数。值得说明的是,对于对数函数y=log2n(n>0),真数n可用浮点型表示为n=(1+x)*2k(x为尾数、k为阶码),则由于x∈[0,1),即1+x∈[1,2),故符合双曲向量模式cordic的收敛区间。因为当双曲向量模式cordic的输入初始值x、y、z分别为r+1、r-1、0时,其z输出为且该z由迭代方程zi+1=zi+sign(yi)tanh-1(2-i)经过一定的迭代次数i得到,tanh-1(2-i)在硬件实现时以常数查找表方式存在,sign(yi)指根据前一次yi值的正负判定当前运算为“+”还是“-”。由此可以看出,若要实现硬件实现时只需要将常数查找表中的每个值都事先除以ln2,令该cordic输入中的r=1+x,且将最后z的输出结果向左平移一位(即扩大2倍)就可以得出的值。因此,变体双曲向量模式cordic模块的输入初始值x、y、z分别为r+1、r-1、0。其中,r为待求log2(1+x)的真数,在迭代次数i=4,13,40,...时,变体双曲向量模式cordic模块需要做两次迭代;除此以外,变体双曲向量模式cordic模块中的查找表常数均需除以ln2。进一步地,控制模块和变体双曲向量模式cordic模块分别与基本运算模块连接,具体地,基本运算模块包括浮点转换单元、延时单元和加法单元,浮点转换单元和加法单元分别与延时单元连接。值得说明的是,浮点转换单元和加法单元分别与变体双曲向量模式cordic模块连接。本发明的一种基于双曲cordic的对数函数计算系统,通过设置控制模块、变体双曲向量模式cordic模块和基本运算模块,从而可以实现任意浮点型真数进行以2为底的对数函数运算,硬件实现只需通过移位和加法操作,该对数函数计算系统不仅硬件实现面积小,且可以适用于不同的精度要求,从而提高了本发明的适用性。本发明的一种基于双曲cordic的对数函数计算方法,采用上述的一种基于双曲cordic的对数函数计算系统,先输入任意有效的浮点型数据,再利用基本运算模块对浮点型实数进行分离得到阶码和尾数,值得说明的是,先利用控制模块判断输入的数据是否是有效的浮点型数据,再利用基本运算模块的浮点转换单元对浮点型实数进行分离。而后将尾数与1相加并传送至变体双曲向量模式cordic模块进行计算,具体地,利用控制模块将尾数与1相加。进一步地,利用基本运算模块将变体双曲向量模式cordic模块的输出值和阶码进行相加,具体地,利用基本运算模块的延时单元对阶码进行延时,而后将阶码传送至基本运算模块的加法单元。而后利用加法单元对阶码和变体双曲向量模式cordic模块的输出值进行相加,最后将相加的结果输出。值得说明的是,本发明利用控制模块输出加法单元的计算结果。本发明的一种基于双曲cordic的对数函数计算方法,通过利用控制模块、变体双曲向量模式cordic模块和基本运算模块,可以实现任意浮点型真数进行以2为底的对数函数运算,而且本发明的方法硬件资源开销小,计算精度高,并且支持的数据范围广,从而可以满足不同精度的应用要求。实施例2本实施例的内容基本同实施例1,进一步地,本实施例输入的真数n属于单精度浮点数表示的范围,且为32比特的数据([b31,b30,...,b2,b0]),[b31]表示符号位(因为n必定大于0,故该位始终为0),[b30,b29,...,b24,b23]表示阶码+指数偏阶量127,[b22,b21,...,b1,b0]表示尾数;对于输出y,[b34]表示符号位,[b33,b32,...,b28,b27]表示整数位,[b26,b22,...,b1,b0]表示小数位(y为35比特定点型数据)。如图2所示,当输入数据n有效时,基本运算模块的浮点转换单元先将浮点型n分离出阶码k和尾数x,延时单元将阶码k进行固定延时传送给加法单元,而尾数x则加上1传送给变体双曲向量模式cordic模块(vhv-cordic模块)。当vhv-cordic模块的输出有效时,将输出结果和从延时单元得到的阶码k传送给加法单元进行计算,加法单元的计算结果即为最终对数函数的值。结合图3所示,变体双曲向量模式cordic模块(vhv-cordic模块)的迭代变量x、y、z的初始值分别为r+1、r-1、0(r=1+x),迭代次数设置为16次(第4次与第13次需做2次迭代)。因为r∈[1,2),该模块计算结果属于[0,1),所以输入变量设置为28比特,最高位[27]代表整数位,其他位数代表小数部分;输出变量设置为27比特,全部代表小数部分。变体双曲向量模式cordic模块与标准双曲向量模式cordic(hv-cordic)模块相比,查找表中的常量tanh-12-i(i=1,2,...,16)需变换为常量tanh-12-i/ln2。当vhv-cordic模块的迭代次数达到16次时,将z的值左移一位(即扩大2倍)作为最后的输出结果;否则每次x,y,z的计算结果又作为新的输入值重新进行迭代计算。根据上述方案进行设计验证并进行反复实验,可得到具体精度性能指标如表1所示,表1还表示变体双曲向量模式cordic模块(vhv-cordic模块)的不同迭代次数下对数函数计算系统的不同精度。表1中精度测试的抽取样本数为50000,误差均为相对误。表1vhv-cordic迭代次数log2n最大误差log2n平均误差143.60×10-37.38×10-6151.72×10-34.48×10-6168.72×10-42.09×10-6173.42×10-49.53×10-7182.97×10-44.93×10-7191.84×10-42.96×10-7205.31×10-51.21×10-7213.60×10-57.58×10-8根据上述方案,在verilog的rtl级描述进行设计验证后,利用台积电40nm工艺库对其综合,可得到如表2所示的在1ghz频率下的面积和功耗性能指标。表2工艺频率面积功耗台积电40nm1ghz326.6928μm20.2048mw由表1和表2可知,本发明的一种基于双曲cordic的对数函数计算系统,可以实现任意浮点型真数进行以2为底的对数函数运算,本发明的系统计算精度高、功耗低且系统面积小,从而克服了传统硬件实现方法中资源开销大或精度低或数据支持范围小的不足,进而具有良好的借鉴意义和广泛的应用前景。在上文中结合具体的示例性实施例详细描述了本发明。但是,应当理解,可在不脱离由所附权利要求限定的本发明的范围的情况下进行各种修改和变型。详细的描述和附图应仅被认为是说明性的,而不是限制性的,如果存在任何这样的修改和变型,那么它们都将落入在此描述的本发明的范围内。此外,
背景技术
旨在为了说明本技术的研发现状和意义,并不旨在限制本发明或本申请和本发明的应用领域。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1