Full Adders
The logic table for a full adder is slightly more complicated than the tables we have used before, because now we have 3 input bits. It looks like this:
|
|
|||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
There are many different ways that you might implement this table. I am
going to present one method here that has the benefit of being easy to
understand. If you look at the Q bit, you can see that the top 4 bits
are behaving like an XOR gate with respect to A and B, while the bottom
4 bits are behaving like an XNOR gate with respect to A and B.
Similarly, the top 4 bits of CO are behaving like an AND gate with
respect to A and B, and the bottom 4 bits behave like an OR gate.
Taking those facts, the following circuit implements a full adder:
This definitely is not the most efficient way to implement a full
adder, but it is extremely easy to understand and trace through the
logic using this method. If you are so inclined, see what you can do to
implement this logic with fewer gates.
Now we have a piece of functionality called a "full adder." What a computer engineer then does is "black-box" it so that he or she can stop worrying about the details of the component. A black box for a full adder would look like this:
With that black box, it is now easy to draw a 4-bit full adder:
In this diagram the carry-out from each bit feeds directly into the
carry-in of the next bit over. A 0 is hard-wired into the initial
carry-in bit. If you input two 4-bit numbers on the A and B lines, you
will get the 4-bit sum out on the Q lines, plus 1 additional bit for
the final carry-out. You can see that this chain can extend as far as
you like, through 8, 16 or 32 bits if desired.
The 4-bit adder we just created is called a ripple-carry adder. It gets that name because the carry bits "ripple" from one adder to the next. This implementation has the advantage of simplicity but the disadvantage of speed problems. In a real circuit, gates take time to switch states (the time is on the order of nanoseconds, but in high-speed computers nanoseconds matter). So 32-bit or 64-bit ripple-carry adders might take 100 to 200 nanoseconds to settle into their final sum because of carry ripple. For this reason, engineers have created more advanced adders called carry-lookahead adders. The number of gates required to implement carry-lookahead is large, but the settling time for the adder is much better.

