四位加法器

一个四位加法器的原型如下:

四位加法器, 实例

相对于两位的加法器, 两个输入和输出都扩展为了 4 位:

  • 两个四位的输入 A3, A2, A1, A0B3, B2, B1, B0;
  • 一个进位输入 Cin(Carry in);
  • 一个两位的输出 S3, S2, S1, S0;
  • 一个进位的输出, C(Carry out).

    注: 这里直接用的就是系统自带的4位加法器的原型.

直接由全加器去构建

四位加法器的构建有几种方式. 一种还是直接从四个全加器开始构建:

四位加法器, 四个全加器

具体 创建子电路 过程此处从略, 读者可以自行实验.

另: 此处使用的二极管是为了规避模拟器实现上的缺陷. 下同.

通过两位加法器去构建

除了直接使用多个全加器的方式, 考虑到先前已经有了两位加法器, 也可以以它为基础去构建, 其效果如下:

四位加法器, 两个两位加法器

左边的模块处理高两位, 右边的模块处理低两位. 可以说, 相对而言更加简单了些. 归根结底, 都是用了全加器.

最后, 仍旧是利用前面说到的 创建子电路 的方式标识出各个节点名称

四位加法器, 输入与输出标识

然后创建子电路, 最后添加子电路实例:

四位加法器, 实例

也即是最开头处看到的原型.

配合上显示等模块, 可以说, 现在 LED 数码管的能力终于可以得到充分的发挥了. 现在的电路也不再是只能做 1 + 1 = 2 之类的了.

下图演示了 4 + 5 的情形:

四位加法器, 计算演示 4 + 5

事实上, 扩展到了多位加数后, 又不得不面对新的显示问题.

比如, 假如执行 5 + 5, 那么结果是 10, 输出展示处首先就需要两个 LED 了.

此外, 还面临着如何把二进制的输出切割成两段十进制输出的问题等.

注: 目前的 LED 译码显示支持 16 进制, 对于 5 + 5, 它会显示一个类似 A 字母的图案, 因为在 16 进制中, A 代表 10.

四位加法器, 计算演示 5 + 5

而且, 如果我们愿意的话, 还可以继续拓展为 8 位, 乃至 16 位, 如此一来, 能加的数就很大了.

输入的问题

不过, 尽管能加比较大的数了, 但当位数拓展之后的面临的另一个问题是输入的便利性.

现在依然是使用 逻辑输入 开关以二进制的方式给出要加的两个数. 如果我们把这个多位加法器提供给用户, 说它能帮助你做加法, 但你首先得把要加的两个十进制数转换为二进制数.

那么用户可能就不乐意使用了, 而且他们不一定知道怎么转换这个进制. 必须给用户一个便利的方式指定要加的数, 在下一章节, 我们再来具体讨论这个问题及其解决方案.

results matching ""

    No results matching ""