1、直接补码阵列乘法器的设计原理*李澄举 (嘉应学院 计算机系, 广东 梅州 514015)摘要直接补码阵列乘法器的工作原理是计算机组成原理课程的难点。本文从组成阵列乘法器的四类全加器的工作原理分析开始,结合补码和真值的转换关系,通过和手工计算方法的对比,深入浅出地揭示了直接补码阵列乘法器的工作原理。关键词 直接补码阵列乘法器,负权值,一般化全加器一、引言直接补码阵列乘法器可以直接求出两个补码的相乘积,由于符号位也参加运算,运算速度比起原码阵列乘法器快得多。5 位乘 5 位的直接补码并行阵列乘法器的逻辑结构如图1 所示。与原码阵列乘法器不同的是,直接补码阵列乘法器除了采用 0 类全加器之外,还采用
2、了 1 类和 2 类全加器,以对应于输入补码符号位的负的位权值;图 1 左下角的虚框是行波进位加法器,为了缩短加法时间,可以用先行进位加法器代替。设被乘数和乘数(均为补码)分别为 A( a4)a3a2a1a0,B(b 4)b3b2b1b0,其中 a4 和 b4 是符号位,用括号括起来是表示这一位具有负的位权值。根据补码和真值的转换可以知道,补码 A 的真值 a a4(2 4)a 323a 222a 121a 020;补码 B 的真值 b b4(2 4)b 323b 222b 121b 020;即在将补码直接转换成真值时,符号位取负权值,其余位取正权值。如设 A01101(13),B11011(
3、5) ,计算符号位参加运算 AB 的竖式乘法如下:*【作者简介】李澄举(1949),男,广东梅县人, 嘉应学院计算机系 副教授在这个竖式中,带括位的位具有负的位权值,即(1) 1 ,(0)0。原乘积最高两位0(1)是带有负位权值的二进制数,相当于 0211( 2 0) 1,因( 1)1 相当于 1(2 1)12 0 1,故 0(1)可以写成( 1)1,这扩充符号位(1)便是乘积的符号位。由此可见,在竖式乘法中,若乘积中间位有带负位权值的(1) ,可照此办法将 (1)左移或消去,如果( 1)能移到乘积最左边,则说明乘积为负,这(1) 便是补码符号位;否则乘积为正,应在乘积最左边的 1 之左边加一
4、个 0 作为补码符号位。二、各类全加器的加法逻辑要了解直接补码阵列乘法器的工作原理,首先要了解各类全加器的工作原理。常规的一位全加器可假定它的 3 个输入和 2 个输出都是正权。这种加法器通过把正权或负权加到输入/ 输出端,可以归纳出四类加法单元。如图 2 所示各类全加器的逻辑符号,图中凡带有小圆圈的输入端都是负位权值的输入端、带有小圆圈的输出端都是负位权值的输出端。由图可见,0 类全加器没有负权输入和负权输出;1 类全加器有 1 个负权输入和 1 个负权输出;2 类全加器有 2 个负权输入和 1 个负权输出;3 类全加器有 3 个负权输入和3 个负权输出;各类全加器就是按负权值输入的个数命名
5、的。1、0 类全加器由于 0 类全加器 3 个输入 X、Y、Z 和 2 个输出 S(本位)和 C(进位)都是正权,它的输出函数表达式为我们所熟知:。XYZ02、1 类全加器1 类全加器只有 1 个负权输入和 1 个负权的本位输出。对于负权输入,如竖式乘法可见,加法的结果是正权的值的和与负权的值相减。但一位的减法不同于做 n 位定点整数的补码减法,1 类全加器须有如表 1 所示的真值表(表中带负权值的输入、输出变量前加符号“”以标识) ,这种真值表表明了带权输入和带权输出之间的逻辑关系和数值关系:输入端 X、Y带正权值,Z 带负权值,按手工加法,结果为 XY (Z)的值。只是当结果为 1 时,应
6、将 1 变换为进位 C1、本位 S(1) ,等效于 1211(2 0)1,使本位保持负的位权值,即:XY(Z )C (S ) C 21S (2 0)X、Y、Z 的所有取值组合对应的输出结果如下:00(0) 0(0)02 10(2 0) 0;00(1) 0(1)02 11(2 0) 1;01(0) 1(1)12 11(2 0) 1;01(1) 0(0)02 10(2 0) 0;10(0) 1(1)12 11(2 0) 1;10(1) 0(0)02 10(2 0) 0;11(0) 1(0)12 10(2 0) 2;11(1) 1(1)12 11(2 0) 1;故其输出函数表达式为:XZYCXYZY
7、ZXS 11 与 0 类全加器的输出函数比较,它们的本位函数相同但进位函数不同。若将带负权值的 Z 取反后代入输出函数表达式,进位函数和 0 类全加器的一致,而本位函数 就是 0 类1S全加器本位输出的反,即 。由此可见,要实现 1 类全加器的功能,带负权输入的01SZ 端须经一反相器输入到 0 类全加器与带正权输入的 X、 Y 做一位的加法,然后本位端取反输出。本位 是取反后输出,表明本位输出带负的位权值。因此,1 类全加器符号中的S大圆圈可以看成是 0 类全加器。3、2 类全加器2 类全加器有 2 个负权输入和 1 个负权的进位输出,输入和输出之间的逻辑、数值关系为:(X) (Y) Z(C
8、)S C (2 1)S2 0。当数值运算的结果为1 时,应将它变换为(1) 1,等效于 1(2 1) 12 0 211,使进位 C 保持负的位权值。X、Y、Z 的所有取值组合对应的输出结果如下:(0)(0) 0(0)00(2 1)02 0 0;(0)(0) 1(0)10(2 1)12 0 1;(0)(1) 0(1)11(2 1)12 0 1;(0)(1) 1(0)00(2 1)02 0 0;(1)(0) 0(1)11(2 1)12 0 1;(1)(0) 1(0)00(2 1)02 0 0;(1)(1) 0(1)01(2 1)02 0 2; (1)(1) 1(1)11(2 1)12 0 1;故其
9、输出函数表达式为:XZYCYS2与 0 类全加器的输出函数比较,它们的本位函数相同但进位函数不同。若将带负权值的 X 和 Y 取反后代入输出函数表达式,本位函数和 0 类全加器的一致,而进位函数 就2C是 0 类全加器进位输出的反,即 。由此可见,要实现 2 类全加器的功能,带负权02C输入的 X、 Y 端须经反相器输入到 0 类全加器内与带正权输入的 Z 做一位的加法,然后进位端取反输出。进位 是取反后输出,表明进位输出带负的位权值。2 类全加器符号中的大圆圈也可以看成是 0 类全加器。4、3 类全加器3 类全加器有 3 个负权输入和 2 个负权的本位和进位输出,输入和输出之间的逻辑、数值关
10、系为:(X) (Y ) ( Z) (C) ( S) C( 2 1)S(2 0)。X、Y、Z 的所有取值组合对应的输出结果如下:(0)(0) (0)( 0) (0)0(2 1)0(2 0) 0;(0)(0) (1)( 0) (1)0(2 1)1(2 0) 1;(0)(1) (0)( 0) (1)0(2 1)1(2 0) 1;(0)(1) (1)( 1) (0)1(2 1)0(2 0) 2;(1)(0) (0)( 0) (1)0(2 1)1(2 0) 1;(1)(0) (1)( 1) (0)1(2 1)0(2 0) 2;(1)(1) (0)( 1) (0)1(2 1)0(2 0) 2;(1)(1)
11、 (1)( 1) (1)1(2 1)1(2 0) 3;数值运算的结果0,进位 C 和本位 S 始终保持负的位权值,其输出函数表达式为:。ZXYCYS3这与 0 类全加器的输出函数表达式相同。若将带负权值的 X、 Y 和 Z 取反后代入输出函数表达式,有 和 。由此可见,要实现 3 类全加器的功能,所有带负权03S03C输入的输入端都须经反相器输入到 0 类全加器内做一位的加法,然后本位端和进位端都取反输出。进位 和本位 都是取反后输出,表明本位和进位输出都带负的位权值。3 类3C全加器符号中的大圆圈同样可以看成是 0 类全加器。由此可见,这一般化的全加器可以实现二进制数的一位加法或减法的功能。
12、表 2 列出了以上四类一般化全加器的名称和逻辑符号及所对应的操作。图 1 所示 5 位乘 5 位的直接补码阵列乘法器中用了 0 类、1 类和 2 类的全加器,应该指出,只是为了画图的方便,图中 1 类和 2 类的全加器的带负权值的输出端都省略了标示取反的小圆圈,这是需要特别注意的。在下面举例说明这 5 位乘 5 位的直接补码阵列乘法器的工作原理。三、直接补码阵列乘法器的工作原理这里分别以被乘数和乘数的正负来说明直接补码阵列乘法器的工作原理。行波进位加法器的功能还可将乘积中间的带负权值的位进行处理,使它移到最高位(p9)作为符号位。图 3 右上角用六个 0 类全加器,它的工作原理容易理解,左边用
13、六个 1 类全加器的连接的原理是:由 a4 带负权值,故 a4 b0 带负权值,需用 1 类全加器,也因本位是负权输出,故接下来也用 1 类全加器,这一列用了三个 1 类全加器。这列第 4 行因 a0 b4 也带负权值,故用 2 类全加器。其它各列如此类推。1、被乘数和乘数都为负的情况:如 1000110011,即(15) (13)。图 3 中标出了阵列乘法器在作 1000110011 乘法时各类加法器的输入端和输出端的值。左上角第一个 1 类全加器三个输入端的值分别为(1) 、 0、0,根据上述 1 类全加器的工作原理,传到这个 1 类全加器内的 0 类全加器输入端为 0、0、0,运算结果为
14、 00,那么这个 1 类全加器的进位输出为 0,本位则取反输出为(1) 。如此类推。可得阵列乘法器的输出为 0011000011。补码的二进制数的真值是:p12 712 612 112 01286421(195) 10。十进制数乘法验证:(15) (13) 1952、被乘数为正和乘数为负的情况:如 0111110111,即(15) (9)。如图 4 所示,在这里虽然 a4 0,但因它仍然带负的位权值,故仍接 1 类全加器的负权输入端。阵列乘法器输出的补码结果为:1101111001。补码的二进制数的真值是:p 1(2 9)12 812 612 512 412 312 0512256643216
15、1135十进制数乘法验证:(15) (9) 1353、被乘数为负和乘数为正的情况:如 1011101111,即(9) (15)。如图 5 所示,阵列乘法器输出的补码结果为:1101111001,与上面 2 的结果相同,演算这个例子可以加深对阵列乘法器工作原理的理解。Direct 2s complement array multiplier principle of design直接补码阵列乘法器的工作原理是计算机组成原理课程的难点。本文从组成阵列乘法器的四类全加器的工作原理分析开始,结合补码和真值的转换关系,通过和手工计算方法的对比,深入浅出地揭示了直接补码阵列乘法器的工作原理。The dir
16、ect 2s complement array multiplier principle of work is “Computer Organization Principle“ the curriculum difficulty. This article starts from the composition array multiplier four kind of full adders principle of work analyses, the union base complement and the true value transformation relations, t
17、hrough and the manual computational method contrast, have promulgated the direct 2s complement array multiplier principle of work with profundity and an easy-to-understand approach.Direct 2s complement array multiplier 直接补码阵乘法器Negative power value Negative position power value 负的位权值Generalized full adder 一般化全加器2s complement 补码原码:signed magnitude1s complement 反码Negative bit weighting factor 负的位权值