学习目标
- 使用一级半加器和一个全加器门网络将两个 2 位操作数相加。
- 追踪 C0 从最低有效位进入最高有效位级的路径。
- 解读 A、B 和 3 位结果数字显示器。
- 将每个可见的异或门、与门和或门对应到加法器方程。
- 识别定义行波进位加法的串行进位通路。
工作原理
实际电路将两个 2 位无符号操作数 A1A0 和 B1B0 相加,并在数字显示器上呈现 3 位结果。另有两个数字显示器分别反映操作数 A 和 B。算术运算由独立的异或门、与门和或门实现,而非封装式加法器元件。
第 0 位为半加器:
- S0 = A0 ⊕ B0
- C0 = A0 · B0
第 1 位为全加器网络:
- S1 = A1 ⊕ B1 ⊕ C0
- Cout = A1B1 + C0(A1 ⊕ B1)
结果显示器的第 0 位接收 S0,第 1 位接收 S1,第 2 位接收 Cout。最大输入情况为 11 + 11 = 110,即 3 + 3 = 6。
由于 C0 送入第 1 位网络,进位通路是串行的。这是行波进位加法器的定义性特征,也是字宽增大后需要采用更快进位体系结构的原因。
真值表
从 16 种可能的输入组合中选取六个代表性行,展示无进位、局部进位、传播进位及最大和。
| 输入 | 输出 | ||||||
|---|---|---|---|---|---|---|---|
| A1 | A0 | B1 | B0 | Cout | S1 | S0 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 + 00 = 000;无进位 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 01 + 01 = 010;第 0 位产生 C0 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 10 + 01 = 011;无最终进位 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 | 11 + 01 = 100;进位传播通过第 1 位 |
| 1 | 0 | 1 | 0 | 1 | 0 | 0 | 10 + 10 = 100;第 1 位产生 Cout |
| 1 | 1 | 1 | 1 | 1 | 1 | 0 | 11 + 11 = 110;2 位无符号数的最大和 |
布尔表达式
第 0 位为半加器:异或产生 S0,逻辑与产生进位 C0。
第 1 位将 A1、B1 与 C0 相加;其中两个异或门产生 S1。
第 1 位的两个进位项执行逻辑或后产生 Cout,并驱动结果显示器的第 2 位。
逐步尝试
在上方嵌入式电路中设置输入,然后阅读预期结果并验证。
- 1A0 = 1A1 = 0B0 = 1B1 = 0预期:
Cout S1 S0 = 010(十进制 2)观察结果: 01 + 01 得到 010。第 0 位与门产生 C0,并使 S1 置 1。 - 2A0 = 0A1 = 1B0 = 0B1 = 1预期:
Cout S1 S0 = 100(十进制 4)观察结果: 10 + 10 得到 100。第 1 位的操作数直接产生 Cout。 - 3A0 = 1A1 = 1B0 = 1B1 = 0预期:
Cout S1 S0 = 100(十进制 4)观察结果: 11 + 01 得到 100。源自第 0 位的进位经过第 1 位网络传播至 Cout。 - 4A0 = 1A1 = 1B0 = 1B1 = 1预期:
Cout S1 S0 = 110(十进制 6)观察结果: 11 + 11 得到 110,这是两个 2 位无符号操作数相加的最大结果。
所用元件
实际应用
小型算术数据通路。 紧凑型计数器、地址生成器和控制数据通路使用相同方程实现无符号加法。
ALU(算术逻辑单元) 教学与验证。 门级视图可呈现封装式全加器单元通常隐藏的求和项与进位项。
更宽的行波进位加法器。 当面积和实现简洁性比最低延迟更重要时,可增加全加器级,将同一结构扩展至更大字宽。
FPGA(现场可编程门阵列) 与 ASIC(专用集成电路) 综合。 描述加法的硬件描述代码会被映射至目标专用进位资源或标准单元,同时保持相同的算术行为。
常见问题
为什么第 0 位使用半加器?
该电路的第 0 位以下不存在进位输入,因此其第三个输入将固定为 0。一个异或门和一个与门即可实现所需的半加器功能。第 1 位会接收 C0,因而需要完整的全加器网络。
如何将该电路扩展至 4 位?
为每个新增位添加一个全加器门网络,将各级进位输出连接至下一级进位输入,并将最终进位送至新的最高有效结果位。
该电路的关键路径是什么?
该 2 位原理图中最长的结构路径从第 0 位与门产生的进位开始,依次经过第 1 位与门和最终或门。实际时间延迟取决于所选门电路、负载、电压和制造工艺;逻辑仿真器不会指定通用的纳秒数值。
该电路能否直接执行减法?
补码减法使用 A + ¬B + 1。该原理图的第 0 位没有可控进位输入,因此若要支持减法,必须增加这一输入(通常将第 0 位半加器替换为全加器级),并对 B 进行条件取反。
该电路与超前进位加法器有何不同?
这是行波进位实现,C0 必须传播至下一级。超前进位及相关体系结构并行求取进位信息;随着字宽及定时压力增大,这些结构更具优势,但代价是增加逻辑与布线。