公开/公告号CN101295237A
专利类型发明专利
公开/公告日2008-10-29
原文格式PDF
申请/专利权人 四川虹微技术有限公司;
申请/专利号CN200710048957.3
申请日2007-04-25
分类号G06F7/535;
代理机构
代理人
地址 610041 四川省成都市高新区高新孵化园8号楼1009室
入库时间 2023-12-17 20:58:06
法律状态公告日
法律状态信息
法律状态
2017-06-16
未缴年费专利权终止 IPC(主分类):G06F7/535 授权公告日:20120321 终止日期:20160425 申请日:20070425
专利权的终止
2012-03-21
授权
授权
2010-06-09
实质审查的生效 IPC(主分类):G06F7/535 申请日:20070425
实质审查的生效
2008-10-29
公开
公开
技术领域
本发明涉及一种高速除法器,具体来讲涉及一种可应用在数字信号处理、通讯、图像和视频处理等领域的集成电路设计中的求商和余数的高速除法器。
背景技术
在数字信号处理、通讯、图像和视频处理中,经常会涉及求商和余数的除法运算。但是,在集成电路和可编程逻辑器件的算法设计中,并没有实现除法功能的现有芯片;在硬件描述语言中也没有可综合的除法语句。EDA提供商Synopsys和Cadence等公司也没有提供相应的设计库。Xinlix等可编程逻辑器件设计厂商提供了除法器IP,但是由于只给出了外部接口定义,不宜于移植,且具有资源消耗大、运算时间太长等缺点。
两个无符号二进制数相除的时序算法的基本思路:从被除数中重复地减去除数,直到检测到余数小于除数,主要是进行减法和移位操作。公开号为CN 1423189A的专利“一种除法器”就是把除法运算化成减法和移位运算,利用减法器、比较器、移位加法器完成除法。但是,该类方法每次移位和减法操作后只获得一位商,如被除数是N位时,需要执行N次运算才能得到商。所以该方法所需的时钟周期长,运算速度慢。
为了提高除法器的运算速度,可采用一次求得多位商的方法。以一次求得两位商为例,其基本思想是把被除数分别减去除数、2倍的除数、3倍的除数,通过比较结果一次确定两位商。公开号为CN 1287037A的专利“高基除法器及方法”提出了一次得到k位商的除法器,但是该方法需要倍数发生器、比较器、加法器和减法器等众多器件,电路复杂。
发明内容
本发明的目的在于提供一种高速除法器,利用超前借位减法、并行减法、一次求得多位商的技术实现求商和余数的运算,具有运算速度快,结构简单,使用元器件少等优点。
为了实现上述目的,本发明提供的高速除法器由基本运算单元组成,所述的基本运算单元用于接收输入的被除数A的未处理的高两位aj+1aj、余数R和除数B,输出高两位商qj+1qj和新余数R,如图1所示。所述的基本运算单元包括并行减法器、两位商生成器和余数生成器。所述的并行减法器包括三组减法器,每组减法器完成一个减操作,三组减法器并行完成三个减操作,输出三个差S,S1,S2和三个借位位cm,cm1,cm2。所述的两位商生成器包括三个商位生成器,输出商Q的高两位qj+1qj。所述的余数生成器,通过两位商生成器输出的两位商qj+1qj,在余数R和并行减法器输出的三个差S,S1,S2选择确定新余数R。
设被除数A=an-1…a0为n位二进制串表示的无符号整数,除数B=bm-1…b0为m位二进制串表示的无符号整数,则A除以B的商Q为n位二进制串表示的无符号整数,即Q=qn-1…q0,A除以B的余数R是为m位二进制串表示的无符号整数,即R=rm-1…r0。下面对基本运算单元中的并行减法器、减法器、两位商生成器、商位生成器和余数生成器作说明。
1.并行减法器
并行减法器接收输入的余数R=rm-1…r0、被除数A的未处理过的高两位aj+1,aj以及除数B=bm-1…b0。令m位的二进制串D=rm-2…r0aj+1,D1=(D-B)<<1+aj,D2=rm-3…r0aj+1aj,则并行减法器并行完成以下三个减法操作:
S=sm-1…s0=D-B (1)
减法(1)(2)(3)分别由并行减法器中的第一组(第一行)、第二组(第二行)和第三组(第三行)减法器完成。所述的三组减法器完成的三个减操作中,减数都是被除数B,初始借位位c0,c01,c02为零,第一组减法器的被减数由余数R和被除数A的未处理的最高位组成,第二组减法器的被减数由第一组减法器的差和被除数A的未处理的最高位组成,第三组减法器的被减数由余数R和被除数A的未处理的高两位组成。
所述的减法器可以是完成1位减法的1位减法器,也可以是一次完成多位减法的超前借位减法器,如2位超前借位减法器、4位超前借位减法器、8位超前借位减法器等。当采用1位减法器时,减操作(1)(2)和(3)的并行实现如图2所示。由于减操作(1)和(3)的被减数和减数不存在依赖关系,所以(1)和(3)可用减法器并行实现。而减操作(2)的被减数依赖于减操作(1)的差S=sm-1…s0,但由于减操作(2)的初始被减位为已知的aj,第2位被减位才是减操作(1)所得的第一位差位s0,这样减操作(2)虽然依赖于(1),但是它们可以完全并行操作。所以,减操作(1)(2)(3)并行实现。
当采用超前借位减法器中,减操作(1)(2)(3)可以类似地并行实现。以2位超借位减法器为例,其实现方式如图3所示。此时,减操作(1)和(3)可以完全并行,但是减操作(2)的第一个2位超前借位减法器的输入位s0为减操作(1)中的第一个超前借位减法器的输出位,所以,减操作(2)要比减操作(1)延迟一个超前借位减法器的时钟周期。
并行减法器的三个减操作输出三个差S,S1,S2和三个借位位cm,cm1,cm2,它们传给两位商生成器和余数生成器。
2.减法器
所述并行减法器的减法器可以是一位减法器或超前借位减法器。
(1)一位减法器
用位减法器(bit-wise subtraction)实现减法si=di-bi,其中di为被减数输入位,为减数输入位bi,输入借位位为ci,初始借位c0=0,输出si为差位,输出ci+1为借位位。如图4所示。根据减法规则,减法运算的真值表如表1所示。
表1减法真值表
令
gi=dibi
其中di表示di的逻辑非,dibi表示di与bi的逻辑与,“+”表示逻辑或,表示逻辑异或。则一位减法器的逻辑表达式为:
ci+1=gi+pici
相应地,一位减法器的电路原理如图5所示。
两个n位二进制串的减运算需要用n个串行的一位减法器实现,而每个一位减法器有4级门电路的延迟,所以需要4n级门电路的延迟。所以,一位减法器实现减法运算时,需要一个执行一个较长序列,消耗时间长,速度慢。在被减数二进制串较长时,一位减法器的效率很低,需要用快速方法。
(2)超前借位减法器
根据一位减法器的逻辑表达式,可推导出
c1=g0+p0c0
c2=g1+p1c1=g1+p1(g0+p0c0)=g1+p1g0+p1p0c0
c3=g2+p2c2=g2+p2g1+p2p1g0+p2p1p0c0
c4=g3+p3c3=g3+p3(g2+p2g1+p2p1g0+p2p1p0c0)
以上表达式表明每个减法单元的差位和借位输出位可以由该单元及前面各级单元的数据输入和减法器链路的第一级借位输入c0来表示。所有这些数据可以同时求得,没有必要等待一个通过减法器传送到特定单元的借位信号,实现超前借位减法器。这样,可以使减法器速度更快,但是需要增加额外的逻辑电路。
2位超前借位减法器如图6所示,其电路原理图如图7所示。
利用超前借位减法器,可以一次运算求得多位差,但是需要额外的门电路。所以,实际应用中,可根据对运算速度和电路面积的需求,使用2位、4位、8位或16位等各种超前借位减法器。
3.两位商生成器
两位商生成器接收由并行减法器产生的差S的最高位sm-1和三个借位位cm,cm1,cm2以及余数R的高两位rm-1rm-2,在由商位生成器生成的三个备选商位中选择输出两位作为商Q的高两位qj+1qj,如图8所示。
两位商生成器包括三个商位生成器,第一个商位生成器的输入为余数R的最高位rm-1和所述的第一组减法器产生的借位位cm,第二个商位生成器的输入为所述的第一组减法器产生的差S的最高位sm-1和所述的第二组减法器产生的借位位cm1,第三个商位生成器的输入为余数R的次高位rm-2和所述的第三组减法器产生的借位位cm2。
所述的两位商生成器的三个商位生成器,第一个商位生成器输出商位qj+1,第二个商位生成器输出为备选商位qj1,第三个商位生成器输出备选商位qj2。两位商生成器根据商位qj+1,输出商位qj,其中qj在备选商位qj1和qj2中选取。当qj+1=1时,说明当前除法过程中的减操作应该选取减操作(1)和(2),所以qj取qj1;当qj+1=0时,说明当前除法过程中的减操作应该选取减操作(1)和(3),所以qj取qj2。用逻辑表达式表示为:
4.商位生成器
所述的商位生成器有2个输入位d,c和1个输出位q,其作用是根据借位位c和被减数的最高位d确定被减数和减数的大小,从而确定商位q。如果借位位c=0,则被减数肯定大于等于减数,所以商q=1;如果借位位c=1且d=1,则被减数大于等于减数,所以商q=1;如果借位位c=1且d=0,则被减数小于减数,所以商q=0。所以,商位生成器的逻辑表达式可写为:
q=c+d
其电路原理图如图9所示。所以商位生成器可通过对一个输入位求逻辑非,然后与另一个输入位求逻辑或简单实现。
所以,所述的两位商生成器中的第一个商位生成器输出的商位qj+1由减操作(1)的输出借位位cm和余数R的最高位rm-1确定,其逻辑表达式为:
qj+1=cm+rm-1
第二个商位生成器输出的商位qj1和第三个商位生成器输出的商位qj2的逻辑表达式为:
5.余数生成器
余数生成器接收输入的余数R、两位商生成器产生的两位商qj+1qj和并行减法器产生的三个差S,S1,S2,输出新余数R。余数生成器根据两位商qj+1qj的取值,在余数R和三个差S,S1,S2中选择确定新余数R。选择规则如下:
若qj+1=0,qj=0,则R=rm-3…r0aj+1aj
若qj+1=1,qj=0,则R=S=sm-1…s0
若qj+1=0,qj=1,则
若qj+1=1,qj=1,则
另外,本发明提供了一种高速除法方法,用于被除数A=an-1…a0除以除数B=bm-1…b0得到商Q=qn-1…q0和余数R=rm-1…r0,所述方法包括下列步骤:
第一步骤:
设置初始余数R为零,被除数A的未处理的最高两位为aj+1aj,其中j=n-2;
第二步骤:
并行减法器接收输入的余数R、被除数A的未处理的高两位aj+1aj以及除数B,并行执行三个减操作,输出三个差S,S1,S2和三个借位位cm,cm1,cm2;
第三步骤:
两位商生成器接收第二步骤并行减法器产生的差S的最高位sm-1和三个借位位cm,cm1,cm2以及输入余数R的高两位rm-1rm-2,生成商Q的高两位qj+1qj;
第四步骤:
余数生成器接收输入被除数A的未处理的高两位aj+1aj和余数R、第二步骤并行减法器产生的三个差S,S1,S2、第三步骤两位商生成器产生的高两位商qj+1qj,根据两位商的取值,在余数R和三个差S,S1,S2中选择确定新余数R;
第五步骤:
令j=j-2,重复第二,第三和第四步骤,直到得到商Q=qn-1…q0和余数R=rm-1…r0。
所述的高速除法方法中,第二步骤、第三步骤和第四步骤构成了所述高速除法器的基本运算单元,可采用迭代方式或者流水线方式运行基本运算单元完成求商和余数的除法运算。
附图说明
图1是本发明的高速除法器基本运算单元
图2是本发明的使用1位减法器的并行减法器
图3是本发明的使用2位超前借位减法器的并行减法器
图4是一位减法器示意图
图5是本发明的一位减法器电路原理图
图6是本发明的2位超前借位减法器示意图
图7是本发明的2位超前借位减法器电路原理图
图8是本发明的两位商生成器
图9是本发明的商位生成器电路原理图
图10是传统除法过程
图11是本发明的流水线运行基本运算单元的除法器
图12是本发明的迭代运行基本运算单元的除法器
图13是本发明的具体实施的并行减法器
具体实施方式
下面结合具体实施方式,对本发明的除法器作进一步详细的说明。
在本实施例中,被除数是用16位二进制串表示的无符号整数,除数B是8位二进制串表示的无符号整数:
A=a15a14…a1a0
B=b7b6…b1b0
则它们的商Q也是16位二进制串表示的无符号整数
Q=q15q14…q1q0
传统除法器的实现过程如图10所示,共需要16步完成,每步运算涉及比较和减法。利用比较器比较当前被减数和除数的大小确定商位,利用减法得到新的余数。
在本实施例中,基本运算单元一次求得两位商,所以只需要运行8次基本运算单元即可完成求商和余数的除法功能。利用基本运算单元实现除法时,可采用流水线方式,即运行8个基本运算单元,如图11所示;也可以采用迭代方式,即迭代运行8次运算单元,如图12所示。
在本实施例中,基本运算单元中的减法器采用2位超前借位减法器。2位超前借位减法器的电路原理图如图7所示。4个2位超前借位减法器串行完成一个减操作。三个减操作并行完成,但减操作(2)延迟一个减法器的时钟周期,如图13所示。
以往一次求得多位商的方法,就是把被除数与除数、2倍的除数、3倍的除数分别相减,比较结果得到两位商,需要倍数发生器或者乘法。而本发明避免这些运算,通过直接操作被除数和除数,就一次得到两位商。与传统除法过程中的串行减法相比,该发明的并行减法器并行完成了三个减操作,而且通过超前借位一次进行两位减法,降低了时钟周期了,提高了运算速度。
尽管上面对本发明说明性的具体实施方式进行了描述,但应当清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
机译: 拆分余数除法器
机译: 具有余数补偿的二进制除法器
机译: 数字除法器和方法,用于对正或负股利进行除法并对余数进行四舍五入