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

大位宽超前进位加法器

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

1. 串行进位加法器

  • 半加器:不包含进位的加法器,需要两个门实现。
    大位宽超前进位加法器的实现_第1张图片
    S = X ⊕ Y S = X \oplus Y S=XY C = X ∧ Y C = X \land Y C=XY
  • 全加器:包含进位的加法器,需要五个门实现。
    大位宽超前进位加法器的实现_第2张图片
    S = a ⊕ b ⊕ c i n S = a \oplus b \oplus c_{in} S=abcin C = a ∧ b + a ∧ c i n + b ∧ c i n 或 C = a ∧ b + ( a ⊕ b ) ∧ c i n C = a \land b + a \land c_{in} + b \land c_{in}或C = a \land b + (a \oplus b) \land c_{in} C=ab+acin+bcinC=ab+(ab)cin简单证明下两个等式 令 x = a ⊕ b 令x = a \oplus b x=ab 得 x = a ‾ ∧ b + b ‾ ∧ a 得x = \overline{a} \land b + \overline{b} \land a x=ab+ba 带 入 C = a ∧ b + ( a ⊕ b ) ∧ c i n 带入C = a \land b + (a \oplus b) \land c_{in} C=ab+(ab)cin 得 到 C = a ∧ b + ( a ‾ ∧ b + b ‾ ∧ a ) ∧ c i n 得到C = a \land b + (\overline{a} \land b + \overline{b} \land a) \land c_{in} C=ab+(ab+ba)cin 又 因 为 a ∧ b = a ∧ b ∧ ( 1 + c i n ) = a ∧ b + a ∧ b ∧ c i n 又因为a \land b = a \land b\land (1+c_{in} )=a \land b+a \land b\land c_{in} ab=ab(1+cin)=ab+abcin 得 到 C = a ∧ b + a ∧ b ∧ c i n + ( a ‾ ∧ b + b ‾ ∧ a ) ∧ c i n 得到C = a \land b+a \land b\land c_{in} + (\overline{a} \land b + \overline{b} \land a) \land c_{in} C=ab+abcin+(ab+ba)cin 等 价 于 C = a ∧ b + a ∧ b ∧ c i n + a ∧ b ∧ c i n + ( a ‾ ∧ b + b ‾ ∧ a ) ∧ c i n 等价于C = a \land b+a \land b\land c_{in} +a \land b\land c_{in} + (\overline{a} \land b + \overline{b} \land a) \land c_{in} C=ab+abcin+abcin+(ab+ba)cin b l i n g : C = a ∧ b + a ∧ c i n + b ∧ c i n bling: C = a \land b + a \land c_{in} + b \land c_{in} bling:C=ab+acin+bcin
  • 串行进位加法器使用全加器实现的,由 N N N个一位加法器串联而成,第 i i i级的用来产生第 i + 1 i + 1 i+1级的进位。但是这种结构的特点是结构直观简单,运行速度慢,最坏情形下关键路径的延时较长。
    大位宽超前进位加法器的实现_第3张图片
    串行进位加法器的延时: T = T F A ( x , y − c o u t ) + ( k − 2 ) ∗ T F A ( c i n − c o u t ) + T F A ( c i n − s ) T = T_{FA}(x,y-c_{out}) +(k-2)*T_{FA}(c_{in}-c_{out}) + T_{FA}(c_{in}-s) T=TFA(x,ycout)+(k2)TFA(cincout)+TFA(cins)
    大位宽超前进位加法器的实现_第4张图片

2. 超前进位加法器

超前进位加法器就是利用进位产生项进位传播项实现的,改进的串行进位加法器,一种优化,改变了进位的计算方法,提升了加法器的速度。
具体实现方法:
分析 S i = A i ⊕ B i ⊕ C i 和 C i + 1 = A i ∧ B i + ( A i ⊕ B i ) ∧ C i S_{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} Si=AiBiCiCi+1=AiBi+(AiBi)Ci
进 位 产 生 项 G i = A i ∧ B i , 进 位 传 播 项 P i = A i ⊕ B i 进位产生项G_{i} = A_{i} \land B_{i},进位传播项P_{i} = A_{i} \oplus B_{i} Gi=AiBi,Pi=AiBi
得到: S i = P i ⊕ C i 和 C i + 1 = G i + P i ∧ C i S_{i} = P_{i} \oplus C_{i} 和 C_{i+1} = G_{i} + P_{i} \land C_{i} Si=PiCiCi+1=Gi+PiCi
大位宽超前进位加法器的实现_第5张图片
举个简单的例子,用超前进位加法器实现4位加法:
C 1 = G 0 + P 0 ∧ C 0 C_{1} = G_{0} + P_{0} \land C_{0} C1=G0+P0C0 C 2 = G 1 + P 1 ∧ C 1 = G 1 + P 1 G 0 + P 1 ∧ P 0 ∧ C 0 C_{2} = G_{1} + P_{1} \land C_{1} = G_{1} + P_{1}G_{0} + P_{1} \land P_{0} \land C_{0} C2=G1+P1C1=G1+P1G0+P1P0C0 C 3 = G 2 + P 2 ∧ C 2 = G 2 + P 2 ∧ G 1 + P 2 ∧ P 1 G 0 + P 2 ∧ P 1 ∧ P 0 ∧ C 0 C_{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} C3=G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0 C 4 = G 3 + P 3 ∧ C 3 = G 3 + P 3 ∧ G 2 + P 3 ∧ P 2 ∧ G 1 + P 3 ∧ P 2 ∧ P 1 G 0 + P 3 ∧ P 2 ∧ P 1 ∧ P 0 ∧ C 0 C_{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} C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0
大位宽超前进位加法器的实现_第6张图片

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

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

C 4 C_{4} C4再进一步处理 C 4 = G 3 + P 3 ∧ C 3 = G 3 + P 3 ∧ G 2 + P 3 ∧ P 2 ∧ G 1 + P 3 ∧ P 2 ∧ P 1 G 0 + P 3 ∧ P 2 ∧ P 1 ∧ P 0 ∧ C 0 C_{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} C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0
P = P 3 ∧ P 2 ∧ P 1 ∧ P 0 P = P_{3} \land P_{2} \land P_{1} \land P_{0} P=P3P2P1P0
G = G 3 + P 3 ∧ C 3 = G 3 + P 3 ∧ G 2 + P 3 ∧ P 2 ∧ G 1 + P 3 ∧ P 2 ∧ P 1 G 0 G = 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} G=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0,因为 P P P G G G均与输入有关, C 4 = G + P ∧ C 0 C_{4} = G + P \land C_{0} C4=G+PC0,这是一个单位,改变下形式: 此 P 0 非 彼 P 0 , P 0 = P 3 ∧ P 2 ∧ P 1 ∧ P 0 此P_{0}非彼P_{0} ,P_{0} = P_{3} \land P_{2} \land P_{1} \land P_{0} P0P0P0=P3P2P1P0 此 G 0 非 彼 G 0 , G 0 = G 3 + P 3 ∧ C 3 = G 3 + P 3 ∧ G 2 + P 3 ∧ P 2 ∧ G 1 + P 3 ∧ P 2 ∧ P 1 G 0 此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} G0G0G0=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0 C 1 = G 0 + P 0 ∧ C 0 C_{1} = G_{0} + P_{0} \land C_{0} C1=G0+P0C0正如下图所示:
大位宽超前进位加法器的实现_第7张图片
便可形成16位加法器了:
大位宽超前进位加法器的实现_第8张图片
进而可以形成更加复杂的加法器:
大位宽超前进位加法器的实现_第9张图片

4.符号声明

异 或 表 示 : S = X ⊕ Y 异或表示:S = X \oplus Y S=XY 与 表 示 : C = X ∧ Y 与表示:C = X \land Y C=XY

5.致谢

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

你可能感兴趣的:(FPGA,硬件架构)