Carry-Ripple-Addierer
Der Carry-Ripple-Addierer (von engl. carry – Übertrag, ripple – rieseln), auch Ripple-Carry-Addierer oder ripple-through carry, ist ein Addiernetz, dient also der Addition mehrstelliger Binärzahlen.
Ein n-Bit-Carry-Ripple-Addierer kann zwei n-stellige Binärzahlen addieren, das Ergebnis hat n+1 Stellen. Das Schaltnetz hat damit 2n+1 (bzw. 2n ohne Carry in) Eingänge und n+1 Ausgänge.
Er setzt sich aus n Volladdierern (bzw. aus n−1 Volladdierern und 1 Halbaddierer ohne Carry in) zusammen. Der Übertrags-Ausgang der Addierer wird jeweils an einen Eingang des nächsten Volladdierers angeschlossen. Der Übertrags-Ausgang des letzten Volladdierers bildet den (n+1)-ten Ausgang des Schaltnetzes.
Die Addition entspricht der EXOR - Verknüpfung: r = a xor b xor c, wobei a und b die i-ten Stellen der ersten und zweiten Summanden und c der Übertrag (engl. carry) ist.
Da Volladdierer nicht unendlich schnell arbeiten, kann es zu Verzögerungen bei der Berechnung des Endergebnisses kommen, da der Volladdierer das korrekte Ergebnis erst dann ausgeben kann, wenn der vorhergehende Volladdierer das Übertragsbit geliefert hat. Im schlechtesten Fall führt die Addition a0 + b0 zu einem Übertrag, und für alle i > 0 gilt: ai + bi ≥ 1. Dann muss das Übertragsbit durch das gesamte Addiernetz wandern, bevor das richtige Ergebnis ausgegeben wird (Übertragspropagation).
Um diese langen Laufzeiten zu vermeiden, wurden beschleunigte Addiernetze entwickelt, etwa Carry-Skip, Carry-Look-Ahead ((Super)Ripple CLA und (Super)Block CLA), Conditional-Sum-Addition und Carry-Select-Addierer.