四位并行加法器的原理与实现
进位
并行进位技术的核心在于同时计算各位上的进位值,而不是等待前一位的计算结果。这样做显著提高了加法运算的速度。为了实现这一点,先引入两个关键的概念:传播进位(Pi)和生成进位(Gi)。
- 传播进位(Pi):如果第
i
位上的A和B的值不同(即一个是0,一个是1),那么第i位上就会有一个传播进位。用公式表示就是:。
P i = A i ⊕ B i P_i = A_i \oplus B_i Pi=Ai⊕Bi - 生成进位(Gi):如果第
i
位上的A和B都是1,那么第i
位上就会生成一个进位。公式表示为: G i = A i ⋅ B i G_i = A_i ⋅B_i Gi=Ai⋅Bi。
有了这两个值,我们就可以计算每一位的进位值 C i − 1 \quad C_{i-1} Ci−1,其公式为: C i = G i + P i ⋅ C i − 1 C_i = G_i + P_i ⋅C_{i-1} Ci=Gi+Pi⋅Ci−1。其中, C i − 1 C_{i-1} Ci−1是第i-1位的进位值。
本位和
本位和计算与四位计算比较简单,不需要并行,直接使用串行中的本位和计算公式即可:
S
i
=
A
i
⊕
B
i
⊕
C
i
−
1
S_i=A_i ⊕ B_i ⊕ C_{i-1}
Si=Ai⊕Bi⊕Ci−1
公式展开
对于四位并行加法器,将上述公式展开,得到详细的每一位上的运算过程(下标从1开始),其中, C 0 C_{0} C0是加法器的初始进位输入,通常为0。
-
第1位(最低位):
- S 1 = A 1 ⊕ B 1 ⊕ C 0 S_1 = A_1 \oplus B_1 \oplus C_0 S1=A1⊕B1⊕C0
- C 1 = G 1 + P 1 ⋅ C 0 C_1 = G_1 + P_1 \cdot C_0 C1=G1+P1⋅C0
-
第2位:
- S 2 = A 2 ⊕ B 2 ⊕ C 1 S_2 = A_2 \oplus B_2 \oplus C_1 S2=A2⊕B2⊕C1
- C 2 = G 2 + P 2 ⋅ C 1 = G 2 + P 2 ⋅ ( G 1 + P 1 ⋅ C 0 ) C_2 = G_2 + P_2 \cdot C1= G_2 + P_2 \cdot (G_1 + P_1 \cdot C_0) C2=G2+P2⋅C1=G2+P2⋅(G1+P1⋅C0)
-
第3位:
- S 3 = A 3 ⊕ B 3 ⊕ C 2 S_3 = A_3 \oplus B_3 \oplus C_2 S3=A3⊕B3⊕C2
- C 2 = G 3 + P 3 ⋅ C 2 = G 3 + P 3 ⋅ ( G 2 + P 2 ⋅ ( G 1 + P 1 ⋅ C 0 ) ) C_2 =G_3+P_3⋅ C_2= G_3 + P_3 \cdot (G_2 + P_2 \cdot (G_1 + P_1 \cdot C_0)) C2=G3+P3⋅C2=G3+P3⋅(G2+P2⋅(G1+P1⋅C0))
-
第4位(最高位):
- S 4 = A 4 ⊕ B 4 ⊕ C 3 S_4 = A_4 \oplus B_4 \oplus C_3 S4=A4⊕B4⊕C3
- C 4 = G 4 + P 4 ⋅ C 3 = G 4 + P 4 ⋅ ( G 3 + P 3 ⋅ ( G 2 + P 2 ⋅ ( G 1 + P 1 ⋅ C 0 ) ) ) C_4=G_4+P_4⋅C_3 = G_4 + P_4 \cdot (G_3 + P_3 \cdot (G_2 + P_2 \cdot (G_1 + P_1 \cdot C_0))) C4=G4+P4⋅C3=G4+P4⋅(G3+P3⋅(G2+P2⋅(G1+P1⋅C0)))
整体最后的进位传播公式
整体的传播位和生成位分别为:
- P ∗ = P 4 ⋅ P 3 ⋅ P 2 ⋅ P 1 P^* = P_4 \cdot P_3 \cdot P_2 \cdot P_1 P∗=P4⋅P3⋅P2⋅P1
- G ∗ = G 4 + P 4 ⋅ ( G 3 + P 3 ⋅ ( G 2 + P 2 ⋅ G 1 ) ) G^* = G_4 + P_4 \cdot (G_3 + P_3 \cdot (G_2 + P_2 \cdot G_1)) G∗=G4+P4⋅(G3+P3⋅(G2+P2⋅G1))
最终的进位输出为:
- C 5 = G ∗ + P ∗ ⋅ C 1 C_5 = G^* + P^* \cdot C_1 C5=G∗+P∗⋅C1