I want to design a binary adder that adds three numbers (# bits arbitrary, but let's use 3 bits for example). And I have noticed there are relatively convenient ways to do this with carry-save adders where you use the Cin input as the third number input and then you finish the addition with a normal ripple adder. Key point here being that it is significantly faster then designing dual ripple adders.
But these carry-save architectures (also called Wallace Trees) always seem to have N+1 output bits (where N = input bits), and this does not seem like enough for full resolution so I am confused by this.
For example, adding three 3-bit numbers requires 5 output bits for full resolution, but the relatively "standard" architecture I refer to above would only result in 4 output bits.
Am I missing something here, or is this an obvious limitation to the carry-save architecture? Is there a better option?
But these carry-save architectures (also called Wallace Trees) always seem to have N+1 output bits (where N = input bits), and this does not seem like enough for full resolution so I am confused by this.
For example, adding three 3-bit numbers requires 5 output bits for full resolution, but the relatively "standard" architecture I refer to above would only result in 4 output bits.
Am I missing something here, or is this an obvious limitation to the carry-save architecture? Is there a better option?