Das Kefk Network Wiki befindet sich im Testbetrieb.


Carry-Select-Addierer

Aus Kefk.

Wechseln zu: Navigation, Suche

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

Bild:Carry-Select-Addierer.png
Beispiel eines 9-Bit Carry-Select-Addierers

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 zeitgleich 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).

  • eins Gesamtwortbreite = n
  • zwei Anzahl der Blöcke = K
  • drei variable Blockwortbreite = mk mit k = 0,1,...,K-1
  • vier Anfangsblockwortbreite = m0
  • fünf Wortbreitenzuwachs = σ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{\frac{2m_0-1}{2}+2n}


Auf unser spezielles Beispiel (n = 9,m0 = 2,σm = 1) angewandt:

K =  - \frac{3}{2} + \sqrt{ \frac{9}{4} + \frac{72}{4} } = 2 (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}

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Carry-Select-Addierer, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge