跳转到内容

数字电子学/数字加法器

来自维基教科书,开放书籍,开放世界

数字加法器

[编辑 | 编辑源代码]

数字加法器是一种能够添加两个数字 n 位二进制数的数字设备,其中 n 取决于电路的实现方式。数字加法器将两个二进制数 A 和 B 相加,以产生一个和 S 和一个进位 C。

半加器

[编辑 | 编辑源代码]

半加器是一种数字设备,用于添加两个二进制位 0 和 1。半加器输出两个输入的和以及一个进位值。

0 + 0 = 和 0 进位 0
0 + 1 = 和 1 进位 0
1 + 0 = 和 1 进位 0
1 + 1 = 和 0 进位 1

真值表如下

[编辑 | 编辑源代码]
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
              ___________
     A ------|           |
             |   Half    |----- |
             |   Adder   |
             |           |----- 
     B ------|___________|


半加器可以使用 AND 门和 XOR 门来构建,如下所示

Half adder circuit diagram

全加器

[编辑 | 编辑源代码]

全加器是一种逻辑电路,它对三个一位二进制数执行加法运算。全加器产生三个输入的和以及进位值。它可以与其他全加器组合(见下文)或独立工作。

真值表

A B Cin Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Full adder circuit diagram Inputs: {A, B, CarryIn} → Outputs: {Sum, CarryOut}
Schematic symbol for a 1-bit full adder

注意,进位输出前的最终 OR 门可以用 XOR 门替换,而不会改变结果逻辑。这是因为 OR 门和 XOR 门之间的唯一区别仅在两个输入都为 1 时才会出现;对于这里所示的加法器,这是不可能的。如果希望直接使用常见的 IC 芯片实现加法器,使用两种类型的门很方便。

全加器可以使用两个半加器来构建,将AB 连接到一个半加器的输入,将该半加器的和连接到第二个加法器的输入,将Ci 连接到另一个输入,并将两个进位输出进行 OR 运算。等效地,S 可以是ABCi 的三位 XOR,Co 可以是ABCi 的三位 多数函数

多位加法器

[编辑 | 编辑源代码]

行波进位加法器

[编辑 | 编辑源代码]

可以使用多个全加器创建一个逻辑电路来添加N 位数。每个全加器输入一个Cin,它是前一个加法器的Cout。这种加法器被称为行波进位加法器,因为每个进位位都“行波”到下一个全加器。注意,第一个(也是唯一的第一个)全加器可以用半加器代替。

行波进位加法器的布局很简单,这允许快速设计时间;然而,行波进位加法器比较慢,因为每个全加器必须等待来自前一个全加器的进位位被计算出来。门延迟可以通过检查全加器电路很容易地计算出来。每个全加器需要三个逻辑级。在 32 位 [行波进位] 加法器中,有 32 个全加器,因此关键路径(最坏情况)延迟为 门延迟。

先行进位加法器

[编辑 | 编辑源代码]

为了减少计算时间,工程师们设计了更快的二进制数加法方法,使用**超前进位加法器**。超前进位加法器通过为每个比特位创建两个信号(*P* 和 *G*)来工作,这两个信号基于以下情况:进位是否从低位传播过来(至少一个输入为 '1'),该位是否产生进位(两个输入都为 '1'),或者该位是否抑制进位(两个输入都为 '0')。在大多数情况下,*P* 只是半加器的求和输出,而 *G* 是同一个加器的进位输出。在生成 *P* 和 *G* 之后,就可以创建每个比特位的进位。一些先进的超前进位架构包括**曼彻斯特进位链**、**布伦特-孔加法器**和**科格-斯通加法器**。

带超前进位的 4 位加法器

其他一些多比特加法器架构将加法器分解成多个块。可以根据电路的传播延迟来改变这些块的长度,以优化计算时间。这些基于块的加法器包括**进位旁路加法器**,它将为每个块而不是每个比特确定 *P* 和 *G* 值,以及**进位选择加法器**,它预先生成每个块的两个可能的进位输入的和与进位值。

其他加法器设计包括**条件求和加法器**、**进位跳跃加法器**和**进位完全加法器**。

超前进位单元

[edit | edit source]

通过组合多个超前进位加法器,可以创建更大的加法器。这可以在多个级别上使用,以创建更大的加法器。例如,以下加法器是一个 32 位加法器,它使用四个 8 位 CLA 和两级 LCU。

文件:32-bit lookahead carry unit.svg
一个 64 位加法器

参考资料

[edit | edit source]
  1. 维基百科上的数字加法器
华夏公益教科书