一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

定点数除法的计算方法及装置

2023-02-06 16:38:54 来源:中国专利 TAG:


1.本发明涉及集成电路和芯片设计技术领域,尤其涉及定点数除法的计算方法及装置。


背景技术:

[0002][0003]
在数字芯片设计中,加减乘除运算的电路实现是系统实现的基础。加法、减法与乘法可以方便地在电路层面实现,但是除法操作,尤其是小数除法,会消耗非常大的计算资源,并占用大量的计算时间。
[0004]
目前有多种面向整数的除法器方案,但定点数除法器大多基于迭代的方法,需要的时钟周期数多、不固定,且用时较长,不利于集成电路系统设计。


技术实现要素:

[0005]
本发明实施例提供一种定点数除法的计算方法,用以利用浮点数存储方式快速计算除数的倒数,将除法运算转化为乘法运算,所需时钟周期少且固定,可提高数字集成系统的性能,该方法包括:
[0006]
根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;
[0007]
将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;
[0008]
将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0009]
将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0010]
对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;
[0011]
根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0012]
本发明实施例还提供一种定点数除法的计算装置,用以利用浮点数存储方式快速计算除数的倒数,将除法运算转化为乘法运算,所需时钟周期少且固定,可提高数字集成系统的性能,该装置包括:
[0013]
符号计算模块,用于根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;
[0014]
第一浮点数确定模块,用于将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;
[0015]
第二浮点数确定模块,用于将预设常数和第一浮点数的整数数值之间的差值,视
作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0016]
第一定点数确定模块,用于将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0017]
牛顿迭代模块,用于对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;
[0018]
除法运算结果生成模块,用于根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0019]
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述定点数除法的计算方法。
[0020]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述定点数除法的计算方法。
[0021]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述定点数除法的计算方法。
[0022]
本发明实施例中,根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;将定点数形式的除数,转化为32bit 浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果,从而利用浮点数的存储方式,快速计算除数的倒数,进而将除法运算转化为乘法运算,得到最终结果,因所需时钟周期少且固定,解决了现有定点数除法器所需时钟周期多且不固定的缺陷,能够广泛应用于数字电路设计领域,可提高数字集成系统的性能。
附图说明
[0023]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0024]
图1为本发明实施例中一种定点数除法的计算方法的流程示意图;
[0025]
图2为本发明实施例中一种ieee 32位浮点格式下数据存储格式的具体示例图;
[0026]
图3为本发明实施例中一种定点数除法器电路的设计示例图;
[0027]
图4为本发明实施例中一种vivado hls综合的时序结果以及资源占用情况的实例图;
[0028]
图5为本发明实施例中提供的一种计算机设备的示意图;
[0029]
图6为本发明实施例中一种定点数除法的计算装置的结构示意图。
具体实施方式
[0030]
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0031]
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如, a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
[0032]
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
[0033][0034]
本发明实施例涉及下列名词,如下进行解释:
[0035]
在数字芯片设计中,加减乘除运算的电路实现是系统实现的基础。加法、减法与乘法可以方便地在电路层面实现,但是除法操作,尤其是小数除法,会消耗非常大的计算资源,并占用大量的计算时间。目前有多种面向整数的除法器方案,但定点数除法器大多基于迭代的方法,需要的时钟周期数多、不固定,且用时较长,不利于集成电路系统设计。
[0036]
为了解决上述问题,本发明实施例提供了一种定点数除法的计算方法,用以利用浮点数存储方式快速计算除数的倒数,将除法运算转化为乘法运算,所需时钟周期少且固定,可提高数字集成系统的性能,参见图1,该方法可以包括:
[0037]
步骤101:根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;
[0038]
步骤102:将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;
[0039]
步骤103:将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0040]
步骤104:将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0041]
步骤105:对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;
[0042]
步骤106:根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运
算结果。
[0043]
本发明实施例中,根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;将定点数形式的除数,转化为32bit 浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果,从而利用浮点数的存储方式,快速计算除数的倒数,进而将除法运算转化为乘法运算,得到最终结果,因所需时钟周期少且固定,解决了现有定点数除法器所需时钟周期多且不固定的缺陷,能够广泛应用于数字电路设计领域,可提高数字集成系统的性能。
[0044]
具体实施时,首先根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号。
[0045]
在一个实施例中,按如下公式根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号:
[0046]
sign
result
=sign
x xor signy[0047]
其中,sign
result
表示定点数形式的被除数和除数之商的正负符号;sign
x
表示定点数形式的被除数x的正负符号;signy表示定点数形式的除数y的正负符号。
[0048]
在上述实施例中,可通过直接计算sign
result
=sign
x xor signy,得到的 sign
result
为最终结果的符号(即正负)。
[0049]
具体实施时,在根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号后,将定点数形式的除数,转化为32bit 浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值。
[0050]
值得说明的是:在将定点数形式的除数,转化为32bit浮点数时,是将定点数形式的除数的绝对值,转化为32bit浮点数。通过进行绝对值计算,可应对定点数形式的除数为负数的情况。
[0051]
在一个实施例中,将定点数形式的除数y转为ieee 754标准的32bit浮点数形式,记为浮点数形式除数y
float
,即第一浮点数。
[0052]
在上述实施例中,在计算第一浮点数的整数数值的过程中,可将y
float
的32bits 视作无符号32bit整数y
long
,因此y
float
与y
long
具有相同的32bit存储格式,但表示的数据并不同,即y
float
与y
long
的数值并不相同。
[0053]
具体实施时,在将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号 32bit整数时的数值后,将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式。
[0054]
在一个实施例中,还包括:
[0055]
按如下公式计算预设常数和第一浮点数的整数数值之间的差值:
[0056]yinv1_long
=0x7ef477d3-y
long
[0057]
其中,y
inv1_long
表示预设常数和第一浮点数的整数数值之间的差值;0x7ef477d3 为十六进制的预设常数;y
long
表示在将第一浮点数y
float
视作无符号32bit整数时的第一浮点数的整数数值。
[0058]
在一个实施例中,可计算y
inv1_long
=0x7ef477d3-y
long
,得到一个新的无符号整数,记为y
inv1_long

[0059]
在上述实施例中,0x7ef477d3为十六进制数。
[0060]
具体实施时,在将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式后,将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值。
[0061]
实施例中,可将y
inv1_long
的32bits视为float类型数y
inv1_float
,因此y
inv1_float
与 y
inv1_long
具有相同的32bit储存格式,但表示的数据并不同。
[0062]
将y
inv1_float
转换为定点数形式,得到1/y的一阶估计值(即除数的倒数一阶估计) y
inv1
(其为定点数形式)。
[0063]
在一个实施例中,按如下公式对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值:
[0064]
tmp1=y
inv1
*y
[0065]
tmp2=tmp1*y
inv1
[0066]yinv2
=(y
inv1
《《1)-tmp2
[0067]
其中,tmp1和tmp2表示计算中间值;y
inv1
表示定点数形式的除数的倒数的一阶估计值;其中,作为所述一阶估计值y
inv1
的第一定点数,由第二浮点数y
inv1_float
进行转化得到;第二浮点数y
inv1_float
由将所述差值y
inv1_long
视作浮点数而得到;y
inv2
表示定点数形式的除数的倒数的二阶估计值;y表示定点数形式的除数。
[0068]
具体实施时,在将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值后,对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值。
[0069]
实施例中,为了使得到的倒数更加准确,需要对一阶估计进行一次牛顿迭代。
[0070]
定义函数其中y为输入的除数;y
inv
为除数的倒数。在迭代中可以视作常数,假设已有一阶估计y
inv1
,则二阶估计y
inv2
计算方法为:
[0071][0072]
具体实施时,在对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值后,根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0073]
实施例中,可将定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,进行组合,得到定点数形式的被除数、和定点数形式的除
数之商。
[0074]
值得说明的是:在根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果时,所涉及的定点数形式的被除数,为该定点数形式的被除数的绝对值。通过进行绝对值计算,可应对定点数形式的被除数为负数的情况。
[0075]
本发明实施例中,根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;将定点数形式的除数,转化为32bit 浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果,从而利用浮点数的存储方式,快速计算除数的倒数,进而将除法运算转化为乘法运算,得到最终结果,因所需时钟周期少且固定,解决了现有定点数除法器所需时钟周期多且不固定的缺陷,能够广泛应用于数字电路设计领域,可提高数字集成系统的性能。
[0076]
如上述,本发明实施例可基于浮点数表达的对数性质,实现对除数取倒数将定点数除法转化为定点数乘法x/y=x*(1/y),而不是现有技术中的迭代减法。与现有技术相比,本发明所提供的除法器所用时钟周期数更少,且是固定值,能够大幅提高集成电路系统的性能,可以解决现有除法器所需时钟周期多且不固定的缺陷,为数字集成系统设计提供新的除法器选择,同时,本发明实施例也提供了一种定点数除法器的集成电路计算单元的设计方案。
[0077]
本发明实施例中提供的一种定点数除法的计算装置,如下面的实施例所述。由于该装置解决问题的原理与定点数除法的计算方法相似,因此该装置的实施可以参见定点数除法的计算方法的实施,重复之处不再赘述。
[0078]
本发明实施例还提供一种定点数除法的计算装置,用以利用浮点数存储方式快速计算除数的倒数,将除法运算转化为乘法运算,所需时钟周期少且固定,可提高数字集成系统的性能,如图6所示,该装置包括:
[0079]
符号计算模块601,用于根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;
[0080]
第一浮点数确定模块602,用于将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;
[0081]
第二浮点数确定模块603,用于将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0082]
第一定点数确定模块604,用于将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0083]
牛顿迭代模块605,用于对所述一阶估计值进行牛顿迭代,得到定点数形式的除数
的倒数的二阶估计值;
[0084]
除法运算结果生成模块606,用于根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0085]
在一个实施例中,符号计算模块,具体用于:
[0086]
按如下公式根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号:
[0087]
sign
result
=sign
x xor signy[0088]
其中,sign
result
表示定点数形式的被除数和除数之商的正负符号;sign
x
表示定点数形式的被除数x的正负符号;signy表示定点数形式的除数y的正负符号。
[0089]
在一个实施例中,还包括:
[0090]
差值计算模块,用于:
[0091]
按如下公式计算预设常数和第一浮点数的整数数值之间的差值:
[0092]yinv1_long
=0x7ef477d3-y
long
[0093]
其中,y
inv1_long
表示预设常数和第一浮点数的整数数值之间的差值;0x7ef477d3 为十六进制的预设常数;y
long
表示在将第一浮点数y
float
视作无符号32bit整数时的第一浮点数的整数数值。
[0094]
在一个实施例中,牛顿迭代模块,具体用于:
[0095]
按如下公式对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值:
[0096]
tmp1=y
inv1
*y
[0097]
tmp2=tmp1*y
inv1
[0098]yinv2
=(y
inv1
《《1)-tmp2
[0099]
其中,tmp1和tmp2表示计算中间值;y
inv1
表示定点数形式的除数的倒数的一阶估计值;其中,作为所述一阶估计值y
inv1
的第一定点数,由第二浮点数y
inv1_float
进行转化得到;第二浮点数y
inv1_float
由将所述差值y
inv1_long
视作浮点数而得到;y
inv2
表示定点数形式的除数的倒数的二阶估计值;y表示定点数形式的除数。
[0100]
下面给出一个具体实施例,来说明本发明的装置的具体应用,该实施例中,可以包括如下模块:
[0101]
符号运算单元(即上述的符号计算模块)、数据运算单元(即上述的第一浮点数确定模块、第二浮点数确定模块、第一定点数确定模块、牛顿迭代模块和除法运算结果生成模块)。
[0102]
其中,符号运算单元可用于得到商的符号,数据运算单元可用于得到商的绝对值。
[0103]
如下,对符号运算单元、数据运算单元进行具体说明:
[0104]
一、对于符号运算单元,直接计算sign
result
=sign
x xor signy,得到的 sign
result
为最终结果的符号(即正负)。
[0105]
二、对于数据运算单元,首先将原始定点数形式的输入x
original
与y
original
取绝对值,分别记为x与y;然后计算1/y,然后将x与1/y相乘,最终得到x/y。
[0106]
下面介绍计算1/y的方法:
[0107]
1.首先将定点数形式的除数y转为ieee 754标准的32bit浮点数形式,记为浮点数形式除数y
float
(即第一浮点数);
[0108]
2.将定点数形式的除数y,转化为32bit浮点数,得到第一浮点数y
float
;计算第一浮点数y
float
的整数数值y
long
;所述整数数值y
long
用于描述在将第一浮点数视作无符号32bit整数时的数值;具体而言,可将y
float
的32bits视作无符号32bit整数y
long
,因此y
float
与y
long
具有相同的32bit存储格式,但表示的数据并不同,即第一浮点数 y
float
的整数数值,和y
long
的整数数值并不相同;
[0109]
3.计算y
inv1_long
=0x7ef477d3-y
long
,得到一个新的无符号整数,记为 y
inv1_long

[0110]
4.将预设常数和第一浮点数y
float
的整数数值y
long
之间的差值y
inv1_long
,视作第二浮点数y
inv1_float
;所述差值和所述第二浮点数存在相同的32bit存储格式;具体而言,可将y
inv1_long
的32bits视为float类型数y
inv1_float
,因此y
inv1_float
与y
inv1_long
具有相同的32bit储存格式,但表示的数据并不同;
[0111]
5.将第二浮点数y
inv1_float
,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值y
inv1
;具体而言,可将y
inv1_float
转换为定点数形式,得到1/y的一阶估计值(即除数的倒数一阶估计)y
inv1
(其为定点数形式);
[0112]
6.对所述一阶估计值y
inv1
进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值y
inv2
;具体而言,可对y
inv1
进行一次牛顿迭代:
[0113]
tmp1=y
inv1
*y
[0114]
tmp2=tmp1*y
inv1
[0115]yinv2
=(y
inv1
《《1)-tmp2
[0116]
得到1/y的二阶估计值(即除数的倒数二阶估计)y
inv2
,注意此条中的运算均为定点数运算。
[0117]
三、最后,将被除数x与除数的倒数二阶估计y
inv2
相乘,并将符号位设置为符号运算单元产生的符号,得到最终的除法结果。
[0118]
下面对计算1/y的原理进行阐述。具体的计算方法为:
[0119]
根据如下的“一、引理”,导出“二、取倒数”,得到一阶估计值,然后再用“三、牛顿”迭代优化计算精度,得到二阶估计值。
[0120]
一、引理
[0121]
首先,ieee 32位浮点格式下,数据存储如图2所示。
[0122]
给定一个整数,则符号位为0,定义8bit指数所表达的无符号整数为e
x
,23bit 尾数表达的无符号整数为m
x
,那么浮点数实际表示的值为这里 e
x
=e
x-127,m
x
=m
x
/2
23

[0123]
在对x取对数时,有:
[0124]
log(x)=e
x
log(1 m
x
)≈e
x
m
x
σ
[0125]
其中σ为取近似时的误差项。
[0126]
如果把存储x的32bit视作无符号32bit整数,那么它表示的值应为:
[0127]ix
=e
x
*2
23
m
x
[0128]
进而
[0129]ix
=2
23
(e
x
127 m
x
)=2
23
(e
x
m
x
σ 127-σ)=2
23
[log(x) 127-σ]
[0130]
记l=2
23
,b=127,可得
[0131][0132]
二、取倒数
[0133]
根据上述引理,可以得到:
[0134]
给定y
inv
=1/y,有
[0135]
log(y
inv
)=-log(y)
[0136]
进而
[0137][0138][0139]
取σ=0.0450466,可得
[0140]
得到的即为对1/y的一阶估计y
inv1

[0141]
上述步骤即为确定0x7ef477d3为十六进制的预设常数的具体步骤的实例。
[0142]
三、牛顿迭代
[0143]
为了使得到的倒数更加准确,需要对一阶估计进行一次牛顿迭代。定义函数
[0144]
其中y为输入的除数;y
inv
为除数的倒数。在迭代中可以视作
[0145]
常数,假设已有一阶估计y
inv1
,则二阶估计y
inv2
计算方法为:
[0146][0147]
四、可被替代/绕过项
[0148]
0x7ef477d3可根据实际需求,进行自由范围的修改,可被替代为一个相近的数。
[0149]
进一步地,根据提出的运算方法,给出相应的电路设计,如图3所示:
[0150]
电路中:
[0151]
xor异或器,用于根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;abs绝对值计算单元,用于将定点数形式的输入x
original
与y
original
取绝对值,分别记为x与y;
[0152]
fixfloat-con定点-浮点转换器,用于将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;
[0153]
计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号 32bit整数时的数值;
[0154]
sub减法器,用于计算预设常数和第一浮点数的整数数值之间的差值;
[0155]
将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0156]
floatfix-con浮点-定点转换器,用于将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0157]
牛顿迭代模块,用于对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的
倒数的二阶估计值;
[0158]
除法运算结果生成模块,用于根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0159]
在数据运算部分,fixfloat-con是将定点数转换为浮点数的子模块, floatfix-con是将浮点数转为定点数的子模块,均可采用组合逻辑实现。sub为减法器,mul为乘法器。《《1表示乘以2的操作,对于定点数,乘2可用使用移位代替,用来加速运算。
[0160]
在符号运算部分,xor为异或计算单元,得到最终结果的符号。
[0161]
最终符号与结果的绝对值在com模块中进行合并,得到最终的运算结果:如果结果为正,则直接输出x/y,否则对x/y取反后再输出。
[0162]
本发明实施例还给出了一个应用上述方法的实例,该实例可使用vivado hls进行综合得到最终的除法计算结果,如图4所示,是vivado hls综合得到的时序情况与资源占用情况。如图4所示,电路运行在100mhz的时钟频率下,每次运行须5 个时钟周期,每秒可进行20m次计算;所涉及的电路消耗12个数据处理单元、579 个寄存器以及2093个查找表。
[0163]
可证实:对于有符号定点数运算,本发明实施例的除法器可以在5个时钟周期内实现,并对于不同输入,均为5周期。
[0164]
本发明实施例提供一种用于实现上述定点数除法的计算方法中的全部或部分内容的计算机设备的实施例所述计算机设备具体包含有如下内容:
[0165]
处理器(processor)、存储器(memory)、通信接口(communications interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该计算机设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该计算机设备可以参照实施例用于实现定点数除法的计算方法的实施例及用于实现定点数除法的计算装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
[0166]
图5为本技术实施例的计算机设备1000的系统构成的示意框图。如图5所示,该计算机设备1000可以包括中央处理器1001和存储器1002;存储器1002耦合到中央处理器1001。值得注意的是,该图5是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
[0167]
一实施例中,定点数除法的计算功能可以被集成到中央处理器1001中。其中,中央处理器1001可以被配置为进行如下控制:
[0168]
根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;
[0169]
将定点数形式的除数,转化为32bit浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;
[0170]
将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;
[0171]
将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;
[0172]
对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;
[0173]
根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果。
[0174]
在另一个实施方式中,定点数除法的计算装置可以与中央处理器1001分开配置,例如可以将定点数除法的计算装置配置为与中央处理器1001连接的芯片,通过中央处理器的控制来实现定点数除法的计算功能。
[0175]
如图5所示,该计算机设备1000还可以包括:通信模块1003、输入单元1004、音频处理器1005、显示器1006、电源1007。值得注意的是,计算机设备1000也并不是必须要包括图5中所示的所有部件;此外,计算机设备1000还可以包括图5中没有示出的部件,可以参考现有技术。
[0176]
如图5所示,中央处理器1001有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器1001接收输入并控制计算机设备 1000的各个部件的操作。
[0177]
其中,存储器1002,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器1001可执行该存储器1002 存储的该程序,以实现信息存储或处理等。
[0178]
输入单元1004向中央处理器1001提供输入。该输入单元1004例如为按键或触摸输入装置。电源1007用于向计算机设备1000提供电力。显示器1006用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。
[0179]
该存储器1002可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器1002 还可以是某种其它类型的装置。存储器1002包括缓冲存储器1021(有时被称为缓冲器)。存储器1002可以包括应用/功能存储部1022,该应用/功能存储部1022用于存储应用程序和功能程序或用于通过中央处理器1001执行计算机设备1000的操作的流程。
[0180]
存储器1002还可以包括数据存储部1023,该数据存储部1023用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由计算机设备使用的数据。存储器1002的驱动程序存储部1024可以包括计算机设备的用于通信功能和/或用于执行计算机设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
[0181]
通信模块1003即为经由天线1008发送和接收信号的发送机/接收机1003。通信模块(发送机/接收机)1003耦合到中央处理器1001,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
[0182]
基于不同的通信技术,在同一计算机设备中,可以设置有多个通信模块1003,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)1003 还经由音频处理器1005耦合到扬声器1009和麦克风1010,以经由扬声器1009提供音频输出,并接收来自麦克风1010的音频输入,从而实现通常的电信功能。音频处理器1005可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器1005 还耦合到中央处理器1001,从而使得可以通过麦克风1010能够在本机上录音,且使得可以通过扬声器1009来播放本机上存储的声音。
[0183]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述定点数除法的计算方法。
[0184]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述定点数除法的计算方法。
[0185]
本发明实施例中,根据定点数形式的被除数、和定点数形式的除数的正负符号,确定定点数形式的被除数和除数之商的正负符号;将定点数形式的除数,转化为32bit 浮点数,得到第一浮点数;计算第一浮点数的整数数值;所述整数数值用于描述在将第一浮点数视作无符号32bit整数时的数值;将预设常数和第一浮点数的整数数值之间的差值,视作第二浮点数;所述差值和所述第二浮点数存在相同的32bit存储格式;将第二浮点数,转化为第一定点数;将第一定点数,作为定点数形式的除数的倒数的一阶估计值;对所述一阶估计值进行牛顿迭代,得到定点数形式的除数的倒数的二阶估计值;根据定点数形式的被除数和除数之商的正负符号、以及所述二阶估计值与定点数形式的被除数的乘积,生成定点数形式的被除数、和定点数形式的除数的除法运算结果,从而利用浮点数的存储方式,快速计算除数的倒数,进而将除法运算转化为乘法运算,得到最终结果,因所需时钟周期少且固定,解决了现有定点数除法器所需时钟周期多且不固定的缺陷,能够广泛应用于数字电路设计领域,可提高数字集成系统的性能。
[0186]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等) 上实施的计算机程序产品的形式。
[0187]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0188]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0189]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0190]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献