半加器和全加器
目录
1. 核心概念
2. 半加器 (Half Adder - HA)
2.1 功能和输入输出
2.2 真值表
2.3 逻辑公式 (布尔表达式)
2.4 逻辑电路结构
3. 全加器 (Full Adder - FA)
3.1 功能和输入输出
3.2 真值表
3.3 逻辑公式 (布尔表达式)
3.4 逻辑电路结构:
4. 总结对比
我们在这一章来讲解一下加法器的最基础的两个,分别是 半加器 (Half Adder) 和 全加器 (Full Adder) 。它们是构成加法器的基础单元。
1. 核心概念
目的: 执行二进制加法运算。
输入: 二进制位(0 或 1)。
输出: 两个二进制位:和 (,
) 和 进位 (
,
)。
区别:
半加器: 只能加两个输入位(被加数 和加数
)。它不考虑来自更低有效位的进位输入。
全加器: 可以加三个输入位(被加数 、加数
和 来自低位的进位输入
)。它能够处理多位数相加时产生的进位链。
2. 半加器 (Half Adder - HA)
2.1 功能和输入输出
计算两个单个二进制位( 和
)相加的结果。有两个输入位分别是被加数位
(Augend bit) 和加数位
(Addend bit); 有两个输出位分别是和位
(Sum bit)和进位输出位
(Carry-out bit),
表示
的本位结果(不考虑进位输入),
表示
产生的进位。
2.2 真值表
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
2.3 逻辑公式 (布尔表达式)
- 和 (
):
解释:当 和
不同时,和为 1;相同时,和为 0。这正好是异或门 (XOR) 的功能。
- 进位 (
):
解释:只有当 和
都为 1 时,才会产生进位。这正好是与门 (AND) 的功能。
2.4 逻辑电路结构
- 最简单的实现方式:
使用一个 异或门 (XOR Gate) 计算 。
使用一个 与门 (AND Gate) 计算 。
- 结构图:
3. 全加器 (Full Adder - FA)
3.1 功能和输入输出
计算三个单个二进制位(、
和来自低位的进位输入
)相加的结果。三个输入位分别是被加数位
(Augend bit)、加数位
(Addend bit)和来自相邻低位进位输入位
(Carry-in bit); 有两个输出位分别是和位
(Sum bit)和进位输出位
(Carry-out bit),
表示
的本位结果(考虑进位输入),
表示
产生的进位。
3.2 真值表
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.3 逻辑公式 (布尔表达式)
-
和 (
):
解释:当输入位中有奇数个 1 时,和为 1。三个输入位的异或操作正好实现这个功能。
-
进位 (
):
解释: 产生进位只有两种情况:
1.
: 和
都为 1(无论 Cin 是 0 还是 1,都会产生进位)。
2.
: 为 1,并且
和
中恰好有一个为 1(此时低位有进位传上来,且 A 和 B 相加的和为 1,导致本位向更高位产生进位)。
推导视角:
。这个公式更直观地说明了只要任意两个输入位为 1,就会产生进位。通过布尔代数可以证明这两个公式是等价的(通常使用第一个公式实现,因为它可以利用计算 时产生的中间信号
)。
3.4 逻辑电路结构:
- 使用两个半加器和一个或门实现 (最常用):
第一个半加器 (HA1) 计算 ,得到和
和进位
; 第二个半加器 (HA2) 计算
,得到最终的和
和进位
; 最终进位
是
或
的结果
,因为如果
本身产生了进位 (
),或者
的和 (
) 加上
产生了进位 (
),都会导致向更高位进位。结构图 (基于两个半加器):
- 直接实现 (使用基本门):
使用两个 异或门 (XOR Gate) 计算 ; 使用两个 与门 (AND Gate) 和一个 或门 (OR Gate) 计算
结构图 (直接实现):;
4. 总结对比
特性 | 半加器 (HA) | 全加器 (FA) |
---|---|---|
输入数量 | ||
处理进位 | 不能处理来自低位的进位 (Cin=0) | 能处理来自低位的进位 (Cin) |
和输出 ( | ||
进位输出 ( |
| |
核心应用 | 最低有效位 (LSB) 的加法 | 除最低有效位外的所有位加法 (级联构成加法器) |
实现基础 | 一个 XOR 门 + 一个 AND 门 | 两个 HA + 一个 OR 门 或 两个 XOR + 两个 AND + 一个 OR 门 |
关键点: 全加器是构建多位加法器(如行波进位加法器 Ripple Carry Adder、超前进位加法器 Carry Lookahead Adder)的基础模块。最低位(LSB)因为没有来自更低位的进位输入,通常可以直接使用一个半加器(或者将全加器的 接地设置为 0)。其他所有位都需要使用全加器来处理来自低位的进位输入
并产生进位输出
给更高位。