一种除法器及除法运算方法

文档序号:10593818阅读:643来源:国知局
一种除法器及除法运算方法
【专利摘要】本发明公开了一种除法器及除法运算方法,属于数字信号处理电路技术领域,所述除法器采用基数N算法,N为2i且i为大于等于3的正整数,初始被除数和初始除数的商大于等于?N小于等于N;所述除法器包括:符号位确定单元(1),用于判定初始被除数与初始除数的商值结果的符号位;除数倍数计算单元(2),用于计算非零初始除数的数值位的P倍,以获得第P个除数倍数值;令P依次在区间1~N内取整数值,以获得N个除数倍数值;迭代计算单元(3),用于对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,以获得完整商值结果。实现了在除法器迭代计算时灵活地选择每次产生的商的位数,在快速运算的同时不占用过多的硬件面积。
【专利说明】
一种除法器及除法运算方法
技术领域
[0001]本发明涉及数字信号处理电路技术领域,尤其涉及一种除法器及除法运算方法。
【背景技术】
[0002]随着现代信息处理技术的迅猛发展,除法器作为微处理器的一个重要运算部件,在电子电路设计中得到了广泛应用。除法器的运算速度、性能、功耗等都会影响到整个微处理器的性能,所以提高除法器的性能是提高整个微处理器性能的关键因素。
[0003]除法器的硬件实现方法有多种:一、使用阵列除法器,可以在一个时钟周期内做完整个除法运算,但是硬件面积大,逻辑延时长;二、用乘法器实现,先通过求除数的倒数,然后乘上被除数,这种方法主要应用在浮点运算中,是一种近似算法,但其运算精度受到位宽的限制;三、循环相减的多周期除法器,该方法在硬件面积和运算速度上有所优化,且现在大多数通用除法器都基于这种基本算法原理开发,但是这种除法器通常需要经过多次迭代计算,且每次迭代计算只产生一位商数字,若被除数与除数相差较大,则需要进行较多次的迭代计算,耗时较长。

【发明内容】

[0004]本发明针对现有技术中存在的,循环相减的多周期除法器每次迭代计算只产生一位商数字,在被除数与除数相差较大时,需要耗费大量时间计算获得完整的商值,而无法实现硬件面积与运算速度的有效折衷的技术问题,提供了一种除法器及除法运算方法,可根据实际应用中硬件面积与运算速度的要求,通过选取不同的N值,灵活地选择每次迭代计算产生的商的位数,且在每次迭代计算时至少产生三位商数字,缩短了除法的计算时间。该除法器能够实现在除法运算时的硬件面积与运算速度的有效折衷,即在快速运算的同时不占用过多的硬件面积。
[0005]—方面,本发明提供了一种除法器,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述除法器包括:
[0006]符号位确定单元,用于读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;
[0007]除数倍数计算单元,用于读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值,其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;
[0008]迭代计算单元,用于读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。
[0009]可选的,所述除数倍数计算单元包括:
[0010]第一除数倍数计算模块,用于当P取值为2的m次方倍时,通过将所述初始除数的数值位左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数;
[0011 ]第二除数倍数计算模块,用于当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位进行加、减法运算,以获得第二组除数倍数值;
[0012]第三除数倍数计算模块,用于当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位,以获得第三组除数倍数值;
[0013]其中,所述第一组除数倍数值、所述第二组除数倍数值和所述第三组除数倍数值组成所述N个除数倍数值。
[0014]可选的,所述迭代计算单元包括:
[0015]迭代控制模块,用于控制j依次在区间I?K内取值;还用于当j取定一值时,控制P依次在区间I?N内取值;
[0016]被除数移位模块,用于当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数;
[0017]余数获取模块,用于当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;还用于当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;
[0018]部分商值确定模块,用于当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位;
[0019]完整商值确定模块,用于当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果O
[0020]可选的,所述被除数移位模块具体用于当j大于等于2且小于等于K时,且在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-Ι比较结果,确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数。
[0021]可选的,所述部分商值确定模块具体用于当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者
[0022]当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-ι。
[0023]另一方面,本发明还提供了一种除法运算方法,应用于除法器中,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述方法包括以下步骤:
[0024]S1、读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;
[0025]S2、读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值;其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;
[0026]S3、读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。
[0027]可选的,所述步骤S2包括:
[0028]当P取值为2的m次方倍时,通过将所述初始除数的数值位左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数;
[0029]当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位进行加、减法运算,以获得第二组除数倍数值;
[0030]当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位,以获得第三组除数倍数值;其中,所述第一组除数倍数值、所述第二组除数倍数值、所述第三组除数倍数值和所述单倍除数值组成所述N个除数倍数值。
[0031]可选的,所述步骤S3包括:
[0032]控制j依次在区间I?K内取值;并且当j取定一值时,控制P依次在区间I?N内取值;
[0033]当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数;
[0034]当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;并且当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;
[0035]当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位;
[0036]当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果。
[0037]可选的,当j大于等于2且小于等于K时,且在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-1比较结果,确定第j迭代被除数。
[0038]可选的,当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-1。
[0039]本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0040]由于在本发明中,除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;该除法器包括:符号位确定单元,用于读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;除数倍数计算单元,用于读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值,其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;迭代计算单元,用于读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。也就是说,本除法器可根据实际应用中硬件面积与运算速度的要求,通过选取不同的N值,灵活地选择每次产生的商的位数,且在每次迭代计算时产生至少三位商数字,缩短了除法的计算时间。有效地解决了现有技术中循环相减的多周期除法器每次迭代计算只产生一位商数字,在被除数与除数相差较大时,需要耗费大量时间计算获得完整的商值,而无法实现硬件面积与运算速度的有效折衷的技术问题,实现了除法器在除法运算时的硬件面积与运算速度的有效折衷,能够在快速运算的同时不占用过多的硬件面积。另外,本方案除法器适用于在专用集成电路(ASIC,Applicat1n Specific Integrated Circuit)上实现。
【附图说明】
[0041]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其它的附图。
[0042]图1为本发明实施例提供的一种除法器结构示意图;
[0043]图2为本发明实施例提供的另一种除法器结构示意图;
[0044]图3为本发明实施例提供的一种除法运算方法流程图。
【具体实施方式】
[0045]本发明实施例通过提供一种除法器,解决了现有技术中存在的,循环相减的多周期除法器每次迭代计算只产生一位商数字,在被除数与除数相差较大时,需要耗费大量时间计算获得完整的商值,而无法实现硬件面积与运算速度的有效折衷的技术问题。可根据实际应用中硬件面积与运算速度的要求,通过选取不同的N值,灵活地选择每次迭代计算产生的商的位数,且在每次迭代计算时至少产生三位商数字,缩短了除法的计算时间。该除法器能够实现在除法运算时的硬件面积与运算速度的有效折衷,即在快速运算的同时不占用过多的硬件面积。
[0046]本发明实施例的技术方案为解决上述技术问题,总体思路如下:
[0047]本发明实施例提供了一种除法器,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述除法器包括:符号位确定单元,用于读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;除数倍数计算单元,用于读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值,其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;迭代计算单元,用于读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。
[0048]可见,在本发明方案中的除法器可根据实际应用中硬件面积与运算速度的要求,通过选取不同的N值,灵活地选择每次产生的商的位数,且在每次迭代计算时产生至少三位商数字,缩短了除法的计算时间。有效地解决了现有技术中循环相减的多周期除法器每次迭代计算只产生一位商数字,在被除数与除数相差较大时,需要耗费大量时间计算获得完整的商值,而无法实现硬件面积与运算速度的有效折衷的技术问题,实现了除法器在除法运算时的硬件面积与运算速度的有效折衷,能够在快速运算的同时不占用过多的硬件面积。另外,本方案除法器适用于在专用集成电路(ASIC,Applicat1n Specific IntegratedCircuit)上实现。
[0049]为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
[0050]实施例一
[0051]请参考图1,本发明实施例提供了一种除法器,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述除法器包括:
[0052]符号位确定单元I,用于读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;
[0053]具体的,符号位确定单元I读取所述初始被除数的最高位和所述初始除数的最高位,并判断所述初始被除数的最高位和所述初始除数的最高位分别为O或I;当所述初始被除数的最高位为O时,确定所述初始被除数为负数,当所述初始被除数的最高位为I时,确定所述初始被除数为正数,当所述初始除数的最高位为O时,确定所述初始除数为负数,当所述初始除数的最高位为I时,确定所述初始除数为正数;进一步,当所述初始被除数和所述初始除数同为正数或负数时,确定所述初始被除数与所述初始除数的商值结果的符号位为I,当所述初始被除数和所述初始除数一个为正数、一个为负数时,确定所述初始被除数与所述初始除数的商值结果的符号位为O。
[0054]除数倍数计算单元2,用于读入初始除数的数值位Ds,并计算初始除数的数值位Ds的P倍,以获得第P个除数倍数值P X Ds,其中,初始除数的数值位Ds非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;
[0055]例如,所述除法器采用基数8算法,则N= S且i = 3,P依次在区间I?8内取值,除数倍数计算单元2读入初始除数的数值位Ds,在判断确定初始除数的数值位Ds非零时,依次计算获得初始除数的数值位Ds的I?8倍(S卩:Ds,2XDs,3XDs,...,8XDs)。
[0056]迭代计算单元3,用于读入初始被除数的数值位Dd和所述N个除数倍数值(PXDs,P依次在区间I?N内取值),并对初始被除数的数值位Dd和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和初始被除数的数值位Dd的二进制位数Q而定。具体的,K = Q/i,当Q与i相除后存在小数点后的余数时直接进位。
[0057]具体的,仍以基数8算法为例,迭代计算单元3读入初始被除数的数值位Dd和初始除数的数值位Ds的I?8倍(Ds,2 X Ds,3 X Ds,...,8 X Ds),对其进行K次迭代计算,每次迭代计算获得3位的部分商值。其中,当初始被除数的数值位Dd的二进制位数为15位时,在每次迭代计算获得3位的部分商值时,需要进行K= 15/3 = 5次迭代计算;当初始被除数的数值位Dd的二进制位数为31位时,在每次迭代计算获得3位的部分商值时,需要进行K = 31/3?11次迭代计算。当然,在具体实施过程中,当初始被除数的数值位Dd的位数较大时,可选择不同的N值,来减小迭代次数,如选择N = 31,则i = 5,在每次迭代计算获得5位的部分商值时,对于上述31位的初始被除数的数值位Dd而言,则只需进行K = 31/5?7次迭代计算即可,相比于N=8时,迭代计算的次数减少了 4次,缩短了运算时间。
[0058]需要指出的是,本方案也适用于无符号数之间的除法运算,当初始被除数和初始除数为无符号数时,初始被除数和初始除数各自的二进制位数即分别为二者的数值位。
[0059]进一步,在具体实施过程中,在进行除数倍数的计算时,为了避免或减少使用乘法器,并通过移位器和加法器来计算除数倍数,从而减少硬件资源消耗,请参考图2,除数倍数计算单元2包括:
[0060]第一除数倍数计算模块21,用于当P取值为2的m次方倍时,通过将初始除数的数值位Ds左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数;
[0061 ]第二除数倍数计算模块22,用于当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位Ds进行加、减法运算,以获得第二组除数倍数值;
[0062]第三除数倍数计算模块23,用于当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位以获得第三组除数倍数值;
[0063]其中,所述第一组除数倍数值、所述第二组除数倍数值和所述第三组除数倍数值组成所述N个除数倍数值。
[0064]具体的,仍以所述除法器采用基数8算法为例,P依次在区间I?8内取值。m为大于等于O小于等于3的整数,P取值为2*3= 1、21 = 2、22 = 4、23 = 8 (S卩2的m次方倍)时,将Ds左移O位、I位、2位或3位来获得Ds、2 XDs、4 XDs、8 XDs(即所述第一组除数倍数值);当P取值为3、
5、7(即大于等于3的奇数)时,通过2\08+08、4\08 — 08、8\08 — 08来获得3\08、5\08、7XDs(即所述第二组除数倍数值);当P取值为6(即偶数且不为2的m次方倍)时,通过对3XDs进行移位来获得6 X Ds (S卩所述第三组除数倍数值)。
[0065]在具体实施过程中,仍请参考图2,迭代计算单元3包括:
[0066]迭代控制模块31,用于控制j依次在区间I?K内取值;还用于当j取定一值时,控制P依次在区间I?N内取值;
[0067]被除数移位模块32,用于当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数;
[0068]余数获取模块33,用于当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;还用于当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;
[0069]部分商值确定模块34,用于当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位;
[0070]完整商值确定模块35,用于当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果。
[0071]其中,当j大于等于2且小于等于K时,在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-Ι比较结果,确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数。
[0072]具体的,在j等于2时,I)当所述N个第一余数中第一个第一余数小于零时,重新进行第一次迭代计算;2)当P大于等于2,在所述N个第一余数中第P-1个第j-Ι余数大于等于零、且第P个第一余数小于零时,确定第二部分商值为第P-1个第一余数。
[0073]在j大于等于3时,可通过以下两种实施方案来确定第j迭代被除数:I)当所述N个第j-Ι余数中第一个第j-Ι余数小于零时,确定第j迭代被除数等于第j-Ι迭代被除数;2)当P大于等于2,在所述N个第j-Ι余数中第P-1个第j-Ι余数大于等于零、且第P个第j-Ι余数小于零时,确定第j部分商值为第P-1个第j-Ι余数。
[0074]进一步,在具体实施过程中,当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-1。
[0075]具体的,以所述除法器采用基数8算法、原始被除数的数值位Dd为16位有符号数为例,可确定在进行除法运算时的迭代计算次数K为5。迭代计算单元3的处理流程如下:
[0076](I)在进行第一次迭代计算时:
[0077]余数获取模块33对原始被除数的数值位Dd与第P个除数倍数值求差,获得第P个第一余数,令P依次在区间I?8内取值,以获得8个第一余数(Re 11?Re 18),其中,Re 11 = Dd —Ds,Rel2 = Dd — 2 XDs,Rel3 = Dd — 3 XDs,...,Rel8 = Dd — 8 XDs;
[0078]部分商值确定模块34依次将8个第一余数(Rell?Rel8)与零进行比较,获得第一比较结果;当所述第一比较结果表明第I个第一余数Rell小于零时,确定第一次迭代计算获得的第一部分商值为0( 二进制表示为000);或者当该比较结果表明第4个第一余数Rel4小于零且第3个第一余数Rel3大于等于零时,确定第一次迭代计算获得的第一部分商值为3(二进制表示为011);或者当该比较结果表明第7个第一余数Rel7小于零且第6个第一余数Re 16大于等于零时,确定第一次迭代计算获得的第一部分商值为6 ( 二进制表示为110) ;其它情况依次类推,这里不再一一赘述。
[0079](2)在进行第二次迭代计算时:
[0080]被除数移位模块32基于第一次迭代计算的第一比较结果,确定第二迭代被除数。当所述第一比较结果表明第I个第一余数Rell小于O时,重新进行第一次迭代计算;或者当该比较结果表明第4个第一余数Rel4小于零且第3个第一余数Rel3大于等于零时,确定第二次迭代计算时的第二迭代被除数Dd2’等于Rel3;或者当该比较结果表明第7个第一余数Rel7小于零且第6个第一余数Rel6大于等于零时,确定第二次迭代计算时的第二迭代被除数Dd2’等于Rel6;...;其它情况依次类推,这里不再一一赘述;进一步,被除数移位模块32将第二迭代被除数Dd2’左移3位,获得第二移位被除数Dd2” ;
[0081 ]余数获取模块33对第二移位被除数Dd2”与第P个除数倍数值求差,获得第P个第二余数,令P依次在区间I?8内取值,以获得8个第二余数(Re21?Re28),其中,Re21=Dd2” 一Ds,Re22 = Dd2” 一2 XDs,Re23 = Dd2” 一3 XDs,...,Re28 = Dd2” 一8 XDs ;
[0082]部分商值确定模块34依次将8个第二余数(Re21?Re28)与零进行比较,获得第二比较结果;当所述第二比较结果表明第I个第二余数Re21小于零时,确定第二次迭代计算获得的第二部分商值为0( 二进制表示为000);或者当该比较结果表明第4个第二余数Re24小于零且第3个第二余数Re23大于等于零时,确定第二次迭代计算获得的第二部分商值为3(二进制表示为011);或者当该比较结果表明第7个第二余数Re27小于零且第6个第二余数Re26大于等于零时,确定第二次迭代计算获得的第二部分商值为6 ( 二进制表示为110);...;其它情况依次类推,这里不再一一赘述;
[0083](3)第三至第五次迭代计算获得第三至第五部分商值的流程可依照上述第二次迭代计算流程进行类推,这里不再一一赘述;
[0084](4)完整商值确定模块35将5次迭代计算获得的第一至第五部分商值,从寄存器的高位到低位依次写入商值寄存器中,以获得完整商值结果。例如,第一部分商值为“001”、第二部分商值为“011”、第三部分商值为“101”、第四部分商值为“001”、第五部分商值为“100”,则所述完整的商值结果的数值位二进制序列为“001011101001100”。进一步,将通过符号位确定单元I确定的商值结果的符号位添加在该二进制序列的最高位,即获得完整商值结果。
[0085]在具体实施过程中,在进行除法运算时,为了采用本方案除法器对被除数和除数进行除法计算,需满足被除数和除数的商大于等于-N小于等于N的条件,若被除数和除数的商不满足此条件,可通过将被除数或除数进行移位,以使获得满足此条件的初始被除数和初始除数,并在通过初始被除数和初始除数获得商值结果后,将该商值结果进行逆向移位,以获得移位前的被除数和除数的商。
[0086]综上所述,在本发明方案中的除法器可根据实际应用中硬件面积与运算速度的要求,通过选取不同的N值,灵活地选择每次产生的商的位数,且在每次迭代计算时产生至少三位商数字,缩短了除法的计算时间。有效地解决了现有技术中循环相减的多周期除法器每次迭代计算只产生一位商数字,在被除数与除数相差较大时,需要耗费大量时间计算获得完整的商值,而无法实现硬件面积与运算速度的有效折衷的技术问题,实现了除法器在除法运算时的硬件面积与运算速度的有效折衷,能够在快速运算的同时不占用过多的硬件面积。另外,本方案除法器适用于在专用集成电路(ASIC,Applicat1n SpecificIntegrated Circuit)上实现。
[0087]实施例二
[0088]基于同一发明构思,请参考图3,本发明实施例还提供了一种除法运算方法,应用于除法器中,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述方法包括以下步骤:
[0089]S1、读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位;
[0090]S2、读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值;其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值;
[0091]S3、读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。
[0092]在具体实施过程中,所述步骤S2包括:
[0093]当P取值为2的m次方倍时,通过将所述初始除数的数值位左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数;
[0094]当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位进行加、减法运算,以获得第二组除数倍数值;
[0095]当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位,以获得第三组除数倍数值;
[0096]其中,所述第一组除数倍数值、所述第二组除数倍数值、所述第三组除数倍数值和所述单倍除数值组成所述N个除数倍数值。
[0097]在具体实施过程中,所述步骤S3包括:
[0098]控制j依次在区间I?K内取值;并且当j取定一值时,控制P依次在区间I?N内取值;
[0099]当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数;
[0100]当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;并且当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;
[0101]当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位;
[0102]当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果。
[0103]在具体实施过程中,
[0104]当j大于等于2且小于等于K时,且在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-1比较结果,确定第j迭代被除数。
[0105]在具体实施过程中,当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者
[0106]当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-1。
[0107]根据上面的描述,上述除法运算方法应用于上述除法器中,所以,该除法运算方法与上述除法器的一个或多个实施例一致,在此就不再一一赘述了。
[0108]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0109]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种除法器,其特征在于,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;所述除法器包括: 符号位确定单元(I),用于读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位; 除数倍数计算单元(2),用于读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值,其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值; 迭代计算单元(3),用于读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。2.如权利要求1所述的除法器,其特征在于,所述除数倍数计算单元(2)包括: 第一除数倍数计算模块(21 ),用于当P取值为2的m次方倍时,通过将所述初始除数的数值位左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数; 第二除数倍数计算模块(22),用于当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位进行加、减法运算,以获得第二组除数倍数值; 第三除数倍数计算模块(23),用于当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位,以获得第三组除数倍数值; 其中,所述第一组除数倍数值、所述第二组除数倍数值和所述第三组除数倍数值组成所述N个除数倍数值。3.如权利要求1所述的除法器,其特征在于,所述迭代计算单元(3)包括: 迭代控制模块(31),用于控制j依次在区间I?K内取值;还用于当j取定一值时,控制P依次在区间I?N内取值; 被除数移位模块(32),用于当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数; 余数获取模块(33),用于当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;还用于当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数; 部分商值确定模块(34),用于当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位; 完整商值确定模块(35),用于当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果O4.如权利要求3所述的除法器,其特征在于,所述被除数移位模块(32)具体用于当j大于等于2且小于等于K时,且在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-Ι比较结果,确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数。5.如权利要求3所述的除法器,其特征在于,所述部分商值确定模块(34)具体用于当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者 当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-1。6.—种除法运算方法,应用于除法器中,所述除法器采用基数N算法,其中,N为21且i为大于等于3的正整数,初始被除数和初始除数的商大于等于-N小于等于N;其特征在于,所述方法包括以下步骤: 51、读入初始被除数的符号位和初始除数的符号位,分别判断所述初始被除数和所述初始除数为正数或负数,获得一判断结果,并基于所述判断结果确定所述初始被除数与所述初始除数的商值结果的符号位; 52、读入初始除数的数值位,并计算所述初始除数的数值位的P倍,以获得第P个除数倍数值;其中,所述初始除数非零,P为整数;令P依次在区间I?N内取值,以获得N个除数倍数值; 53、读入初始被除数的数值位和所述N个除数倍数值,并对所述初始被除数的数值位和所述N个除数倍数值进行K次迭代计算,每次迭代计算获得i位的部分商值,在K次迭代计算之后,获得K组i位的部分商值,并基于所述商值结果的符号位和所述K组i位的部分商值获得完整商值结果;其中,K为正整数且依据i值和所述初始被除数的二进制位数而定。7.如权利要求6所述的除法运算方法,其特征在于,所述步骤S2包括: 当P取值为2的m次方倍时,通过将所述初始除数的数值位左移m位,以获得第一组除数倍数值;其中,m为大于等于O小于等于i的整数; 当P取值为大于等于3的奇数时,通过将所述第一组除数倍数值与所述初始除数的数值位进行加、减法运算,以获得第二组除数倍数值; 当P取值为偶数且不为2的m次方倍时,通过将所述第二组除数倍数值进行移位,以获得第三组除数倍数值; 其中,所述第一组除数倍数值、所述第二组除数倍数值、所述第三组除数倍数值和所述单倍除数值组成所述N个除数倍数值。8.如权利要求7所述的除法运算方法,其特征在于,所述步骤S3包括: 控制j依次在区间I?K内取值;并且当j取定一值时,控制P依次在区间I?N内取值; 当j大于等于2且小于等于K时,基于所述原始被除数的数值位确定第j迭代被除数,并将所述第j迭代被除数左移i位,获得第j移位被除数; 当j取值为I时,对所述原始被除数的数值位与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数;并且当j在区间2?K内取定一值时,对所述第j移位被除数与第P个除数倍数值求差,获得第P个第j余数,并当P依次在区间I?N内取值完成后,获得N个第j余数; 当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,获得第j比较结果,并基于所述第j比较结果确定第j部分商值;其中,所述第j部分商值的二进制位数为i位; 当j依次在区间I?K内取值时,将第j部分商值从寄存器的高位到低位依次写入商值寄存器中,并添加所述商值结果的符号位,以获得完整商值结果。9.如权利要求7所述的除法运算方法,其特征在于, 当j大于等于2且小于等于K时,且在进行第j次迭代计算时,基于第j-Ι次迭代计算获得的第j-Ι比较结果,确定第j迭代被除数。10.如权利要求7所述的除法运算方法,其特征在于,当j在区间I?K内取定一值、且获得N个第j余数后,依次将所述N个第j余数与零进行比较,当所述N个第j余数中第一个第j余数小于零时,确定第j部分商值为零;或者当P大于等于2,在所述N个第j余数中第P-1个第j余数大于等于零、且第P个第j余数小于零时,确定第j部分商值为P-1。
【文档编号】G06F7/535GK105955706SQ201610435062
【公开日】2016年9月21日
【申请日】2016年6月16日
【发明人】张科峰, 王龚志
【申请人】武汉芯泰科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1