ADDERS

CARRY GENERATION, CARRY PROPAGATION, CARRY DELETION

To calculate delay in a ripple carry, we need to understand, how carry from one stage is affecting the next stage. For that, we need to analyze the dependence of output carry to the input carry.

From the truth table of Full adder,

A
A
B
B
Cin
Cin
Cout
Cout
Sum
Sum
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
0
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
1
1
Input
Input
Output
Output
Text is not SVG - cannot display

Carry Generation:

When $A=1$ & $B=1$,

A
A
B
B
Cin
Cin
Cout
Cout
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
Text is not SVG - cannot display

Comparing $C_{in}$ and $C_{out}$,

  • $C_{out}$ is independent of $C_{in}$
  • Whatever $C_{in}$ be, $C_{out}$ will always be $1$
  • Hence we can say, Carry gets generated when $A=1$ & $B=1$
A=1 
A=1 
B=1 
B=1 
Cin
Cin
Sum
Sum
Cout=1
Cout=1
Text is not SVG - cannot display

Carry generation involves $1$ AND $+$ $1$ OR gate delay

This carry generation process involves path from inputs $A$ and $B$ to output $C_{out}$. Hence carry generation = $A$ to $C_{out}$ or $B$ to $C_{out}$.

Carry Generation stage acts like a wall. It won’t pass along the previous stage’s carry to next stage.

Carry Deletion:

A
A
B
B
Cin
Cin
Cout
Cout
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
Text is not SVG - cannot display

When $A=0$ & $B=1$ (or) $A=0$ & $B=1$,

Comparing $C_{in}$ and $C_{out}$,

  • $C_{out}$ is independent of $C_{in}$
  • Whatever $C_{in}$ be, $C_{out}$ will always be $0$
  • Hence we can say, Carry gets killed or deleted when $A=0$ & $B=0$

Carry deletion stage acts like a wall. It won’t pass along the previous stage’s carry to next stage.

Carry Propagation:

When $A=0$ & $B=1$ (or) $A=0$ & $B=1$,

A
A
B
B
Cin
Cin
Cout
Cout
0
0
1
1
0
0
0%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Bopacity%3D30%3BfillColor%3D%23fa6800%3BfontColor%3D%23000000%3BstrokeColor%3D%23C73500%3BlabelBorderColor%3Ddefault%3BtextShadow%3D0%3Bmovable%3D1%3Bresizable%3D1%3Brotatable%3D1%3Bdeletable%3D1%3Beditable%3D1%3Blocked%3D0%3Bconnectable%3D1%3Bshadow%3D1%3BswimlaneLine%3D1%3Bsketch%3D1%3BcurveFitting%3D1%3Bjiggle%3D2%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22437%22%20y%3D%2219%22%20width%3D%22112%22%20height%3D%2269%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E
0%3Cmx...
0
0
1
1
1
1
1
1
A
A
B
B
Cin
Cin
Cout
Cout
1
1
0
0
0
0
0
0
1
1
0
0
1
1
1
1
Text is not SVG - cannot display

Comparing $C_{in}$ and $C_{out}$,

  • $C_{out}$ depends on $C_{in}$
  • $C_{out}\;=\;C_{in}$
  • Hence we can say, Carry gets propagated from one stage to next when $A=0$ & $B=1$ (or) $A=1$ & $B=0$

Carry Propagation stage acts like a tunnel. It will pass along the previous stage’s carry to next stage.

Upon summarizing,

A
A
B
B
Cin
Cin
Cout
Cout
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
Carry Deletion
Carry Deleti...
Carry Propagation
Carry Propag...
Carry Generation
Carry Genera...
Text is not SVG - cannot display

Wall and Tunnel:

  • Carry Propagation stage will act like a tunnel. It will pass along the previous stage’s carry to next stage.
  • Carry deletion and generation stage will act like a wall. It won’t pass along the previous stage’s carry to next stage.

Delay depends on the input applied:

Time taken by the adder to deliver correct output depends on the inputs applied.

When all inputs are zero $A=0000\;\;B=0000$:

  • Each and every stage will act as a carry kill stage.
  • No stage will generate any carry and no stage will depend on its previous stage’s carry.