Definition
Carry-Lookahead Adder
The problem of ripple-carry adders is that they need to run the entire ripple (chain) sequentially since every column depends on its predecessor.
The idea of carry-lookahead adders is to subdivide the columns into blocks and precompute certain values in parallel. The previous column’s information is still needed, however, more can be done in parallel.
Carry-lookahead adders include two new signal bits:
- Generate . The th column is said to generate a carry if it produces a carry out independent of the carry in.
- Propagate . The th column is said to propagate a carry if it produces a carry out whenever there is a carry in. The th column will propagate a carry in, , if either or is .
Thus, the th column of an adder will generate a carry out if it either generates a carry, or propagates a carry in :
The delay of a carry-lookahead adder divided into -bit blocks has a delay:
where is the delay of the column propagate and generate gates to generate , is the delay to find the block propagate and generate signals for a -bit block, and is the delay from to through the final AND/OR logic of the -bit CLA block. 1
Blocks
The generate and propagate definitions extend to multiple-bit blocks. A block is said to generate a carry if it produces a carry out independent of the carry in to the block. The block is said to propagate a carry if it produces a carry out whenever there is a carry in to the block. We defined -bit block generate and propagate signals, and , for block spanning columns through .
A block generates a carry if the most significant column generates a carry, or if the previous column previous column generated a carry and the most significant column propagates it, and so forth.
For example, the generate logic for a block spanning columns 3 through 0 is:
A block propagates a carry if all the columns in the block propagate the carry. For example, the propagate logic for a block spanning columns 3 through 0 is:
Using the block generate and propagate signals, we can quickly compute the carry out of the block using the carry in tot he block :