【Logisim】半加器、全加器与 8 位加法器的详细教程
1. 引言
Logisim 是一款开源的数字电路仿真与设计工具,非常适合用于学习计算机组成原理、数字逻辑等课程。本教程将教你使用 Logisim 设计三种加法器组件:半加器、全加器和8 位加法器。每种组件的教程都将包含三个核心部分:真值表、逻辑化简和Logisim 原理图实现。通过本教程,你将掌握从逻辑分析到电路实现的全过程。
在原理图部分,将使用Logisim Evolution 3.9.0和Logisim 2.7.1两个版本演示。
2. 半加器(HalfAdder)
2.1 真值表
半加器用于计算两个一位二进制数的和,并产生一个进位。它有两个输入(A 和 B)和两个输出(Sum 和 Carry)。
| A | B | Sum(和) | Carry(进位) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
2.2 逻辑化简
根据真值表,我们可以写出 Sum 和 Carry 的逻辑表达式:
- Sum = A ⊕ B(异或)
- Carry = A · B(与)
2.3 Logisim 原理图实现
在 Logisim 中实现半加器的步骤如下:
- 打开 Logisim,点击左上角绿色加号,新建一个电路(Adder circuit),命名为“HalfAdder”。
- 从左侧工具栏“逻辑门(Gates)” 库(或顶部工具栏)中拖入一个“异或门(XOR Gate)”和一个“与门(AND Gate)”。
- 若两个门的输入引脚数量不为2,可单击该部件,在左下角属性卡片更改:
- 从“线路(Wiring)” 库(或顶部工具栏)中拖入两个“输入引脚(Pin)”,分别命名(原版在属性卡片的“标签”栏命名,Evolution版可双击该引脚命名)为“A”和“B”。
- 从“线路(Wiring)” 库(或顶部工具栏)中拖入两个“输出引脚”,分别命名为“Sum”和“Carry”。
- 使用“导线(Wire)”连接电路:
- 将A和B连接到异或门的两个输入端,异或门的输出端连接到Sum 引脚。
- 将A和B连接到与门的两个输入端,与门的输出端连接到Carry 引脚。
- 完成后的半加器原理图如下:
Logisim Evolution:
Logisim:
3. 全加器(FullAdder)
3.1 真值表
全加器在计算两个一位二进制数的和时,还会考虑来自低位的进位(Cin)。它有三个输入(A、B、Cin)和两个输出(Sum、Cout)。
| A | B | Cin(低位进位) | Sum(和) | Cout(进位) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
3.2 逻辑化简
根据真值表,我们可以写出 Sum 和 Cout 的逻辑表达式:
- Sum = A ⊕ B ⊕ Cin
- Cout = C1 + C2 = A ⋅ B + ( A ⊕ B ) ⋅ Cin
3.3 Logisim 原理图实现
在 Logisim 中实现全加器的步骤如下:
- 新建一个电路,命名为“FullAdder”。
- 使用两个半加器和一个或门构建全加器是一种经典方法:
- 第一个半加器计算 A 和 B 的和(S1)与进位(C1)。
- 第二个半加器计算 S1 和 Cin 的和(即最终的 Sum)与进位(C2)。
- 最终的进位Cout = C1 + C2(使用一个或门)。
- 具体操作:
- 拖入三个输入引脚,命名为“A”、“B”、“Cin”。
- 拖入两个输出引脚,命名为“Sum”、“Cout”。
- 法1:从“逻辑门(Gates)” 库拖入两个“异或门(XOR Gate)”、“与门(AND Gate)”和一个“或门(OR Gate)”。
法2:你也可以直接拖拽使用之前创建的 “HalfAdder” 子电路来简化布线。 - 按上述逻辑连接导线。
- 完成后的全加器原理图如下:
Logisim Evolution:
Logisim:
4. 8 位加法器(BitAdder_8)
4.1 真值表
8 位加法器由8 个全加器级联构成,每一位处理一个二进制位。由于规模较大,我们通常不为其绘制完整的真值表(2^9=512 行),而是基于全加器的逻辑进行构建。
其核心逻辑是:将8 个全加器串联,低位全加器的 Cout连接到相邻高位全加器的 Cin。第一个全加器的 Cin 通常接地(为0)或作为整个加法器的进位输入。
4.2 逻辑化简
Sum[i] = A[i] ⊕ B[i] ⊕ C[i]
C[i+1] = A[i] ⋅ B[i] + ( A[i] ⊕ B[i] ) ⋅ C[i]
其中C[0]=Cin=0,C[7]=Cout,循环代入即可得到所有输出。
4.2 Logisim 原理图实现
在 Logisim 中构建 8 位加法器的步骤如下:
- 新建一个电路,命名为“BitAdder_8”。
- 拖入16 个1 位输入引脚,分别命名为“A0”~“A7”和“B0”~“B7”(或2 个8 位输入引脚,左下角属性卡片设置数据位宽为 8,分别命名为“A7_0”和“B7_0”)。
- 拖入1个1 位输入引脚,命名为“Cin”,作为整个加法器的低位进位输入。
- 拖入8 个1 位输出引脚,分别命名为“S0~S7”(或1 个8 位输出引脚,数据位宽为 8,命名为“S7_0”),用于输出和。
- 拖入1 个1 位输出引脚,命名为“Cout”,用于输出最高位的进位。
- 法1:使用8 个之前创建的“FullAdder” 子电路组成 8 位加法器。
法2:从“运算器(Arithmetic)” 库中直接找到“加法器(Adder)”组件,把1 个加法器拖入画布,将其位宽设置为 8(内置加法器通常已默认为 8 位,不用额外调整)。这是 Logisim 内置的加法器,内部已实现全加器级联逻辑。 - 按上述逻辑连接导线,完成后的 8 位加法器原理图如下:
Logisim Evolution:
Logisim:
*注:如果出现连线正确却不知道什么原因报错,保存后重新打开即可。
5. 总结
本教程详细介绍了使用 Logisim 设计半加器、全加器和 8 位加法器的完整流程,涵盖了从真值表分析、逻辑化简到原理图实现的每一步。掌握这些基础组件的设计,是理解更复杂算术逻辑单元(ALU)和 CPU 数据通路的关键。建议读者在 Logisim 中亲手搭建并测试每个电路,以巩固学习成果。
