全加器的核心是考虑了进位(被记为 Cin)。对于某一位来说,我们除了考虑两个加数的对应位数 a 和 b,还要考虑是否有前一位传来的进位信息。因此,我们的输入就有三个数:a,b,Cin。我们需要构建这三个数到输出 sum 和 Cout 的逻辑运算。
运行逻辑
Cout: a、b、Cin 之中至少两个为高电平时,输出高电平。此时我们对输入两两取逻辑与,如果 a、b、Cin 之中至少有两个高电平,那么三个逻辑与的输出也至少有一个为高电平,对逻辑与的三个输出取逻辑或即可。sum: a、b、Cin 之中仅有一个或全部为高电平时,输出高电平。将 a、b、Cin 输入一个三输入异或门即可。(注意!Logisim中的“三输入异或门”有不同的定义方式)关于“三输入的异或门”的两种定义方式:
你可以仔细思考一下这两种定义方式的异同,然后想一想,我们的全加器应该使用哪种定义方式。

刚才,我们设计了一位的全加器。这种全加器引入了 Cin 和 Cout 的概念,可以很方便的扩展到多位全加器,从而实现我们常规认知意义上的加法运算。
现在,我们尝试将 1-Bit 的全加器扩展到四位:对于每一位我们都需要构建包含三输入 A、B、Cin,两输出 Sum 和 Cout 的全加器。然后将四个全加器连接起来,使得每一个全加器的 Cout 都连接到下一个全加器的 Cin 上。
在全加器的实现中,我们忽略可能出现的“多”的一位(称之为“溢出”位),这个值体现为全加器模块 Cout 的值,例如:
0b1111(15) + 0b1111(15) = 0b11110(30)
(Cout)1 (其他部分)11101110 部分即可。所谓“补码”,是指在二进制数的表示中,用一种特殊的方式表示负数:
0101。0101,取反得到 1010,加1得到 1011。在数字电路中,如果我们使用补码实现数字的表示,则“对一个数取负数”的操作是非常简单的。
使用了 Cin 和 Cout 结构的全加器可以很方便的实现减法:
Cin 接到常数 1 上(表示 +1)B 取反我们就得到了一个减法器。事实上,这个减法器所计算的结果就是
Cout 的输出。七段 LED 数码管是一种常用的显示元件,常应用于手表、计算器等仪器中,用于显示数值。
数码管分为共阴极和共阳极两种类型:
这里的 LED 是共阴极 LED。

右图为数码管显示的数字 0~9 及十六进制的 a~f 的显示方式。
可以看到,每一个数字或字母都可以用七个二进制位表示,每一个二进制位对应数码管的一个引脚。我们所要做的就是将输入的数字或字母转换为七个二进制位,然后输出到数码管的引脚上。


我们将以1号管为例讲解。观察.circ文件:
既然只研究1号管,我们只需要关心: 四位输入是如何决定Disp1的高低电平的?

在 4-1 选择器中,我们已经熟悉了两位二进制输入表示一位四进制的想法,这里我们用分线器将输入拆分为独立的四个二进制输入 A、B、C、D。

你的工作流程应该是:。
真值表

2 3 4 5 6 8 9 A B d E F