进位问题与全加器

为解决进位问题, 改进了一位加法器的原型, 综合进位及显示的需要, 那么, 一个具有普遍性的一位加法器至少要三个输入, 其中有一个进位输入(Carry In); 以及两个输出(其中, CO 指 Carry out, 进位输出):

全加器

这样的一个东西, 我们称之为 全加器(Full Adder,FA).

内置的全加器

显然, 全加器比半加器更为完善, 它才是多位加法器里头能独立承担一位加法任务的那个部件.

模拟器里也直接内置了全加器这个组件, 通过 菜单--绘制--数字芯片--添加加法器 可以添加全加器:

circuitjs 全加器

注意, 新版本中, 默认添加的是四位的加法器, 你需要编辑其 #的位 属性, 将默认值从 4 改为 1, 即可获得 1 位的加法器, 也即是全加器.

另外, 它的引脚的名称及位置与我们给出的原型稍有不同, 但核心还是一样的.

它把 进位输入 叫成了 Cin, 进位输出则还是 C

此外, A, B, S 还分别加了数字编号

全加器构建的多位加法器

在先前, 当尝试用多个 半加器 去构建多位加法器时, 碰到了问题, 3+1=2:

两位加法器, 错误情况, 11+01

现在, 把半加器改为全加器, 并把低位的进位输出接入它紧邻的下一个高位的进位输入上, 情况就 OK 了:

两位加法器, 使用全加器

可以看到, 现在情况 OK 了, 3+1=4.

另: 这里和最终是三位, 包括进位也用上了.

当两个加数都是两位时, 和就要三位了. 正如前面, 两个一位的加数, 和就有两位那样.

走线稍显凌乱, 注意有黑色小圆点的才是相互连接的, 没有的则单纯是导线互相交叉但没有连接.

现在的问题是, 怎么去构建一个全加器呢? 或者说这个内置的全加器组件, 它的内部结构到底是怎样的呢? 虽然模拟器内置了全加器, 我们直接就可以拿来用, 但若是不能明白它内部的结构, 我们恐怕还是不能放心的.

在下一篇章中, 再来探讨这个实现问题.

results matching ""

    No results matching ""