Fast ripple carry


Ripple carry is, basically, a slow thing.
P propagates the input_carry through.
G generates the output_carry.

Bad thing is, that we have a propagation delay
of two NAND gates per Bit.

There is a trick, how to double the speed.
But it requires open_collector (or open_drain) NANDs,
and for the carry signal we have to change between
low_active / high_active after each Bit.

Now to describe, how it works.

If /C0 or G0 are active, there is a chance, that C1
could become active.
We know, if /P0 is 1 (inactive), C1 will not be active.
So we use /P0 as a "kill carry" signal.

For generating /C2 from C1, we already know what to do.

Although ripple carry is still slow, it's an alternative
to 74182_like parallel carry for ALUs with a small word size,
like 8 Bit or less.

Also note, that building a 74182_like parallel carry has two
disadvantages:
The effort/time_delay from distributing the propagate,
generate and carry signals.
And the increased amount of gates/transistors.

So if ripple carry is supposed to be fast enough,
it's cheaper to use it.


[HOME] [UP]/ [BACK] [1] [2] [3] [4] [5] [6] [7] [8] [NEXT]

(c) Dieter Mueller 2005