第2.5章 使用门电路搭建加法器

一,半加器

有了异或门,很容易设计出加法器(半加器)。
输入为A和B,输出为S(和)和C(进位标志)。


S= A B,即输出和为输入的异或;
C=A+B,输入都为1时,结果有进位。

二,全加器

要考虑到低位的进位,一个完整的一位全加器的输入应该有3个,即A、B、CI(进位输入)。
输出的结果相当于是三个一位数相加,最终结果只可能是 十进制的0~3,即二进制的00,01,10,11。可以用两个位来表示:结果位S和进位位CO。

加法的 输出进位CO:三个输入中如果有2个或者3个为1,则结果为1.(如果有2个或者以上为0,则结果为0.)
CO=AB+BC+AC+ABC,化简后为:CO=AB+BC+CA。
这个逻辑相当于是个 三位的表决器,计算结果取决于多数的情况。

三位输入表决器

在LogiSim中的画出相应的电路:
并编辑其外观图,以便于以后将其作为一个独立的单元电路来使用:Project->Edit Circuit Appearance:

调整后的外观图为:

三位输入异或门

加法的 结果S:是三个输入位的异或,即S=A B CI。
可以使用2个二输入异或门构造一个三输入异或门电路。

也可以使用库中的元件。
注意:不能直接使用元件库中的异或门。多路输入的异或门电路,默认状态下不是对每一路输入进行异或操作。
测试电路及结果如下:
对此,LogiSim的解释是:

Note: Many authorities contend that the shaped XOR gate's behavior should correspond to the odd parity gate, but there is not agreement on this point. Logisim's default behavior for XOR gates is based on the IEEE 91 standard. It is also consistent with the intuitive meaning underlying the term exclusive or: A waiter asking whether you want a side dish of mashed potatoes, carrots, peas, or cole slaw will only accept one choice, not three, whatever some authorities may tell you. (I must admit, though, that I have not subjected this statement to a rigorous test.) You can configure the XOR and XNOR gates to use parity by changing its Multiple-Input Behavior attribute.

意思是说,如果要变成对输入的每一位分别进行异或(等同于“奇校验”),可以改变“多路输入行为”属性:

一位全加器

现在,利用三位输入表决器得到进位位,利用三输入异或门得到结果位,可以设计出一位全加器:


编辑外观,以便用于构造多位全加器:

四位全加器

现在,可以使用4个一位全加器来构建1个四位全加器。这里最低的进位位设置为0。


5+7=12=0xC

再来测试一下有进位的情况:
可以看到,8+9=17=0x11,最终的进位位“亮”了,结果位为1.

同理,可以继续扩展到8位、16位、甚至32位的加法器。


八位加法器

在已经理解了加法器的原理后,将不再使用最基本的门电路来搭建加法器了,现在改用库中的元件“Adder”。

元件符号:

元件说明:
左边的两个为加法器的输入,可以选择输入位数:1~32位。上面的为进位输入;下面的是进位输出。


演示一个8位加法器:

有进位的情况如下:

0xAA + 0xBB = 0x165

猜你喜欢

转载自blog.csdn.net/booksyhay/article/details/80709192