一种高精度实现32位整数除法的方法、系统及装置

文档序号:1042311 发布日期:2020-10-09 浏览:19次 >En<

阅读说明:本技术 一种高精度实现32位整数除法的方法、系统及装置 (Method, system and device for realizing 32-bit integer division with high precision ) 是由 谭定富 于 2020-06-24 设计创作,主要内容包括:本发明公开了一种高精度实现32位整数除法的方法,所述方法包括:将第一被除数和第一除数均输入判零单元,当第一被除数和第一除数均不为0,判零单元输出第二被除数和第二除数;将第二被除数和第二除数输入符号提取模块,符号提取模块输出商的符号、第三被除数和第三除数;将第三被除数和第三除数输入缩放模块,对第三被除数和第三除数进行缩放,输出第四被除数、第四除数、第三被除数缩放因子和第三除数缩放因子;将第四被除数、第四除数输入CORDIC迭代单元,更新商及初值value,进行迭代;迭代完成后,CORDIC迭代单元将商输出到结果输出单元,结果输出单元输出商和缩放因子。本发明有效保证了商的精度,且输出位宽较小,方便后续使用,误差小于千分之一。(The invention discloses a method for realizing 32-bit integer division with high precision, which comprises the steps of inputting a first dividend and a first divisor into a zero judging unit, and outputting a second dividend and a second divisor by the zero judging unit when the first dividend and the first divisor are not 0; inputting the second dividend and the second divisor into a symbol extraction module, and outputting the symbol of the quotient, the third dividend and the third divisor by the symbol extraction module; inputting the third dividend and the third divisor into a scaling module, scaling the third dividend and the third divisor, and outputting a fourth dividend, a fourth divisor, a third dividend scaling factor and a third divisor scaling factor; inputting the fourth dividend and the fourth divisor into a CORDIC iteration unit, updating the quotient and the initial value, and performing iteration; and after the iteration is finished, the CORDIC iteration unit outputs the quotient to a result output unit, and the result output unit outputs the quotient and the scaling factor. The invention effectively ensures the precision of quotient, has small output bit width, is convenient for subsequent use, and has error less than one thousandth.)

一种高精度实现32位整数除法的方法、系统及装置

技术领域

本发明属于无线通信技术领域,特别涉及一种高精度实现32位整数除法的方法、系统及装置。

背景技术

在数字信号处理领域,常常用到32位整数除法器,比如在信号归一化,及信道估计等运算处的运用。

现有的除法方案常使用导数除法,SRT法,加减交替法,CORDIC方法等,但这些方法的运算周期,常随着位数增加而大量增加,浪费功耗。其中有的方法需要乘法资源器,而乘法器较消耗资源及运算周期。并且,随着数据位宽的增加,常导致运算器中间位宽越来越大,占用存储空间多。为了保证性能,输出结果位宽较大,后续加法及乘法的使用时资源开销较大。

发明内容

针对上述问题,本发明提供了一种高精度实现32位整数除法的方法,所述方法包括:

将第一被除数和第一除数均输入判零单元,当第一被除数和第一除数均不为0,判零单元输出第二被除数和第二除数;

将第二被除数和第二除数输入符号提取模块,符号提取模块输出商的符号、第三被除数和第三除数;

将第三被除数和第三除数输入缩放模块,对第三被除数和第三除数进行缩放,输出第四被除数、第四除数、第三被除数缩放因子和第三除数缩放因子;

将第四被除数、第四除数输入CORDIC迭代单元,更新商及初值value,进行迭代;

迭代完成后,CORDIC迭代单元将商输出到结果输出单元,结果输出单元输出商和缩放因子。

进一步地,所述方法还包括:

将第一被除数和第一除数均输入判零单元,输出包括:

当第一被除数为0,则结果输出单元直接输出商为0,缩放因子为0;

当第一被除数不为0,第一除数为0,则结果输出单元直接输出商为4095,缩放因子为20。

进一步地,所述商的符号直接发送到结果输出单元;

所述第三被除数缩放因子和第三除数缩放因子直接发送到结果输出单元。

进一步地,所述对第三被除数和第三除数进行缩放具体为:

将第三被除数和第三除数缩放到有效bit数12bit。

进一步地,所述初值value为2^12,迭代次数为12。

进一步地,所述迭代过程包括:

根据当前迭代输入的第四被除数的符号,得到di=-sign(第四被除数);

更新第四被除数:第四被除数=(第四被除数+di*第四除数)*2,更新商:商=商-di*value/2^(i-1),i为迭代次数;

判断更新后第四被除数是否为0,若为0,则迭代直接结束,CORDIC迭代单元将商输出到结果输出单元,否则继续迭代。

进一步地,所述商的计算方式为商*商的符号,所述缩放因子的计算方式为第三被除数缩放因子-第三除数缩放因子-12。

本发明还提供了一种高精度实现32位整数除法的系统,所述系统包括判零单元、符号提取模块、缩放模块、CORDIC迭代单元和结果输出单元,其中,

所述判零单元用于判断第一被除数和第一除数是否为零,并输出第二被除数和第二除数;

所述符号提取模块用于输出商的符号、第三被除数和第三除数;

所述缩放模块用于对第三被除数和第三除数进行缩放,并输出第四被除数、第四除数、第三被除数缩放因子和第三除数缩放因子;

所述CORDIC迭代单元用于更新商及初值value,并进行迭代;

所述结果输出单元用于输出商和缩放因子。

本发明还提供了一种高精度实现32位整数除法的装置,包括:

至少一个处理器;

以及与所述至少一个处理器通信连接的存储器;

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行上述的方法。

本发明通过CORDIC实现除法,只有加法及移位操作,资源消耗较低,方便硬件实现。CORDIC单元增加判零模块,避免无效迭代,降低功耗。通过缩放模块,将被除数、除数缩放到一样的幅度位置,减小了计算位宽,减少了对迭代次数的需求,降低了运算周期。输出结果使用商加缩放因子的形式,有效保证了商的精度,且输出位宽较小,方便后续使用,误差小于千分之一。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例方法的整体流程图;

图2示出了本发明实施例的第i次CORDIC迭代单元的操作示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种高精度实现32位整数除法的方法,示例性的,图1示出了本发明实施例方法的整体流程图,如图1所示,所述方法包括:

步骤一:将第一被除数和第一除数均输入判零单元,当第一被除数和第一除数均不为0,判零单元输出第二被除数和第二除数,进行下一步;

将第一被除数和第一除数均输入判零单元,输出包括:

当第一被除数为0,则结果输出单元直接输出商为0,缩放因子为0;

当第一被除数不为0,第一除数为0,则结果输出单元直接输出商为4095,缩放因子为20。

步骤二:将第二被除数和第二除数输入符号提取模块,符号提取模块输出商的符号、第三被除数和第三除数,其中,所述商的符号直接发送到结果输出单元;

步骤三:将第三被除数和第三除数输入缩放模块,对第三被除数和第三除数进行缩放,且将第三被除数和第三除数缩放到有效bit数12bit,输出第四被除数、第四除数、第三被除数缩放因子和第三除数缩放因子,其中,所述第三被除数缩放因子和第三除数缩放因子直接发送到结果输出单元;

步骤四:将第四被除数、第四除数输入CORDIC迭代单元,更新商及初值value=2^12,进行迭代12次,第i次CORDIC迭代单元的操作如图2所示:

1、根据当前迭代输入的第四被除数的符号,得到di=-sign(第四被除数);

2、更新第四被除数:第四被除数=(第四被除数+di*第四除数)*2,更新商:商=商-di*value/2^(i-1),i为迭代次数;

3、判断更新后第四被除数是否为0,若为0,则迭代直接结束,CORDIC迭代单元将商输出到结果输出单元,否则输出第四被除数,继续迭代。

步骤五:迭代完成后,CORDIC迭代单元将商输出到结果输出单元,结果输出单元输出商和缩放因子,其中,所述商=商*商的符号,所述缩放因子=第三被除数缩放因子-第三除数缩放因子-12。

使用本发明实施例的除法器中间位宽均在14bit内,仅使用加法及移位实现,除法器得到商的最高有效位为12bit。对于计算y/x,输出商a,及缩放因子b,y/x=a*2^(b)。当后续乘法使用时,直接使用a,并继续记下b。当有加法时,加法前后的缩放因子拉齐后直接相加即可。

示例性的,对某一LTE接收机,设最大接收天线为4,最大接收层数为4,当实际接收天线为4,接收层数为2时,设其接收信号为对应的信道估计为则由y=H*x+n,n为2*1矩阵,需要求取x的ML解。

将H及y输入QR分解模块,输出得到4*3的上三角矩阵

Figure BDA0002556007860000054

可以知道y=H*x+n的ML解等价于方程

Figure BDA0002556007860000055

的解,倒推得x1=R23/R22,x2=(R13-R12*x2)/R11

此时,为了解出方程,需要使用本发明实施例的除法器,将被除数R23、除数R22,输入除法器,得到商及缩放因子a、b,则x1=a*2^b,即为所求。

本发明通过CORDIC实现除法,只有加法及移位操作,资源消耗较低,方便硬件实现。CORDIC单元增加判零模块,避免无效迭代,降低功耗。通过缩放模块,将被除数、除数缩放到一样的幅度位置,减小了计算位宽,减少了对迭代次数的需求,降低了运算周期。输出结果使用商加缩放因子的形式,有效保证了商的精度,且输出位宽较小,方便后续使用,误差小于千分之一。

本发明还提供了一种高精度实现32位整数除法的系统,所述系统包括判零单元、符号提取模块、缩放模块、CORDIC迭代单元和结果输出单元,其中,

所述判零单元用于判断第一被除数和第一除数是否为零,并输出第二被除数和第二除数;

所述符号提取模块用于输出商的符号、第三被除数和第三除数;

所述缩放模块用于对第三被除数和第三除数进行缩放,并输出第四被除数、第四除数、第三被除数缩放因子和第三除数缩放因子;

所述CORDIC迭代单元用于更新商及初值value,并进行迭代;

所述结果输出单元用于输出商和缩放因子。

本发明还提供了一种高精度实现32位整数除法的装置,包括:

至少一个处理器;

以及与所述至少一个处理器通信连接的存储器;

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行上述高精度实现32位整数除法的方法。

需要说明的是,本发明实施例中的“第一”、“第二”、“第三”、“第四”仅仅是用于区分作用,不表示顺序关系或其他任何实质性的含义。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于矩阵运算的加速器系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类