一种高精度低时延实现32位整数除法的方法及装置

文档序号:1003151 发布日期:2020-10-23 浏览:23次 >En<

阅读说明:本技术 一种高精度低时延实现32位整数除法的方法及装置 (Method and device for realizing 32-bit integer division with high precision and low time delay ) 是由 谭定富 于 2020-07-10 设计创作,主要内容包括:本发明提供一种高精度低时延实现32位整数除法的方法及装置,包括有如下步骤:S1、将被除数,除数,输入判零单元如果被除数为0,商直接输出0,缩放因子为0;S2、将1输出的被除数,除数,输入符号提取模块,输出商的符号及被除数,除数的模值。本发明中,利用较少迭代次数CORDIC实现牛顿迭代的初值,只有加法及移位操作,资源消耗较低,方便硬件实现,通过缩放模块,将被除数除数缩放到一样的幅度位置,减小了计算位宽,减少了对迭代次数的需求,降低了运算周期,增加一次牛顿迭代,以少量运算器及时延的代价,增加了运算精度,输出结果使用商加缩放因子的形式,有效保证了商的精度,且输出位宽较小,方便后续使用。误差小于千分之一。(The invention provides a method and a device for realizing 32-bit integer division with high precision and low time delay, which comprises the following steps: s1, if the dividend, the divisor and the input zero judgment unit are 0, the quotient directly outputs 0 and the scaling factor is 0; and S2, outputting the dividend and the divisor output by 1, inputting the symbol extraction module, and outputting the symbol of the quotient, the dividend and the modulus value of the divisor. According to the invention, the initial value of Newton iteration is realized by using CORDIC with less iteration times, only addition and shift operations are required, the resource consumption is lower, the hardware implementation is convenient, dividend divisor is scaled to the same amplitude position through the scaling module, the calculation bit width is reduced, the requirement on the iteration times is reduced, the operation period is reduced, one Newton iteration is added, the operation precision is increased with the cost of a small number of operators and time delay, the output result uses the form of quotient plus scaling factor, the quotient precision is effectively ensured, the output bit width is smaller, and the subsequent use is convenient. The error is less than one in a thousand.)

一种高精度低时延实现32位整数除法的方法及装置

技术领域

本发明涉及数字信号处理技术领域,特别的为一种高精度低时延实现32位整数除法的方法及装置。

背景技术

在数字信号处理领域,常常用到32位整数除法器,比如在信号归一化,及信道估计等运算处的运用,但是现有的32位整数除法器存在以下缺点:

1、现有的除法方案常使用导数除法,SRT法,加减交替法,CORDIC方法等,这些方法的运算周期,常随着位数增加而大量增加,浪费功耗。

2、随着数据位宽的增加,常导致运算器中间位宽越来越大,占用存储空间多。

3、为了保证性能,输出结果位宽较大,后续加法及乘法的使用时资源开销较大。

4、倒数除法,常用牛顿迭代加一次乘法实现a/b,但牛顿迭代的初值来源一般有两种,查表法或者是Tylor展式,这两种方法均需要存储空间,且Tylor展式需要额外的乘法及加法,耗资源。

发明内容

本发明提供的发明目的在于提供一种高精度低时延实现32位整数除法的方法及装置,可有效解决上述背景技术中的问题。

为实现以上目的,本发明通过以下技术方案予以实现:一种高精度低时延实现32位整数除法的方法,包括有如下步骤:

S1、将被除数,除数,输入判零单元如果被除数为0,商直接输出0,缩放因子为0。

S2、将1输出的被除数,除数,输入符号提取模块,输出商的符号及被除数,除数的模值。

S3、将2输出的被除数、除数输入缩放模块,实现将被除数,除数缩放到有效bit数12bit,输出被除数、除数,并分别记下被除数、除数的缩放因子。

S4、将3输出的除数输入CORDIC单元,更新商,余数=2^12,及初值value=2^12,进行迭代6次。

S5、迭代6次完成后,将商和余数输出作为初值,给到牛顿迭代单元,进行一次牛顿迭代。

S6、将5输出的商和3输出的被除数输入,输出商=商*被除数的符号/2^12。

S7、更新6输出的商,输出商=商*商的符号;缩放因子=被除数缩放因子-除数缩放因子-12,用于后续使用。

S8、除法器CORDIC单元中间位宽均在S14bit内,仅使用加法及移位实现,得到牛顿迭代的初值。

S9、除法器得到商的最高有效12bit位,对于计算y/x,该模块输出商a,及缩放因子b,y/x=a*2^(b)。

进一步的,在根据S1中的操作步骤中,若被除数不为0,除数为0,商直接输出为4095,移位因子为20,若被除数,除数均不为0,输入下一步。

进一步的,根据S4中的操作步骤,第i次CORDIC迭代单元的操作如下:

S401、根据当前迭代输入的余数的符号,得到di=-sign(余数)。

S402、更新余数为:余数=(余数+di*除数)*2,更新商为:商=商-di*value/2^(i-1)。

进一步的,根据S5中的操作步骤,还包括以下步骤:

S501、判断余数是否为0,若为0,结束牛顿迭代,直接输出到6。

S502、更新余数=商*余数/2^18,输出余数。

S503、将S501输出的余数输入,更新商=商+余数,输出商。

进一步的,在根据S9中的操作步骤:在后续乘法使用时,直接使用a,并继续记下b,当有加法时,加法前后的缩放因子拉齐后直接相加即可。

一种高精度低时延实现32位整数除法的装置,包括:除法器系统,所述除法器系统包括输入模块、提取模块、缩放模块、计算模块和输出模块。

进一步的,所述输入模块用于对数值进行输入;所述提取模块用于对被除数和除数的数值进行提取;所述缩放模块用于对被除数和除数进行缩放处理,同时对被除数和除数的缩放因子进行记录;所述计算模块用于对输入的数值进行计算;所述输出模块用于对计算后的数值进行输出。

本发明提供了一种高精度低时延实现32位整数除法的方法及装置。具备以下有益效果:

(1)、本发明中:利用较少迭代次数CORDIC实现牛顿迭代的初值,只有加法及移位操作,资源消耗较低,方便硬件实现。

(2)、本发明中:通过缩放模块,将被除数除数缩放到一样的幅度位置,减小了计算位宽,减少了对迭代次数的需求,降低了运算周期,增加一次牛顿迭代,以少量运算器及时延的代价,增加了运算精度。

(3)、本发明中:输出结果使用商加缩放因子的形式,有效保证了商的精度,且输出位宽较小,方便后续使用。误差小于千分之一。

(4)、本发明中:该方法和一般的CORIDC方案比,大大降低了迭代次数,减小了运算周期,和一般的牛顿迭代方案相比,使用CORDIC计算初值及余数,仅仅增加少量的运算时延,减少了存储及乘法加法器的需求,具有优越性。

附图说明:

图1为本发明的系统框图;

图2为本发明的除法器整体框图;

图3为本发明的第i次CORDIC迭代单元框图;

图4为本发明的牛顿迭代单元框图。

具体实施方式

以下参照具体的实施例来说明本发明。本领域技术人员能够理解,这些实施例仅用于说明本发明,其不以任何方式限制本发明的范围。

实施1:参照图1-4:一种高精度低时延实现32位整数除法的方法,在数字信号处理领域,比如在信号归一化,及信道估计等运算处常有运用,该方法实现步骤如下:

步骤一:将被除数,除数,输入判零单元如果被除数为0,商直接输出0,缩放因子为0,如果被除数不为0,除数为0,商直接输出为4095,移位因子为20,若被除数,除数均不为0,输入下一步。

步骤二:将1输出的被除数,除数,输入符号提取模块,输出商的符号及被除数,除数的模值。

步骤三:将2输出的被除数、除数输入缩放模块,实现将被除数,除数缩放到有效bit数12bit,输出被除数、除数,并分别记下被除数、除数的缩放因子。

步骤四:将3输出的除数输入CORDIC单元,更新商,余数=2^12,及初值value=2^12,进行迭代6次,第i次CORDIC迭代单元的操作如下:

1)根据当前迭代输入的余数的符号,得到di=-sign(余数)。

2)更新余数为:余数=(余数+di*除数)*2。更新商为:商=商-di*value/2^(i-1)。

步骤五:迭代6次完成后,将商和余数输出作为初值,给到牛顿迭代单元,进行一次牛顿迭代:

1)判断余数是否为0,若为0,结束牛顿迭代,直接输出到6。否则,进行(2)。

2)更新余数=商*余数/2^18;,输出余数。

3)将1)输出的余数输入,更新商=商+余数,输出商。

步骤六:将5输出的商和3输出的被除数输入,输出商=商*被除数的符号/2^12。

步骤七:更新6输出的商,输出商=商*商的符号;缩放因子=被除数缩放因子-除数缩放因子-12,用于后续使用。

步骤八:该除法器CORDIC单元中间位宽均在S14bit内,仅使用加法及移位实现。得到牛顿迭代的初值。

步骤九:该除法器得到商的最高有效12bit位,对于计算y/x,该模块输出商a,及缩放因子b,y/x=a*2^(b)。当后续乘法使用时,直接使用a,并继续记下b,当有加法时,加法前后的缩放因子拉齐后直接相加即可。

一种高精度低时延实现32位整数除法的装置,包括:除法器系统,除法器系统包括输入模块、提取模块、缩放模块、计算模块和输出模块,输入模块用于对数值进行输入;提取模块用于对被除数和除数的数值进行提取;缩放模块用于对被除数和除数进行缩放处理,同时对被除数和除数的缩放因子进行记录;计算模块用于对输入的数值进行计算;输出模块用于对计算后的数值进行输出。

对某一LTE接收机,设最大接收天线为4,最大接收层数为4,当实际接收天线为4,接收层数为2时,设其接收信号为对应的信道估计为

Figure BDA0002579135120000052

则由y=H*x+n,n为2*1矩阵,需要求取x的ML解。

将H及y输入QR分解模块,输出得到4*3的上三角矩阵可以知道y=H*x+n的ML解等价于方程

Figure BDA0002579135120000062

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

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

本发明中,利用较少迭代次数CORDIC实现牛顿迭代的初值,只有加法及移位操作,资源消耗较低,方便硬件实现,通过缩放模块,将被除数除数缩放到一样的幅度位置,减小了计算位宽,减少了对迭代次数的需求,降低了运算周期,增加一次牛顿迭代,以少量运算器及时延的代价,增加了运算精度,输出结果使用商加缩放因子的形式,有效保证了商的精度,且输出位宽较小,方便后续使用。误差小于千分之一,该方法和一般的CORIDC方案比,大大降低了迭代次数,减小了运算周期,和一般的牛顿迭代方案相比,使用CORDIC计算初值及余数,仅仅增加少量的运算时延,减少了存储及乘法加法器的需求,具有优越性。

以上所述的仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:具有浮动栅极晶体管类型存储单元的随机码产生器

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类