一种基于srt算法的高基除法器电路

文档序号:1296073 发布日期:2020-08-07 浏览:19次 >En<

阅读说明:本技术 一种基于srt算法的高基除法器电路 (High-radix divider circuit based on SRT algorithm ) 是由 彭春雨 纪俊康 吴秀龙 卢文娟 蔺智挺 陈军宁 于 2020-04-16 设计创作,主要内容包括:本发明公开了一种基于SRT算法的高基除法器电路,所述电路包括商值选择模块QCHS,所述商值选择模块QCHS中包含多个数值比较模块,采用数值比较的方法产出指定的商值选择编码,利用该商值选择编码产出指定的商值和过程余数,其中的过程余数用于下一次迭代运算的执行,直至产出所有商值和最终余数。上述电路采用迭代循环思想,同时采用相对较高基值产出多位商值,以减少迭代周期数,同时优化迭代电路,减少单个周期运行时间,从而提高运算性能。(The invention discloses a high-radix divider circuit based on an SRT algorithm, which comprises a quotient value selection module QCHS, wherein the quotient value selection module QCHS comprises a plurality of numerical value comparison modules, a numerical value comparison method is adopted to generate a designated quotient value selection code, the quotient value selection code is used to generate a designated quotient value and a process remainder, and the process remainder is used for executing next iterative operation until all quotient values and final remainders are generated. The circuit adopts an iterative cycle idea, and simultaneously adopts a relatively high base value to produce a multi-bit quotient value so as to reduce the number of iterative cycles, and simultaneously optimizes the iterative circuit to reduce the running time of a single cycle, thereby improving the operational performance.)

一种基于SRT算法的高基除法器电路

技术领域

本发明涉及集成电路设计技术领域,尤其涉及一种基于SRT算法的高基除法器电路。

背景技术

当今芯片核心中,运算部件尤为重要。随着计算机功能复杂度的提升,人们对计算机的运算需求也是越来越大。运算部件中,一般都是以基本的四则运算为基础,如加法器、乘法器和除法器。其中,加法和乘法一般采用超前进位加法器和Booth乘法器。而除法器的设计相对来说会复杂一些,一般的设计思想是采用移位减法思想,逐位运算,每次运算算出一位商值和对应的余数,随后在上一位的余数上继续运算,直至最后一位,算出最终的商值和余数,这种思想也是人们普遍的算术手工计算思想,缺点是计算周期长,不利于高性能场景下的应用。

在如今的高性能计算机芯片中,除法器的设计一般采用基于SRT算法的除法器,该类除法器基于移位减法,但不同的是一次运算会算出多位商值,而商值的位数由运算部件选取的基决定,SRT算法是一种高性能的线性收敛除法算法,每次运算可以算出若干固定位数的商值,直至迭代运算完成,算出最终正确的商值和余数,SRT算法的核心为多次迭代的运算单元,算是数字循环算法的一种,SRT算法的关键是基数的大小,它决定了每次迭代可以产出的商值位数,位数越多,迭代次数越少,运算周期就越小,算法性能越高,但相应的硬件设计会显得复杂一些,而现有技术中并没有相应的解决方案。

发明内容

本发明的目的是提供一种基于SRT算法的高基除法器电路,该电路采用迭代循环思想,同时采用相对较高基值产出多位商值,以减少迭代周期数,同时优化迭代电路,减少单个周期运行时间,从而提高运算性能。

本发明的目的是通过以下技术方案实现的:

一种基于SRT算法的高基除法器电路,所述电路主要包括商值选择模块QCHS、被除数移位选择模块、除数整理模块、商值移位整理模块和输出整理模块RESULT_ORDER,其中:

所述商值选择模块QCHS中包含多个数值比较模块,采用数值比较的方法产出指定的商值选择编码,利用该商值选择编码产出指定的商值和过程余数,其中的过程余数用于下一次迭代运算的执行,直至产出所有商值和最终余数;

所述被除数移位选择模块由移位器构成,用于每次迭代运算选取被除数的位值;

所述除数整理模块主要由移位器和加法器构成,用于产出除数的倍数;其中,加法器由超前进位加法器构成;

所述商值移位整理模块同样由移位器构成,用于对每次迭代运算产出的商值进行整理,具体是将每次迭代产出商值放在低位,迭代完成后左移,直至迭代完成,生成最终商值;

所述输出整理模块RESULT_ORDER用于对输出的商值和过程余数进行整理;其中,商值由所述商值移位整理模块给出,过程余数由所述商值选择模块QCHS给出。

由上述本发明提供的技术方案可以看出,上述电路采用迭代循环思想,同时采用相对较高基值产出多位商值,以减少迭代周期数,同时优化迭代电路,减少单个周期运行时间,从而提高运算性能。

附图说明

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

图1为本发明实施例提供的基于SRT算法的高基除法器电路结构示意图;

图2为本发明实施例所述数值比较模块的实现流程示意图。

具体实施方式

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

下面将结合附图对本发明实施例作进一步地详细描述,如图1所示为本发明实施例提供的基于SRT算法的高基除法器电路结构示意图,所述电路主要包括商值选择模块QCHS、被除数移位选择模块、除数整理模块、商值移位整理模块和输出整理模块RESULT_ORDER,其中:

所述商值选择模块QCHS中包含多个数值比较模块,采用数值比较的方法产出指定的商值选择编码,利用该商值选择编码产出指定的商值和过程余数,其中的过程余数用于下一次迭代运算的执行,直至产出所有商值和最终余数;

所述被除数移位选择模块由移位器构成,用于每次迭代运算选取被除数的位值;例如采用基8运算,则从最高位开始,依次选择被除数的三位值参与运算,运算完成后,被除数左移三位;

所述除数整理模块主要由移位器和加法器构成,用于产出除数的倍数;其中,加法器由超前进位加法器构成;具体实现中,偶数倍乘直接采用移位器计算,如2倍除数,将除数左移一位;4倍除数,将除数左移俩位,依次类推;奇数倍乘则采用相邻除数倍乘值加上一个除数值生成,如3倍除数,是将2倍除数加上一个除数值生成;

所述商值移位整理模块同样由移位器构成,用于对每次迭代运算产出的商值进行整理,具体是将每次迭代产出商值放在低位,迭代完成后左移,直至迭代完成,生成最终商值;

所述输出整理模块RESULT_ORDER用于对输出的商值和过程余数进行整理;其中,商值由所述商值移位整理模块给出,过程余数由所述商值选择模块QCHS给出。具体实现中,所述商值选择模块QCHS产出过程余数的迭代循环可以结合时钟信号传递,即可通过时钟控制一个时钟周期可执行的迭代次数。

具体实现中,所述数值比较模块采用多个异或门级联结构,用于判断多位二进制数的大小以产出指定的商值选择编码。如图2所示为本发明实施例所述数值比较模块的实现流程示意图,该数值比较模块的实现过程具体为:

将输入的二进制数A和B的每一位按位异或,得到中间结果T,T的每一位上为“0”表示操作数在该位上数值相同,为“1”表示操作数在该位上数值不同;

由T的最高位逐位判断,直到找到第一个为“1”的位,在对应的位置上判断操作数A的值,若该位A为“1”,则A大于B;若该位A为“0”,则A小于B;

再逐位判断,若T所有位均为“0”,则A等于B。

如图2所示,输出结果为“1”表示操作数A大于或等于B,为“0”则表示A小于B。

另外,商值选择模块QCHS产出的商值选择编码的位宽由选择的基值所决定,该编码的位宽为选择的基值减1,正好对应于选择的基值所支持的最大商值数。例如基值为4,编码位宽为3;基值为8,编码位宽为7。

上述商值选择编码的规则为:

0000000表示商值为0,0000001表示商值为1,0000011表示商值为2,依次类推;

其中,编码中“1”的个数即代表该次运算所产出的商值数值。

举例来说,SRT算法的一般迭代公式如下:

j=1,2,...,k

其中,W为过程余数;r为选取的基;z为对应基的被除数若干位;q为对应基的多位商值;d为除数;k的数值表示操作数需要迭代运算的次数;R为余数。

上述公式有两个重要的参数,基数r和商的冗余因子,对指定的基(一般r=2θ),SRT算法每次迭代算出e位的商值,基数的选取决定了迭代次数k:

k=[Width÷log2 r]max

向上取整,可以看出,基数r越大,迭代次数k越小。

由数值比较模块并行比较rW[j]+Z[j-1]和除数d的相关倍数,对比较结果进行编码,以基8除法为例,通过下列编码产出商值:

COMP_CODE:0000000→q=0

COMP_CODE:0000001→q=1

COMP_CODE:0000011→q=2

COMP_CODE:0000111→q=3

COMP_CODE:0001111→q=4

COMP_CODE:0011111→q=5

COMP_CODE:0111111→q=6

COMP_CODE:1111111→q=7

该七位编码的每一位值均为数值比较模块生成;COMP_CODE[0]=1表示rW[j]+Z[i-1]大于等于d;COMP_CODE[1]=1表示rW[j]+Z[i-1]大于等于2d;COMP_CODE[3]=1表示rW[j]+Z[i-1]大于等于3d;依次类推,故可以依据编码中1的个数确定商值,编码中“1”的个数即代表该次运算所产出的商值数量。

COMP_CODE编码还需要控制产出对应的过程余数,过程余数W的生成与商值、上阶过程余数以及除数d有关,计算公式为:

W[j-1]=rW[j]+Z[j-1]-q[j-1]d

过程余数Wj-1依据上述公式通过加法实现,本实施例中的加法器采用超前进位加法器,对各模块进行Verilog代码书写,在RTL级得以实现和验证,并利用Candence的前端仿真工具NC-Verilog进行了RTL级的验证。

本实例中采用基8的32位除法,设计代码中需要例化11个商值选择模块QCHS,根据操作数的位宽设计适当的数值比较模块以及超前进位加法器。商值选择模块QCHS之间相互迭代,依次产出3位商值,同时在商值选择模块QCHS中例化7个对应位宽的数值比较模块,用于同时生成COMP_CODE各位编码值;主模块以及各个子模块之间多次例化加法器,以备各个阶段数据的整理。

另外,由于基8一次迭代出三位商值,而选择32位操作数运算无法除尽;所以本实例中还可以对32位操作数进行拓宽,即在高位补一位“0”将32位操作数拓展为33位操作数;同理对于64位操作数即在高位补俩位“0”,同时对应的商值位宽也需要定义为33位,但由于最高位恒为“0”,故商的最高位也恒为“0”。

值得注意的是,本发明实施例中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

7页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于块浮点的FBLMS算法的FPGA实现装置及方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类