CN1031613A - 二—十进制加法器电路 - Google Patents
二—十进制加法器电路 Download PDFInfo
- Publication number
- CN1031613A CN1031613A CN88104229A CN88104229A CN1031613A CN 1031613 A CN1031613 A CN 1031613A CN 88104229 A CN88104229 A CN 88104229A CN 88104229 A CN88104229 A CN 88104229A CN 1031613 A CN1031613 A CN 1031613A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- vector
- bcd
- carry
- gate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/492—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
- G06F7/493—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination the representation being the natural binary coded representation, i.e. 8421-code
- G06F7/494—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/492—Indexing scheme relating to groups G06F7/492 - G06F7/496
- G06F2207/4921—Single digit adding or subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/492—Indexing scheme relating to groups G06F7/492 - G06F7/496
- G06F2207/4924—Digit-parallel adding or subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
用于把两个BCD编码的操作数相加并产生
BCD编码的求和的BCD加法器电路,包括一个作
为第一级的并联的全加器电路组,该级从操作数和预
校正因数产生一个中间和向量和中间进位向量。
BCD加法器电路的第二级包括先行进位加法器电
路,其输入端接收中间和向量及中间进位向量,产生
一个传输向量及一个最后的进位向量。BCD加法器
电路的第三级根据输入的中间进位向量和最后进位
向量的位有条件地修改传输向量,形成BCD编码
和。
Description
本发明涉及一种二一十进制(BCD)加法器电路。
用二一十进制数表示十进制数,在形式上,人(十进制)和计算机(二进制)都容易理解。使用四个二进制位有十六种可能的位组合,但是,有效的BCD数字只有十个。因而,当两个BCD数字相加时,且和的数字超过9时,则和的数字必须调整为有效的BCD数字。通常,这是用加一个常数01102(610)求和来实现的。
传统地,BCD加法器电路用逻辑检测在实现了加法之后是否应该调整BCD和。例如,无论何时未调整的两个BCD数字的和产生一个进位输出时(即当和超过15时),则和用加01102来校正。同样,当BCD和的位8和4都是“1”(值1210-1510)或当位8和2两个都是“1”(值1010和1110)时需要调整。
传统的BCD加法器电路,例如,如像图1所示电路10,用标准的4位二进制加法器实现两个BCD数字的相加,产生一个中间和(Z8,Z4,Z2,Z1)。加法器电路还包括中间和数字大于9的校正逻辑电路。在图1所示的电路中,第一个4位操作数,a(0)8至a(0)1和第二个4位操作数,b(0)8至b(0)1与Cin或进位输入一起并联输入到全加器15。全加器15的输出包括一个4位和向量Z(Z8至Z1)及一个进位输出Cout。如果Cout是“1”,或如果Z8和Z4都是“1”(“与”门20)或Z8Z2都是“1”(“与”门25),BCD加法器电路10则在或门30产生一个C(o)out BCD进位,并用一个“01102”的值加到和向量Z上来校正和向量Z。当C(o)out是一个“1”时,第二个全加器35输入端B接收一个“01102”值,而在全加器35的输入端接收和向量Z。全加器35的输出S(o)8至S(o)1是已调整的原两个操作数的BCD和。
显然,具有先进的超大规模集成电路技术的传统的BCD加法器电路,使用一个如10的进位传输全加器电路,该电路具有大量的延迟,该延迟是由于通过加法器(15,35)的进位传输延迟和校正电路(门20,25和30)的延迟造成的。传统的进位传输全加器电路,如像15和35所具有的延迟等于:
延迟=log2(操作数宽度,即每个操作数的位数)。
因而,与加法器10和35有关的延迟等于log2(4),或延迟两个单位。与校正电路有关的延迟等于两个单位的延迟,因为,对于图1的加法器来说,两级门的电路为四个单位的总延迟。因为操作数宽度的增加,例如,当两个32位操作数相加时,延迟同样相应增加。传统的BCD加法器电路将需要8级进位传输全加器加上有关的校正电路,来实现两个32位操作数相加,因此,对于这种加法器电路来说,有关的延迟应当为32个单位。
本发明的目的在于提供一种BCD加法器电路,该电路减少实现两个BCD数相加所需要的时间。
本发明的另一个目的和优点在下面说明书部分中陈述,从说明书中可明显看出,从发明的实施例中也可以了解到。
为了达到此目标,根据本发明的目的,如其中具体和广泛描述的那样,用于把第一个和第二个BCD操作数相加并产生BCD之和的本发明的BCD加法器电路包括:二进制加法器装置,该装置具有连接接收第一和第二个操作数和BCD预校正因数的输入端,用于产生中间和向量及中间进位向量;先行进位装置,该装置的输入端连接接收中间和向量及中间进位向量,用于产生传输向量和最后的进位向量;及校正装置,该装置具有连接接收中间进位向量最后进位向量、传输向量和BCD校正因数的输入端,用于根据由中间和最后进位向量所确定的BCD校正因数,有条件地修改传输向量,来产生BCD和。
作为构成本说明书一部分的附图,表示出本发明的一个具体实施例,同说明书一起,用于解释本发明的原理。
图1是说明现有技术BCD加法器电路的逻辑图。
图2是根据本发明的最佳实施例,说明BCD加法器电路的总方框图。
图3是图2BCD加法器电路第一级全加器更详细的方框图。
图4-8是图2 BCD加法器电路第二级先行进位网路的更详细的逻辑图。及
图9是图2的BCD加法器电路第三级校正电路的更详细的逻辑图。
详细参照本发明的最佳实施例,附图中说明了本发明的一个例子,图中相同的参考字母表示相应的部件。
本发明的BCD加法器电路减少了实现两个BCD数相加所需要的时间,使用一组全加器,把两个BCD数和预校正因数相加来实现两个BCD数的相加。每一个全加器最好把与校正因数01102一起加相应的BCD数字。来自每一个全加器的进位输出项不波及至更高次的位,这样减少了由于波动进位效应产生的传输时延,但是在电路的中间级要考虑。该中间级在加法运算中是用于实现传统的全进位传输和产生传输项和最后进位项。然而,在该级的相加运算不产生最后结果,因为必须检查进位项,来看一看在第一级加预校正因数是否适宜。在电路的最后一级,要检查前两级的进位项,来确定是否用BCD校正因数10102来修改传输和最后的进位项,取消预校正因数的影响并产生正确的BCD和。这样,仅需要一次总的加法运算,因此,减少了延迟单元,大大地增加了运算速度。
图2是表示本发明的BCD加法器电路的一个最佳实施例的总框图,用于把第一和第二BCD操作数相加并产生一个BCD和。根据本发明,BCD加法器包括二进制加法器装置,该装置的输入端连接接收第一和第二个操作数和BCD预先校正因数,用于产生中间和向量和中间进位向量。如图2所示,这样的加法器装置包括多个全加器电路作为第一级,图示出了其中的三个加法器50,55和60。
在第Ⅰ级中,加数A,加数B和一个BCD预校正因数并行输入到全加器电路50,55和60。加数A和加数B组合在一个四位字节中,而且每一个全加器电路能够把两个4位二进制操作数和一个4位预校正因数(该因数最好等于01102(610))相加。如图2所示,X(M∶N)变换是用于表示信号X的M位到N位变换。这里N是最低有效位。这样,X(N+3∶N)表示信号X四个相邻位,这里N是最低有效位。
一般是用从前一加法器接收进位的输入端接收预校正因数。在第一级中的全加器电路产生一个中间和向量,“第一_和”(FTRST-SUM),该向量表示操作数A、B和预校正因数和;及一个中间进位向量,“进位-向量”(CARRY-VECTOR),该向量表示每个单位相加的进位位。
图3是第一级中全加器电路详细的方框图。BCD编码的操作数A和B组成为一个四位字节或四位字节,其边界分别表示于图3为:a(n+3)∶a(n)和b(n+3)∶b(n)。在第Ⅰ级中的每个全加电路最好包括多个并联的单位全加器,对于图2的全加器电路50来说,如像元件51,52,53和54所示。BCD预校正因数(01102)加到每一个四位字节或BCD数字,表示在一个四位字节中,基于二进制和基于十进制数之间的差别。对于操作数A和B与进位输入C来说,全加器电路用如下两个等式来规定:
SUM(i)=a(i)XOR b(i) XOR C(i)
……(1)
CARRY(i)=(a(i) AND b(i))OR(b
(i)AND C(i)OR(a(i)
AND C(i))……(2)
正如上面所指出的,在全加器电路50中,以及对图2中的每一个全加器电路来说,进位输入C不是连接接收真实进位,而是接收BCD预校正因数“01102。因此,对于全加器电路50来说,相应于包含位(n+3)至n的一个四位字节:
对于位n:SUM(n)=a(n) XOR b(n) XOR
“O”
=a(n) XOR b(n)
CARRY(n)=〔a(n) AND b(n)OR
〔b(n) AND“O”〕OR
〔a(n) AND“O”〕
对于位n+1:
SUM(n+1)=a(n+1)XOR“1”XOR b(n
+1)
=NOT〔a(n+1)XOR b(n+1)〕
CARRY(n+1)=〔a(n+1)AND b(n+1)〕
OR〔b(n+1)AND“1”〕OR
〔a(n+1)AND“1”〕
=〔a(n+1)OR b(n+1)〕
对于位n+2:
SUM(n+2)=a(n+2)XOR b(n+2)XOR
“1”
=NOT〔a(n+2)XOR b(n+
2)〕
CARRY(n+2)=〔a(n+2)AND b(n+2)〕
OR〔b(n+2)AND“1”〕
OR〔a(n+2)AND“1”〕
=〔a(n+2)AND b(n+2)〕
对于位n+3:
SUM(n+3)=a(n+3)XOR b(n+3)XOR
“O”
=〔a(n+3)XOR b(b+3)〕
CARRY(n+3)=〔a(n+3)AND b(n+3)〕
OR〔b(n+3)AND“O”〕
OR〔a(n+3)AND“O”〕
=〔a(n+3)AND b(n+3)〕
来自每个全加器电路的和位构成一个向量“第一_和”及来自每个全加电路的进位位构成一个“进位-向量”。然而不像一般的BCD加法器,在第一级进位输入端不接收进位位所以没有波动传输延迟。而且,在一般的BCD加法器的最后一级由校正因数可能产生一些传输延迟,在本发明中该延迟被置于第一级。
如图3所示,从每个全加器输出的进位移位到相应于全加器的和位,作为下一个更高次位,排列作为下一级的“第一_和”向量及“进位-向量”。
根据本发明的BCD加法器电路,还包括先行进位装置,其输入端连接接收中间和向量及中间进位向量,用于产生传输向量和最后进位向量。在图2的本发明最佳实施例中,在第Ⅱ级的先行进位网路65从第Ⅰ级的全加器接收“第一_和”向量及“进位-向量”,并产生一个“传输”向量和“最后-进位”向量。
图4-8是图2中BCD加法器电路第Ⅱ级一组更详细的逻辑图。“第一_和”向量及“进位_向量”是在先行进位网路65中相加在一起。在网路65中实现加法是类似于传统的BCD加法器电路。如上所示,然而,加法操作并没有完成,因为位传输和位进位项变为第Ⅲ级电路的输入,以确定是否需要BCD校正因数。
图4-8表示了一个特殊的先行进位设计,用于说明电路65的32位设计的16位,电路65最好按四位字节工作。最左边虚线之前的电路的第一级表示位传输和产生项的生成。如果一个进到第n位的进位将产生第n位的进位输出,则传输位Pn=1。如果有第n位进位输出与是否有一个进位进到第n位无关,则产生位Gn=1。位传输和位产生项用于产生“最后_进位”向量,这一点在后面将更详细讨论。在图4-7中,把“第一_和”向量的位0-15以及“进位_向量”的位0-14作为网路65的输入,所产生的功能规定如下:
Gn=FIRST_SUM〔n〕AND CARRY_
VECTOR〔n-1〕……(3)
因而,当FIRST_SUM〔n〕和CARRY_VECTOR〔n〕都为1时,Gn=1,
传输功能规定如下:
Pn=FIRST_SUM〔n〕XOR CARRY_
VECTOR〔n-1〕……(4)
这里n是一个位,因而,当FIRST-SUM〔n〕=0及CARRY-VECTOR〔n〕=1或当FIRST-SUM〔n〕=1及CARRY-VECTOR〔n〕=0时,Pn=1。最好在实现中使用负逻辑,因为负逻辑比正逻辑速度快。然而对本领域的技术人员来说是明显的,基于正逻辑的电路设计同样可以使用。
如图4所示,例如,FIRST-SUM〔01〕和CARRY-VECTOR〔00〕输入到“与门86产生G1(产生位1),送到“异或”门87产生P1(传输位1)。PIRST-SNM〔02〕及CARRY-VECTOR〔01〕输入到“与”门88产生G2,送入“异或”门89产生P2。FIRST-SUM〔03〕及CARRY-VECTOR〔02〕输入到“与”门90产生G3,输入到“异或”门91产生P3。这种格式对所有相应的“第一_和”及“进位向量”位对都是存在的。然而,由于“进位-向量”有一位的调整移位,则“第一_和”的第一位和“进位-向量”的最后一位都没有相应的一对P和G项。来自每一单位操作的P项构成了“传输”向量。
第一级门(产生位传输和发生项的“与”和“异或”门)和最后级门(产生“BCD-和”的“异或”门)之间所表示的逻辑电路代表用于实际的加法操作,以产生“最后_进位”向量项。在该部分实现的加法运算类似于传统的二进制加法器电路中实现的操作,即把两个操作数相加并产生一个和及一个进位输出,该进位输出从所有前面的位进行传输。然而,在二进制加法器的传统的方法中不是完成加。在传统的二进制加法器中,结果是“传输”向量和“最后进位”向量的“异或”,“传输”向量和“最后_进位”向量的位项留作在第Ⅲ级考虑。
三个输入逻辑芯片92,107,111及146,对输入端B1和B2执行逻辑“与”运算,而对输入端A及该“与”运算的结果执行逻辑“或”运算。对于这种类型的片子,使用负逻辑时,其逻辑的规定如下:
C=NOT((NOT B1AND NOT B2)OR
NOTA)
六个输入逻辑芯片93,108,126,129,131,132及148对输入端B1和B2执行逻辑“与”运算,对输入端C1,C2和C3执行逻辑“与”运算。然后,电路对输入端A,及B和C输入端“与”运算的输出执行“或”运算。对于这种类型的片子来说,使用负逻辑,其逻辑规定如下:
C=NOT(NOTG AND NOT C2AND
NOT C3)OR(NOT B1AND NOT
B2)OR NOTA)。
九个输入逻辑芯片109,110,127,130,149,150,151,152和154对输入端B1和B2执行逻辑“与”运算,对于输入端C1,C2和C3执行逻辑“与”运算,对输入端D1,D2,D3和D4执行逻辑“与”运算。然后电路对输入端A和每一个“与”运算的结果进行逻辑“或”运算。对于这种类型的片子来说,使用负逻辑,其逻辑规定如下:
C=NOT((NOT D1AND NOT D2AND
NOT D3AND NOT D4)OR(NOT
C1AND NOT C2AND NOT C3)
OR(NOT B1AND NOT B2)OR
NOTA)。
该逻辑级是用于尽可能快地建立“最后_进位”向量项。“最后后_进位”向量的位项必须传输通过每位,如图4-7所示,当位从最低有效位0至最高有效位16增加时,需要产生“最后_进位”向量项的逻辑项的数目同样增加。因而,使用更先进的逻辑门,产生更有效的位项,并保持其逻辑级数及伴随的延迟减至最少。
位传输和位产生项可以4位为一组组合在一起,建立4位字节传输项和4位字节产生项。例如,如图5所示,“与”门112对输入位传输项P4,P5,P6和P7执行逻辑“与”运算,产生一个4位字节传输项PRO47,如图6所示,“与”门128对输入位传传输项P8,P9,P10和P11执行“与”逻辑运算,产生一个4位字节传输项PRO811。同样,如图5所示,门110输出一个四位字节产生项GEN47,为了说明起见,使用正的表示方法(但是,为了速度快,使用负的逻辑来实现)。
GEN47的规定如下:
GEN47=G7OR(G6AND P7)OR(G5
AND P6AND P7)OR(G4
AND P5AND PG AND P7)。
类似地,门127产生GEN811和门149产生GEN1215,GEN1215的规定如下:
GEN811=G11OR(G10AND P11)OR(G9
AND P10AND P11)OR(G8
AND P9AND P10AND P11);
GEN1215=G15OR(G14AND P15)OR
(G13AND P14AND P15)OR
(G12AND P13AND P14
AND P15)。
使用位传输和位产生项,生成“最后_进位”向量,参照下面表示的FINAL-CARRY〔15〕,对于包含位n至n+3的4位字节而言,“最后-进位”向量规定如下:
FINAL_CARRY〔n〕=G〔n〕OR(FINAL-
CARRY〔n-1〕AND
P〔n〕)
FINAL_CARRY〔n+1〕=G〔n+1〕OR(G〔n〕
AND P〔n+1〕)OR
(FINAL_CARRY
〔n-1〕AND P〔n〕
AND P〔n+1〕)
FINAL_CARRY〔n+2〕=G〔n+2〕OR(G〔n+1〕
AND P〔n+2〕)OR
(G〔n〕AND P〔n+1〕
AND P〔n+2〕)OR
(FINAL-CARRY
〔n-1〕AND P〔n〕
AND P〔n+1〕AND
P〔n+2〕
FINAL_CARRY〔n+3〕=G〔n+3〕OR(G〔n+2〕
AND P〔n+3〕)OR
(G〔n+1〕AND P〔n+
2〕AND P〔n+3〕)
OR(G〔n〕AND P〔n
+1〕AND P〔n+2〕
AND P〔n+3〕)OR
(FINAL_CARRY
〔n-1〕AND P〔n〕
AND P〔n+1〕AND
P〔n+2〕AND P〔n+3〕)
使用4位字节传输和4位字节产生项的好处,如PRO811,GEN47,GEN1215和PRO47可以用图7中的逻辑芯片154来说明。逻辑芯片154接收GEN1215,GEN811,GEN47,PRO811,PRO47,和FINAL_CARRY〔3〕,并输出FINAL_CARRY〔15〕,FINAL_CARRY〔15〕规定如下:
FINAL_CARRY〔15〕=GEN 1215 OR(GEN
811 AND PRO1215)
OR(GEN 47 AND
PRO811 AND
PRO1215)OR
(FINAL-CARRY
〔3〕 AND PRO47
AND PRO811 AND
PRO1215)。
如图4-8所示,一个先行进位设计,用于把两个32位操作数相加,假定在最坏的情况下,在4个逻辑级之后,产生“最后_进位位”向量。在延迟方面,这一点是对传统的脉动加法器的一个重要改进。传统的脉动加法器为了实现两个32位操作数相加,有32个逻辑级那样多的延迟。
根据本发明,BCD加法器电路还包括校正装置,该装置的输入端连接接收中间进位向量,最后进位向量,传输向量和BCD校正因数。校正装置根据由中间和最后进位向量确定的BCD校正因数,有条件地修正传输向量和最后进位向量,来产生BCD和。在图2的最佳实施例中,校正电路70是在第Ⅲ级,它从第Ⅰ级接收“进位_向量”,从第Ⅱ级接收“最后_进位”向量、“传输”向量及BCD校正因数10102(1010),以产生BCD和。对于4位字节来说,如果来自“最后_进位”向量的一个特殊的4位字节的最高有效位,与来自“进位_向量”相应的4位字节的最高有效位都不是“1”,则用“异或”功能把BCD校正因数与传输向量合并。实际上,减除了在第Ⅰ级加进的预校正因数,并产生了BCD和的正确的4位字节值。对于一个特殊的4位字节来说,如果这两个位中的任何一位是“1”,BCD预校正因数则恰当地加到第Ⅰ级,因此,BCD和正确地表示为“传输”向量与“最后_进位”向量的“异或”运算。
图9是用于一个4位字节的BCD加法器电路的校正电路200更详细的逻辑图,通常,校正电路200使用“最后_进位”向量和“进位_向量”的特殊4位字节的最高有效位,来确定一个特殊的4位字节是否需要加BCD校正因数。对于某些加法运算来说,加BCD预校正因数01102可能不是必须的。如果BCD校正因数相加不产生4位字节进位输出,即“进位_向量”〔n+3〕没有置位,它可能产生一个不正确的BCD和,例如,当把数1和5相加时,对于10进制和16进制(即4位二进制)二者运算来说,答案将是一样的。然而,根据本发明,BCD预校正因数在第Ⅰ级被加到操作数中。因而,无用的01102必须减去。这可以通过加一个10102(1010)来实现。
例如:1+5 在第Ⅰ级为: 0001
0101
+0110
第二级: 0010:和
+0101:进位
该结果是不正确的, 1100
加入BCD校正因数: +1010
校正的十进制和: 0110
如果“进位_向量”的特殊的4位字节的最高有效位和“最后_进位”向量的特殊4位字节的最高有效位都没有置位,则BCD校正因数仅加到一个4位字节中。如果其中一个进位位置位了,则恰当地加入了BCD预校正因数,而不要加BCD校正因数了。
图9表示一个校正电路,例如校正电路70,说明了如果启动BCD校正因数时,如何修改4位字节中每一位。启动信号,ENABLE_MODIFICATION_OF_1010-ON_NIBBLEx=EN_A_ON_NIBx,这里A=10102,该启动信号产生于“与”门201,这里FINAL_CARRY〔n+3〕和CARRY_VECTOR〔n+3〕是输入。如果进位位都没置位,而EN_A_ON_NIBx是置位,则把BCD校正因数加到该4位字节。对于该4位字节的BCD-SUM修改如下:
BCD-SUM〔n〕不受校正因数的影响,因为,
FINAL_CARRY〔n-〕和PRORAGATE
〔n〕“异或”零(exclusively
ORing zero)不影响结果。
BCD-SUM〔n+1〕=(EN_A_ON_NIBx
AND“1”)XOR FINAL_
CARRY〔n〕 XOR
PROPAGATE〔n+1〕
BCD-SUM〔n+2〕是输入FINAL_CARRY〔n+1〕PROPAGATE〔n+2〕及“与”门204的输出经“异或”门205产生的。如果BCD校正因数被启动,且FINAL_CARRY〔n〕或PROPAGATE〔n+1〕是置位的话,在位〔n+1〕加“1”,则将产生到位〔n+2〕的进位。由“或”门203做出该决定。如果EN_A_ON_NIBx是置位时,““与”门204接收“或”门203的输出并允许使用“或”门203的输出。
BCD-SUM〔n+3〕是输入FANAL_CARRY〔n+2〕、PROPAGATE〔n+3〕、EN_A_ON_NIBX、及“与”门208的输出经“异或”门209产生的。如果BCD校正因数被启动,则在位〔n+3〕上加“1”。加“1”是由“异或”起动信号和其它项实现的,这是一些产生BCD_SUM的项,即FINAL_CARRY〔n+2〕和PROPAGATE〔n+3〕。“与”门208的输出是另外一项,如果启动信号是置位的话,需要考虑该项,因为,加“1”至位〔n+1〕产生一个进位,然后通过位〔n+2〕传输,这就能够产生一个到位〔n+3〕的进位。如果启动信号是置位的话,“或”门206和207检查确定是否从位〔n+1〕产生了一个进位。
图8说明了在校正电路70中使用的启动信号的发生。例如,EN_A_ON_NIBO是从“与”门159产生,EN_A_ON_NIB1是从“与”门160产生,EN_A_ON_NIB2是从“与”门161产生,及EN_A_ON_NIB3是从“与”门162产生。如图4-7所示,来自门159-162的输出被用于“异或”门94,96,114和116的输入,在最后一个逻辑级产生相应的BCD-SUN位。
在图8所示的最佳实施例中,NIBY_X1和NIBY_X2是由4输入端“与”门产生的,例如,163和164。这些信号相应于图9中门203和204的最终结果,该信号规定如下:
NIBY-X1=CARRY-VECTOR〔n+3〕AND
FINAL_CARRY〔n+3〕AND
PROPAGATE〔n+1〕
NIBY-X2=CARRY_VOCTOR〔n+3〕
AND FINAL_CARRY〔n+3〕
AND(NOT FLNAL_CARRY〔
〔n〕)
信号,CAR_FROM_NIBY,如图8所示,该信号相应于实施例中所用的图9中门208的输出。然而,使用另外一种设计,可以得到同样的结果。信号CAR_FROM_NIBY可规定如下:
CAR_FROM_A_NIBY NOT(A XOR B
XOR C XOR D),
其中A=(CARRY_VECTOR〔n+3〕AND
FLNAL_CARRY〔n+3〕AND
PROPAGATE〔n+1〕AND
PROPAGATE〔n+2〕)
B=(CARRY_VECTOR〔n+3〕AND
FINAL_CARRY〔n+3〕AND
FINAL_CARRY〔n〕AND
PROPAGATE〔n+2〕)
C=(CARRY_VECTOR〔n+3〕AND
FINAL_CARRY〔n+3〕AND
FINAL_CARRY〔n+1〕AND
PROPAGATE〔n+1〕)
D=(CARRY_VECTOR〔n+3〕AND
FINAL_CARRY〔n+3〕AND
FINAL_CARRY〔n〕 AND FINAL_
CARRY〔n+1〕)
传统的BCD加法器电路执行BCD加的运算,对于32位操作数来说,需要10至26个逻辑电路级。本发明的BCD加法器电路把需要的逻辑电路级减至7个,因为仅只进行一次全加运算。为了确定对于BCD和的数字BCD校正是需要,在最初级,电路加入BCD预校正因数,并控制从加的中间级来的进位项。当每个操作数的位数增加时,本发明的BCD加法器电路的优点很大,第一级和最后一级的进位项不通过4位字节间传送,因而进一步增加了运算速度。
显然,对于本领域的技术人员,对本发明的方法和装置方面可以进行各种修改和变型,但都不脱离本发明的范围和精神,这就意味着本发明复盖了本发明的各种修改和变型,这些都在权利要求及其等同的范围之内。
Claims (9)
1、用于对第一和第二个二一十进制(BCD)操作数相加及产生BCD和的BCD加法器电路包括:
二进制加法器装置,该装置的输入端连接接收第一、第二操作数和BCD预校正因数,用于产生中间和向量及中间进位向量;
先行进位装置,将该装置的输入端连接接收中间和向量及中间进位向量,用于产生一个传输向量和最后进位向量;及
校正装置,该装置的输入端连接接收中间进位向量、最后进位向量、传输向量和BCD校正因数,根据由上述中间和最后的进位向量确定的上述的BCD校正因数,有条件地修改上述的传输向量和最后的进位向量,产生所述的BCD和。
2、根据权利要求1的BCD加法器电路,其中所述的加法器装置包括多个并列的全加电路,上述全加器的每一个,其输入端连接接收上述第一操作数的唯一的连续位组、上述第二操作数唯一的和相应的连续位组和上述预先校正因数的相应部分,上述多个全加器电路的每一个的输出提供上述中间和向量的唯一连续位组和上述中间进位向量唯一连续位组。
3、根据权利要求2的BCD加法器电路,其中所述第一操作数的唯一连续位组等于4位,所述的第二操作唯一连续位组等于4位且上述全加器电路的每一个都是由4个并联的一位全加器电路构成的,所述全加器的每一个都有输入端接收上述第一操作数的4位、上述第二操作数的4位和上述BCD预校正因数的4位,上述全加器的每一个都有所述中间和向量的4位输出和所述中间进位向量的4位输出。
4、根据权利要求3的的BCD加法器电路,其中所说的预校正因数的每一部分等于二进制的0110。
5、根据权利要求1的BCD加法器电路,其中上述先行进位装置包括多组分离的逻辑元件,上述多组分离逻辑元件的每一组的输入端连接接收上述中间进位向量的唯一连续位组和上述中间和向量的唯一连续位组,多组分离逻辑元件的每一组都有一个所述传输向量唯一连续的位组输出和所述最后进位向量的唯一的位组输出。
6、根据权利要求1的BCD加法器电路,其中所述的校正装置包括:
多个并联的“或”门,其中所说的每一个“或”门的输入端连接接收上述中间进位向量的一位、和上述的最后进位向量的一位,且每一个“或”门都产生一个输出;
多个“与”门,其中每一个对应于上述不同的一个“或”门,其输入端连接接收上述对应“或”门的输出及上述BCD校正因数的一位,每一个“与”门都产生一个输出,及
多个“异或”门,其中每一个“异或”门的输入端连接接收上述相应“与”门的输出及上述传输向量的唯一位,上述多个“异或”门输出上述BCD和的唯一位。
7、根据权利要求6的BCD加法器电路,其中上述校正因数等于二进制的1010。
8、用于把第一和第二个BCD编码的操作数相加的BCD加法器电路,所述第一和第二个操作数分组为多个4位字节,上述的4位字节的每一个是一个唯一的4个连续位,用于产生BCD和的BCD加法器电路包括:
多个并联的全加器电路,其全加器电路的每一个的输入端连接接收一个上述第一操作数的一个4位字节、上述第二操作数的一个4位字节及等于二进制0110的BCD预校正因数,上述的多个全加器电路的每一个都提供有等于4位的中间和向量的唯一连续位组和等于4位的中间进位向量的唯一连续位组输出;
一个先行进位电路,它包括多个一系列的分离逻辑元件,所述一系列分离元件的每一个的输入端连接接收上述中间进位向量和中间和向量的唯一连续位组,一系列分离逻辑元件的每一个都提供有传输向量的唯一连续位组和最后进位向量的唯一的位组;及
一个校正电路包括:
多个并联的“或”门,其中每一个“或”门输入端连接接收所述中间进位向量的一位和上述最后进位向量的一位,上述的每一个““或”门都产生一个输出;
多个“与”门,每一个“与”门对应于上述一个不同的“或”门,且每一个“与”门的输入端连接接收所述对应“或”门及等于二进制1010的BCD校正因数的一位,上述的每一个“与”门都产生一个输出,及
多个“异或”门,每个“异或”门的输入连接接收上述对应“与”门的输出、上述传输向量的唯一位和所述最后进位向量的唯一位,每一个“异或”电路输出上述BCD和的唯一位。
9、用计算机系统中使用的BCD加法器电路把第一和第二个BCD编码操作数相加并产生BCD和的方法,该方法包括下列步骤:
在寄存器中存储上述第一和第二个操作数;
由加法电路产生中间和向量及中间进位向量;
由先行进位电路产生传输向量和最后进位向量,上述的先行进位电路的输入端连接接收上述中间和向量和上述的中间进位向量;
如果上述的中间和最后进位向量有预定的关系,则根据上述BCD校正因数和上述最后进位向量修改上述传输向量,形成所述BCD和,且,如果所述中间和最后的进位向量没有预先确定的关系,则根据上述最后进位向量修改上述传输向量形成上述BCD和。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/072,161 US4805131A (en) | 1987-07-09 | 1987-07-09 | BCD adder circuit |
US072.161 | 1987-07-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1031613A true CN1031613A (zh) | 1989-03-08 |
CN1014188B CN1014188B (zh) | 1991-10-02 |
Family
ID=22105974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN88104229A Expired CN1014188B (zh) | 1987-07-09 | 1988-07-09 | 二~十进制加法器电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US4805131A (zh) |
EP (1) | EP0298717A3 (zh) |
JP (1) | JPS6488737A (zh) |
CN (1) | CN1014188B (zh) |
BR (1) | BR8803463A (zh) |
CA (1) | CA1291266C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591614A (zh) * | 2011-01-14 | 2012-07-18 | 上海丽恒光微电子科技有限公司 | 加法器以及集成电路 |
CN108268242A (zh) * | 2018-02-11 | 2018-07-10 | 山东理工大学 | 一种10:4进位存储加法器和10:2进位存储加法器 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699287A (en) * | 1992-09-30 | 1997-12-16 | Texas Instruments Incorporated | Method and device for adding and subtracting thermometer coded data |
GB9510834D0 (en) * | 1995-05-27 | 1995-07-19 | Int Computers Ltd | Decimal arithmetic apparatus and method |
US6055557A (en) * | 1997-01-08 | 2000-04-25 | International Business Machines Corp. | Adder circuit and method therefor |
US7299254B2 (en) * | 2003-11-24 | 2007-11-20 | International Business Machines Corporation | Binary coded decimal addition |
US7546328B2 (en) * | 2004-08-31 | 2009-06-09 | Wisconsin Alumni Research Foundation | Decimal floating-point adder |
US7743084B2 (en) * | 2004-09-23 | 2010-06-22 | Wisconsin Alumni Research Foundation | Processing unit having multioperand decimal addition |
US7519645B2 (en) * | 2005-02-10 | 2009-04-14 | International Business Machines Corporation | System and method for performing decimal floating point addition |
US7477171B2 (en) * | 2007-03-27 | 2009-01-13 | Intel Corporation | Binary-to-BCD conversion |
US9143159B2 (en) * | 2012-10-04 | 2015-09-22 | Silminds, Inc. | DPD/BCD to BID converters |
US9134958B2 (en) * | 2012-10-22 | 2015-09-15 | Silminds, Inc. | Bid to BCD/DPD converters |
US9400635B1 (en) | 2013-01-14 | 2016-07-26 | Altera Corporation | Methods and apparatus for performing dynamic data alignment for floating-point operations |
US10671345B2 (en) | 2017-02-02 | 2020-06-02 | Intel Corporation | Methods and apparatus for performing fixed-point normalization using floating-point functional blocks |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3629565A (en) * | 1970-02-13 | 1971-12-21 | Ibm | Improved decimal adder for directly implementing bcd addition utilizing logic circuitry |
US3711693A (en) * | 1971-06-30 | 1973-01-16 | Honeywell Inf Systems | Modular bcd and binary arithmetic and logical system |
DE2352686B2 (de) * | 1973-10-20 | 1978-05-11 | Vereinigte Flugtechnische Werke- Fokker Gmbh, 2800 Bremen | Dezimaler Parallel-Addierer/Substrahierer |
US4001570A (en) * | 1975-06-17 | 1977-01-04 | International Business Machines Corporation | Arithmetic unit for a digital data processor |
US4172288A (en) * | 1976-03-08 | 1979-10-23 | Motorola, Inc. | Binary or BCD adder with precorrected result |
US4638300A (en) * | 1982-05-10 | 1987-01-20 | Advanced Micro Devices, Inc. | Central processing unit having built-in BCD operation |
US4707799A (en) * | 1984-01-30 | 1987-11-17 | Kabushiki Kaisha Toshiba | Bit sliced decimal adding/subtracting unit for multi-digit decimal addition and subtraction |
JPS61166627A (ja) * | 1985-01-18 | 1986-07-28 | Toshiba Corp | 10進桁加減算回路 |
WO1986004699A1 (en) * | 1985-01-31 | 1986-08-14 | Burroughs Corporation | Fast bcd/binary adder |
US4718033A (en) * | 1985-06-28 | 1988-01-05 | Hewlett-Packard Company | Intermediate decimal correction for sequential addition |
-
1987
- 1987-07-09 US US07/072,161 patent/US4805131A/en not_active Expired - Lifetime
-
1988
- 1988-07-06 EP EP19880306152 patent/EP0298717A3/en not_active Ceased
- 1988-07-07 JP JP63170011A patent/JPS6488737A/ja active Granted
- 1988-07-08 BR BR8803463A patent/BR8803463A/pt not_active Application Discontinuation
- 1988-07-08 CA CA000571531A patent/CA1291266C/en not_active Expired
- 1988-07-09 CN CN88104229A patent/CN1014188B/zh not_active Expired
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591614A (zh) * | 2011-01-14 | 2012-07-18 | 上海丽恒光微电子科技有限公司 | 加法器以及集成电路 |
CN102591614B (zh) * | 2011-01-14 | 2015-09-09 | 上海丽恒光微电子科技有限公司 | 加法器以及集成电路 |
CN108268242A (zh) * | 2018-02-11 | 2018-07-10 | 山东理工大学 | 一种10:4进位存储加法器和10:2进位存储加法器 |
CN108268242B (zh) * | 2018-02-11 | 2021-09-28 | 山东理工大学 | 一种10:4进位存储加法器和10:2进位存储加法器 |
Also Published As
Publication number | Publication date |
---|---|
JPS6488737A (en) | 1989-04-03 |
CN1014188B (zh) | 1991-10-02 |
BR8803463A (pt) | 1989-01-31 |
CA1291266C (en) | 1991-10-22 |
US4805131A (en) | 1989-02-14 |
EP0298717A2 (en) | 1989-01-11 |
JPH0545982B2 (zh) | 1993-07-12 |
EP0298717A3 (en) | 1991-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1031613A (zh) | 二—十进制加法器电路 | |
CN1296817C (zh) | 模乘方法及装置及模乘计算单元 | |
CN1094610C (zh) | 可以对复合操作数进行压缩操作和拆开操作的微处理器 | |
CN1153354C (zh) | 纠错编码器、纠错解码器和具有纠错码的数据传输系统 | |
CN1114152C (zh) | 适合于进行饱和运算的处理器及其控制方法 | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1210647C (zh) | 适于作由正值处理及饱和运算处理组成的修整处理的处理器 | |
CN1975662A (zh) | 算术运算单元、信息处理设备和算术运算方法 | |
CN1296813C (zh) | 浮点存储方法及浮点运算装置 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1801082A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1139777A (zh) | 处理器及其运算方法以及数据处理器 | |
CN1059413A (zh) | 执行算术,逻辑与有关运算的方法及数值算术单元 | |
CN1238604A (zh) | 里德-所罗门编码装置与编码方法 | |
CN1608244A (zh) | 伽罗瓦域乘法/乘法一加法乘法累加 | |
CN1845213A (zh) | 一种实现sms4密码算法中加解密处理的方法 | |
CN1021004C (zh) | 在剩余数系统中用于编码和译码数据的方法和装置 | |
CN1821951A (zh) | 算术单元 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1577250A (zh) | 用于实现2的幂的浮点估计的系统与方法 | |
CN1653699A (zh) | 软判定解码里德-索洛蒙码的方法 | |
CN1834897A (zh) | 逐位进位加法器 | |
CN1082207C (zh) | 高速动态二进制加法器 | |
CN101068113A (zh) | 用于并行bch编码的电路、编码器和装置 | |
CN1671090A (zh) | 一种计算平方根的装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C13 | Decision | ||
GR02 | Examined patent application | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |