第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

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Logisim搭建一个8位加法器,需要使用8个全加器。全加器是一种电路,可以将两个二进制数相加并输出它们的和。每个全加器有三个输入:两个二进制数位和一个进位位。它们的输出是一个二进制数位和一个进位位。将多个全加器连接在一起,可以实现更大的二进制数的加法。 以下是搭建8位加法器的步骤: 1. 打开Logisim并创建一个新的电路。 2. 从左侧工具栏中选择“基本门”选项卡,并将8个全加器拖到电路中。 3. 将全加器连接起来。将第一个全加器的A输入连接到第一个二进制数的最低位,将第一个全加器的B输入连接到第二个二进制数的最低位。将第一个全加器的进位输入连接到电路的电源(VCC)。将第一个全加器的和输出连接到第一个七段数码管的最低位。 4. 将第二个全加器的A输入连接到第一个全加器的进位输出,将第二个全加器的B输入连接到第三个二进制数的最低位。将第二个全加器的和输出连接到第二个七段数码管的最低位。 5. 重复步骤4,将所有的全加器连接起来,直到第八个全加器的和输出连接到第八个七段数码管的最高位。 6. 将所有的进位输出连接到下一个全加器的进位输入,除了最后一个全加器的进位输出不需要连接。 7. 将所有的二进制数输入连接到电路的开关或者输入端口。 8. 将所有的七段数码管连接到电路的输出端口。 9. 保存并模拟电路,测试它是否可以正确地将两个8位二进制数相加。 ```logisim // Logisim代码块 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值