Carry-Select-Addierer

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.

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[Bearbeiten]

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 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[Bearbeiten]

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 = m_k mit k = 0,1,...,K-1
  • vier Anfangsblockwortbreite = m_0
  • fünf 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{\frac{2m_0-1}{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} } = 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}