一种指数运算方法和装置制造方法及图纸

技术编号:3844875 阅读:214 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种指数运算方法和装置,所述方法包括:存储若干步进 值和对应的运算操作参数,根据输入指数的正负对输入指数进行预处理,指 数运算开始时,设置移位加数据的初始值是1,首先把预处理指数和存储的 若干步进值进行比较从而选择指数的步进值和对应的指数运算参数,把预处 理指数和选择的步进值相减作为当前指数,把当前指数和存储的若干步进值 进行比较再次选择指数的步进值和对应的指数运算参数,如此不重复地把当 前指数与存储的步进值进行比较,直到当前指数小于存储的所有步进值,每 一步都根据得到的指数运算参数对移位加数据进行移位或者移位和加法运算, 最后根据输入指数的正负对把移位加数据进行处理后输出指数运算结果。

【技术实现步骤摘要】

本专利技术涉及指数运算,尤其涉及一种指数运算的方法和装置。
技术介绍
传统的指数运算采用经典的CORDIC (Coordinate Rotational Digital Computer,坐标旋转计算器)算法。CORDIC算法是Voider于1959年在美 国航空控制系统的设计中提出来的,其基本思想是用 一系列与运算基数相关 的角度的不断偏摆,从而逼近所需旋转的角度。CORDIC算法是一种用于计 算运算函数的循环迭代算法,将复杂的算术运算转化为简单的加法和移位操 作,然后逐次逼近结果。CORDIC算法主要用于三角函数、双曲函数、指数、 对数的计算。对于指数运算ee = sinhe + coshe,采用CORDIC算法首先 计算sinhe和coshe的值,最终得到指数的计算结果。但是,CORDIC算法对输入的指数值很敏感,只有固定了指数的取值范 围后才能正确计算,否则会发生运算振荡,使计算不收敛,从而不能获得正 确的计算结果。因此,采用CORDIC算法进行指数运算时,需要对输入的指 数值进行移位处理,使指数值在合适的范围内。但是对指数的移位处理带来 的后果是增加了乘法运算,在硬件实现上要求硬件乘法器,从而使设计变得 更加复杂。
技术实现思路
有鉴于此,为了克服传统采用CORDIC算法进行指数运算中存在的问题, 本专利技术提供了 一种指数运算方法和装置。根据本专利技术的第一方面,提供了一种指数运算方法,包括步骤1 )存储若干步进值和对应的若干运算操作参数,所述若干步进值是以指数运算的底为底的2i和(1 + 2')的对数值,所述2i对应的运算操作参数是移位 位数i,所述(1 + 2J)对应的运算操作参数是移位位数j以及加标志,所述i 是整数,并且所述i 2 1,所述j是整数,并且所述j S -l;2) 对输入指数的正负进行判断,输出正或负判断结果,并根据所述判断 结果对所述输入指数进行预处理当所述判断结果是正时,把所述输入指数 输出作为预处理指数,否则,把所述输入指数和一个预设值相加后输出作为 预处理指数,所述预设值是以指数运算的底为底的2k的对数值,所述k是整 数,并且所述k〉 1;3) 指数运算开始时,设置移位加数据的初始值是l;把所述预处理指数 和所述存储的若干步进值进行比较若所述预处理指数大于或者等于存储的 一个或多个步进值,选择其中一个步进值作为当前步进值,把所述预处理指 数和所述当前步进值相减的结果输出作为当前指数,并且根据所述当前步进 值得到对应的当前运算操作参数,根据所述当前运算操作参数对所述移位加 数据进行操作,所述操作是若所述当前运算操作参数是移位位数i时,把 所述移位加数据移i位后输出作为下一步骤的移位加数据,若所述当前运算 操作参数是移位位数j以及加标志时,把所述移位加数据移j位后与所述移 位加数据相加输出作为下一步骤的移位加数据;若预处理指数小于存储的所 有步进值,输出所述移位加数据,转到步骤5);4) 把所述当前指数和所述存储的若干步进值进行比较若所述当前指 数大于或者等于存储的一个或多个步进值,选择其中一个步进值作为当前步 进值,把所述当前指数和所述当前步进值相减的结果作为下一重复本步骤时 的当前指数,并且才艮据所述当前步进值得到对应的当前运算操作参数,根据 所述当前运算操作参数对所述移位加数据进行操作,所述操作是当所述当 前运算操作参数是移位位数i时,把所述移位加数据移i位后作为下一重复 本步骤时的移位加数据,当所述当前运算操作参数是移位位数j以及加标志 时,把所述移位加数据移j位后与所述加数据相加作为下一重复本步骤时的 移位加数据,重复步骤4);若所述当前指数小于存储的所有步进值,输出 所述移位加数据;5)当所述输入指数的正或负判断结果为正时,把所述移位加的数据作 为指数运算结果输出,当所述输入指数的正或负判断结果为负时,对所述移 位加数据移-k位后后输出指数运算结果,指数运算结束。根据本专利技术的第二方面,提供了一种指数运算装置,包括存储模块,用于存储若干步进值和对应的若干运算操作参数,所述若干 步进值是以指数运算的底为底的2i和(1 + 2')的对数值,所述2i对应的运算操 作参数是移位位数i,所述(l + 2')对应的运算操作参数是移位位数j以及加 标志,所述i是整数,并且所述i2 1,所述j是整数,并且所述j^-l;正负判断和处理模块,用于对输入指数的正负进行判断,输出正或负判 断结果,并根据所述判断结果对所述输入指数进行预处理当所述判断结果 是正时,把所述输入指数输出作为预处理指数,否则,把所述输入指数和一 个预设值相加后输出作为预处理指数,所述预设值是以指数运算的底为底的 2k的对数值,所述k是整数,并且所述k〉l;步进选择模块,与所述存储模块和正负判断和处理模块连接,用于选择 指数步进值和输出相应的运算操作参数;当运算开始时,把所述预处理指数 作为当前指数;把当前指数和所述存储模块中存储的若干步进值进行比较 若所述当前指数大于或者等于存储的一个或多个步进值,选择其中一个步进 值作为当前步进值,把所述当前指数和所述当前步进值相减的结果反馈作为 当前指数,并且输出根据所述当前步进值从所述存储模块中得到的对应的运 算操作参数;若所述当前指数小于存储的所有步进值,输出步进值选择结束信号;移位加模块,与所述步进选择模块连接,用于进行移位或者移位和加法 操作,运算开始时,设置移位加模块的初始数据是1,所述移位加模块接收 所述步进选择模块输出的运算操作参数,根据所述运算操作参数进行操作 当所述当前运算操作参数是移位位数i时,把所述移位加模块中的数据移i 位后放在所述移位加模块中,当所述当前运算操作参数是移位位数j以及加 标志时,把所述移位加模块中的数据与所述移位加模块中的数据移j位后相 加的结果放在所述移位加模块中;当移位加模块接收到所述步进选择模块输 出的步进值选择结束信号时,输出移位加模块中的数据;结果处理模块,接收所述正负判断和处理模块输出的判断结果和所述移 位加模块输出的数据,当所述判断结果为正时,把所述移位加模块输出的数 据输出作为指数运算结果,当所述判断结果为负时,把所述移位加模块输出 的数据移-k位后输出作为指数运算结果。本专利技术把指数运算中的指数分解为若干指数步进值相加,把指数运算的 相乘转换为指数的相加,不断地选择指数步进值和不断地缩小指数,最终使 指数逼近于零,零所对应的指数运算为1,而运算中所采用的指数步进值均为2的整数次幂的对数,从而将乘法运算简化为移位运算。本专利技术的指数运 算方法和指数运算装置在精度和资源利用上均优于传统的CORDIC算法。附图说明图1是本专利技术一实施例的指数运算方法的流程图; 图2是本专利技术一实施例的指数运算装置的结构框图。具体实施例方式本专利技术的思想是把指数运算分解为若干指数运算相乘,而若干指数运 算中的指数是2的整数次幂的对数值或者是2的整数次幂的对数加1后的数 值,从而把指数运算的相乘转化为简单的移位操作和加法操作。aX = aiog! iogr2+…+iogrv(i+iogry"+(i+iogry2)+…+("iogr,二aiogf、ai。g! …:Hai。giX a(i+i。gry a(i+iogry2)Ua(i+i。gryn)=本文档来自技高网...

【技术保护点】
一种指数运算方法,其特征在于,包括步骤: 1)存储若干步进值和对应的若干运算操作参数,所述若干步进值是以指数运算的底为底的2↑[i]和(1+2↑[j])的对数值,所述2↑[i]对应的运算操作参数是移位位数i,所述(1+2↑[j])对应 的运算操作参数是移位位数j以及加标志,所述i是整数,并且所述i≥1,所述j是整数,并且所述j≤-1; 2)对输入指数的正负进行判断,输出正或负判断结果,并根据所述判断结果对所述输入指数进行预处理:当所述判断结果是正时,把所述输入指数输 出作为预处理指数,否则,把所述输入指数和一个预设值相加后输出作为预处理指数,所述预设值是以指数运算的底为底的2↑[k]的对数值,所述k是整数,并且所述k>1; 3)指数运算开始时,设置移位加数据的初始值是1;把所述预处理指数和所述存储 的若干步进值进行比较:若所述预处理指数大于或者等于存储的一个或多个步进值,选择其中一个步进值作为当前步进值,把所述预处理指数和所述当前步进值相减的结果输出作为当前指数,并且根据所述当前步进值得到对应的当前运算操作参数,根据所述当前运算操作参数对所述移位加数据进行操作,所述操作是:若所述当前运算操作参数是移位位数i时,把所述移位加数据移i位后输出作为下一步骤的移位加数据,若所述当前运算操作参数是移位位数j以及加标志时,把所述移位加数据移j位后与所述移位加数据相加输出作为下一步骤的移位加数据;若预处理指数小于存储的所有步进值,输出所述移位加数据,转到步骤5); 4)把所述当前指数和所述存储的若干步进值进行比较:若所述当前指数大于或者等于存储的一个或多个步进值,选择其中一个步进值作为当前步进值,把所述当前指数和 所述当前步进值相减的结果作为下一重复本步骤时的当前指数,并且根据所述当前步进值得到对应的当前运算操作参数,根据所述当前运算操作参数对所述移位加数据进行操作,所述操作是:当所述当前运算操作参数是移位位数i时,把所述移位加数据移i位后作为下一重复本步骤时的移位加数据,当所述当前运算操作参数是移位位数j以及加标志时,把所述移位加数据移j位后与所述加数据相加作为下一重复本步骤时的移位加数据,重复步骤4);若所述当前指数小于存储的所有步进值,输出所述移位加数据; 5)当所述输入指 数的正或负判断结果为正时,把所述移位加的数据作为指数运算结果输出,当所述输入指数的正或负判断结果为负时,对所述移位加数据移-k位后输出指数运算结果,指数运算结束。...

【技术特征摘要】

【专利技术属性】
技术研发人员:尹宝林
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11

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

1