基础数字电子学/数字加法器
当添加 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 门构造,如下所示
以上情况只是没有进位时的特例。如果有进位,那么
输入 输出 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
可以使用两个半加器构造一个全加器,将A 和B 连接到一个半加器的输入,将来自该半加器的和连接到第二个加器的输入,将Ci 连接到另一个输入,并将两个进位输出进行或运算。等效地,S 可以是A、B 和Ci 的三位异或,而Co 可以是A、B 和Ci 的三位多数函数。
可以使用多个全加器创建逻辑电路来添加N 位数字。每个全加器的输入都是一个Cin,它是前一个加器的Cout。这种加法器是行波进位加法器,因为每个进位位都“行波”到下一个全加器。注意,第一个(也是唯一第一个)全加器可以用半加器代替。
行波进位加法器的布局很简单,这使得设计时间很短;然而,行波进位加法器速度相对较慢,因为每个全加器必须等待从前一个全加器计算出来的进位位。门延迟可以通过检查全加器电路轻松计算出来。每个全加器需要三级逻辑。在 32 位[行波]加法器中,有 32 个全加器,因此关键路径(最坏情况)延迟为 门延迟。
为了减少计算时间,工程师设计了更快的二进制数加法方法,使用超前进位加法器。它们通过为每个比特位置创建两个信号(P 和 G)来工作,这些信号基于进位是否从较低有效位位置传递(至少一个输入是 '1')、该比特位置是否生成进位(两个输入都是 '1')、或者该比特位置是否抑制进位(两个输入都是 '0')。在大多数情况下,P 仅仅是半加器的和输出,而 G 是同一个加法的进位输出。在生成 P 和 G 之后,会创建每个比特位置的进位。一些先进的超前进位架构包括 曼彻斯特进位链、布伦特-孔加法器 和 科格-斯通加法器。
一些其他的多位加法器架构将加法器分解成块。可以根据电路的传播延迟调整这些块的长度,以优化计算时间。这些基于块的加法器包括进位旁路加法器,它将为每个块而不是每个比特确定 P 和 G 值,以及 进位选择加法器,它会预先生成块的两种可能的进位输入的和和进位值。
其他加法器设计包括 条件和加法器、进位跳跃加法器 和 进位完成加法器。
通过组合多个超前进位加法器,可以创建更大的加法器。这可以在多个层级上使用,以创建更大的加法器。例如,以下加法器是一个 64 位加法器,它使用四个 16 位 CLA 和两级 LCU。