大位宽超前进位加法器的实现

大位宽超前进位加法器

无疑就是位数较多时的超前进位加法器,是用超前进位加法器实现的。

1. 串行进位加法器

  • 半加器:不包含进位的加法器,需要两个门实现。
    大位宽超前进位加法器的实现
    S=XYS = X \oplus YC=XYC = X \land Y
  • 全加器:包含进位的加法器,需要五个门实现。
    大位宽超前进位加法器的实现
    S=abcinS = a \oplus b \oplus c_{in}C=ab+acin+bcinC=ab+(ab)cinC = a \land b + a \land c_{in} + b \land c_{in}或C = a \land b + (a \oplus b) \land c_{in}
  • 串行进位加法器使用全加器实现的,由NN个一位加法器串联而成,第ii级的用来产生第i+1i + 1级的进位。但是这种结构的特点是结构直观简单,运行速度慢,最坏情形下关键路径的延时较长。
    大位宽超前进位加法器的实现
    串行进位加法器的延时:T=TFA(x,ycout)+(k2)TFA(cincout)+TFA(cins)T = T_{FA}(x,y-c_{out}) +(k-2)*T_{FA}(c_{in}-c_{out}) + T_{FA}(c_{in}-s)
    大位宽超前进位加法器的实现

2. 超前进位加法器

超前进位加法器就是利用进位产生项进位传播项实现的,改进的串行进位加法器,一种优化,改变了进位的计算方法,提升了加法器的速度。
具体实现方法:
分析Si=AiBiCiCi+1=AiBi+(AiBi)CiS_{i} = A_{i} \oplus B_{i} \oplus C_{i} 和 C_{i+1} = A_{i} \land B_{i} + (A_{i} \oplus B_{i} )\land C_{i}
Gi=AiBi,Pi=AiBi进位产生项G_{i} = A_{i} \land B_{i},进位传播项P_{i} = A_{i} \oplus B_{i}
得到:Si=PiCiCi+1=Gi+PiCiS_{i} = P_{i} \oplus C_{i} 和 C_{i+1} = G_{i} + P_{i} \land C_{i}
大位宽超前进位加法器的实现
举个简单的例子,用超前进位加法器实现4位加法:
C1=G0+P0C0C_{1} = G_{0} + P_{0} \land C_{0}C2=G1+P1C1=G1+P1G0+P1P0C0C_{2} = G_{1} + P_{1} \land C_{1} = G_{1} + P_{1}G_{0} + P_{1} \land P_{0} \land C_{0}C3=G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0C_{3} = G_{2} + P_{2} \land C_{2} = G_{2} + P_{2} \land G_{1} + P_{2} \land P_{1}G_{0} + P_{2} \land P_{1} \land P_{0} \land C_{0}C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0C_{4} = G_{3} + P_{3} \land C_{3} = G_{3} + P_{3} \land G_{2} + P_{3} \land P_{2} \land G_{1} + P_{3} \land P_{2} \land P_{1}G_{0} + P_{3} \land P_{2} \land P_{1} \land P_{0} \land C_{0}
大位宽超前进位加法器的实现

可得出:每个进位的值均只与输入有关。
但也有不足:当展开的项数越多,电路扇入变大,复杂度增加,速度减慢,通常超前进位加法器4位为单位,便可以形成多位进位加法器啦,即大位宽超前进位加法器

3.用超前进位加法器实现16位加法器

C4C_{4}再进一步处理C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0C_{4} = G_{3} + P_{3} \land C_{3} = G_{3} + P_{3} \land G_{2} + P_{3} \land P_{2} \land G_{1} + P_{3} \land P_{2} \land P_{1}G_{0} + P_{3} \land P_{2} \land P_{1} \land P_{0} \land C_{0}
P=P3P2P1P0P = P_{3} \land P_{2} \land P_{1} \land P_{0}
G=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0G = G_{3} + P_{3} \land C_{3} = G_{3} + P_{3} \land G_{2} + P_{3} \land P_{2} \land G_{1} + P_{3} \land P_{2} \land P_{1}G_{0},因为PPGG均与输入有关,C4=G+PC0C_{4} = G + P \land C_{0},这是一个单位,改变下形式:P0P0P0=P3P2P1P0此P_{0}非彼P_{0} ,P_{0} = P_{3} \land P_{2} \land P_{1} \land P_{0}G0G0G0=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0此G_{0}非彼G_{0} ,G_{0} = G_{3} + P_{3} \land C_{3} = G_{3} + P_{3} \land G_{2} + P_{3} \land P_{2} \land G_{1} + P_{3} \land P_{2} \land P_{1}G_{0}C1=G0+P0C0C_{1} = G_{0} + P_{0} \land C_{0}正如下图所示:
大位宽超前进位加法器的实现
便可形成16位加法器了:
大位宽超前进位加法器的实现
进而可以形成更加复杂的加法器:
大位宽超前进位加法器的实现

4.致谢

文中部分图片来自中国科学院微电子研究所梁利平老师的课件,特此感谢。