I came across the following problem:
A half adder is implemented with XOR and AND gates. A full adder is implemented with two half adders and one OR gate. The propagation delay of an XOR gate is twice that of an AND/OR gate. The propagation delay of an AND/OR gate is 1.2 microseconds. A 4-bit-ripple-carry binary adder is implemented by using four full adders. The total propagation time of this 4-bit binary adder in microseconds is ______.
How does the ripple adder work? I can guess two approaches / interpretations of the internal workings of "standard" ripple adder as explained below:
Interpretation or approach 1: First Half Adders of each full adders compute immediately without requiring to wait for carry from previous full adder becomes available
Delay for first full adder:
- For sum: 4.8 μs
- For carry: 4.8 μs
As can be seen in below diagram:
The carry of first full adder adder becomes input carry Cin for 2nd full adder. This carry is input for 2nd half adder of the 2nd full adder. Hence 1st half adder of full adder does not need to wait for anything.
- This is the case with 1st half adder of all full adders. They all can generate their respective output at the end of time t=2.4μs.
- 2nd Half adders of each full adders needs to wait till carry from previous full adder become available.
- Hence total delay = 4.8 + 2.4 + 2.4 + 2.4 = 12 μs
Interpretation or approach 2: Full adders (even 1st Half adder in the full adder) remains deactivated until carry from previous Full adder becomes available
- In this case the delay will be simply 4 * 4.8 = 19.2 μs
- My question is "how does a standard ripple carry adder behave?" Does each full adder remains deactivated until carry from previous full adder becomes available or only 2nd half adders of each full adder needs to wait until carry from previous full adder becomes available?
- Wikipedia gives following animation which suggests approach 2: