跳转到内容

基础数字电子学/数字加法器

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

半加器

[编辑 | 编辑源代码]

当添加 2 个数字时,我们将得到一个和和一个进位。假设第一个数字是 A,第二个数字是 B,那么 A + B 将产生一个和 S 和一个进位 C

0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

从上面可以看出,在逻辑门方面,AND 门会产生两个输入的和。逻辑门 XOR 门会产生进位。

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

Half adder circuit diagram

全加器

[编辑 | 编辑源代码]

以上情况只是没有进位时的特例。如果有进位,那么

输入 输出
0 0 0 0 0
0 1 0 0 1
1 0 0 0 1
1 1 0 1 0
0 0 1 0 1
0 1 1 1 0
1 0 1 1 0
1 1 1 1 1

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

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

多位加法器

[编辑 | 编辑源代码]

行波进位加法器

[编辑 | 编辑源代码]

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

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

进位超前加法器

[编辑 | 编辑源代码]

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

带超前进位的 4 位加法器

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

其他加法器设计包括 条件和加法器进位跳跃加法器进位完成加法器

超前进位单元

[编辑 | 编辑源代码]

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

一个 64 位加法器

参考文献

[编辑 | 编辑源代码]
  1. 维基百科上的数字加法器
华夏公益教科书