Carry-Select-Addierer
# Carry-Select-Addierer

Der Carry-Select-Addierer (von englisch carry Übertrag, select (aus-)wählen) oder kurz CSCA ist ein beschleunigtes Addiernetz, welches zur Addition mehrstelliger Binärzahlen verwendet wird.

## Funktionsweise

Der CSCA unterteilt die gesamte Wortbreite n in M Blöcke.
Im gegebenen Bildbeispiel sind die Blockbreiten 2, 3 und 4 Bit. Es handelt sich also um eine Addition von zwei 2 + 3 + 4 = 9 Bit breiten Binärzahlen.
Das Prinzip dieses Addiernetzes lässt sich mit dem Begriff „parallelisierte Vorabberechnung“ beschreiben, denn jeder der Blöcke besteht aus jeweils zwei Carry-Ripple-Addierern (kurz CRA), die gleichzeitig die Berechnung für ihren Bit-Anteil der Binärzahlen ausführen. Dabei liegt an einem der CRA ein Übertragsbit an (c=1), während der Carry-Eingang des anderen auf c=0 gesetzt ist. Somit werden pro Block beide möglichen Fälle parallel ausgerechnet und an einen Multiplexer angelegt. Dieser schaltet schließlich in Abhängigkeit vom höchstwertigen Übertragungsbit des vorherigen Blocks auf die richtige Lösungsvariante, welche im Idealfall schon fertig berechnet ist.

## Laufzeiten

Um eine optimale Laufzeit zu erhalten, ist es sinnvoll, die beliebig variable Blockwortbreite wachsen zu lassen, da so die Berechnung im Block synchron mit dem Anlegen des endgültigen Übertragungsbits abschließt.
Im folgenden Rechenbeispiel wird davon ausgegangen, dass dies genau dann der Fall ist, wenn der Wortbreitenzuwachs 1 Bit pro Block entspricht (siehe Beispiel).
* Gesamtwortbreite = n
* Anzahl der Blöcke = K
* Variable Blockwortbreite = $m_{k}$ mit k = 0,1,...,K-1
* Anfangsblockwortbreite = $m_{0}$
* Wortbreitenzuwachs = $\sigma _{m}$ [in Bit/Block]
$n=\sum _{k=0}^{K-1}\,m_{k}=m_{0}+(m_{0}+1)+(m_{0}+2)+...+(m_{0}+K-1)$ $n=K\cdot m_{0}+(1+2+...+K-1)=K\cdot m_{0}+K\cdot {\frac {K-1}{2}}$
$0=K^{2}+K\cdot (2m_{0}-1)-2n$
$K=-{\frac {2m_{0}-1}{2}}\pm {\sqrt {\left({\frac {2m_{0}-1}{2}}\right)^{2}+2n}}$
Auf unser spezielles Beispiel ($n=9,m_{0}=2,\sigma _{m}=1$) angewandt:
$K=-{\frac {3}{2}}+{\sqrt {{\frac {9}{4}}+{\frac {72}{4}}}}=3$ (0,1,2 – entspricht drei Blöcken)
Additionszeit:
$\tau _{CSCA}(n)=\tau _{CRA}(m_{0})+(K-1)\cdot \tau _{Block}$
$\tau _{CSCA}(n)=O({\sqrt {n}})$
mit
$\tau _{CRA}(n)=\tau _{Halbaddierer}+(n-1)\cdot \tau _{Carry-Ripple}+\tau _{Halbaddierer}$