Carry-Lookahead

Transcription

Carry-Lookahead
Studiengang Software Engineering
- Signalverarbeitung 1
Addierer
Signalverarbeitung 1
- Prof. Dr. Jürgen Doneit
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Verschiedene Addierer
•
•
•
•
Halb-, Volladdierer
Ripple-Carry-Addierer
Carry-Lookahead-Addierer
Carry-Select-Addierer
Studiengang Software Engineering
- Signalverarbeitung 1 -
Halbaddierer
S = a XOR b
C = a AND b
S = a ⊕b
C = a⋅b
Prof. Dr. Jürgen Doneit
Studiengang Software Engineering
- Signalverarbeitung 1 -
Volladdierer
S = a ⊕b ⊕c
C = a ⋅ b + (a ⊕ b) ⋅ c
Prof. Dr. Jürgen Doneit
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Ripple-Carry-Addierer
Carry – Übertrag
Ripple - rieseln
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Carry-Lookahead-Addierer
Grund für die schlechte Laufzeit des Ripple-Carry-Addierers ist
die Berechnung des Übertrags c.
Lösung: Vorrausschauende (lookahead) Berechnung des
Übertrags unter Ausnutzung folgender Grundsätze:
-Jedes Bitpaar „generiert“ einen Übertrag
ai ⋅ bi = 1
-oder „propagiert“ (leitet durch) einen Übertrag
(ai ⊕ bi) ⋅ ci = 1
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Carry-Lookahead-Addierer
Zur Berechnung des Übertrags c kann man folgende
rekursive Formel aufstellen:
ci = g i - 1 + p i - 1 ⋅ ci - 1
mit „generate“
gi = ai ⋅ bi
und „propagate“
pi = ai ⊕ bi
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Carry-Lookahead-Addierer
Für einen 4-Bit-Carry-Lookahead-Addierer (CLA-Addierer)
ergeben sich die folgenden Gleichungen für die
Berechnung der Überträge:
c1 = g0 + p0 ⋅ c0
c2 = g1 + p1 ⋅ c1 = g1 + p1(g0 + p0 ⋅ c0) = g1 + p1 ⋅ g0 + p1 ⋅ p0 ⋅ c0
c3 = g2 + p2 ⋅ g1 + p2 ⋅ p1 ⋅ g0 + p2 ⋅ p1 ⋅ p0 ⋅ c0
c4 = g3 + p3 ⋅ g2 + p3 ⋅ p2 ⋅ g1 + p3 ⋅ p2 ⋅ p1 ⋅ g0 + p3 ⋅ p2 ⋅ p1 ⋅ p0 ⋅ c0
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Diese Gleichungen können einfach realisiert werden:
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Carry-Lookahead-Addierer
Die Summe berechnet sich wie folgt:
si = p i ⊕ ci = a i ⊕ b i ⊕ ci
Aus Carry-Logik und
Summen-Logik wird der
Carry-Lookahead-Addierer
Studiengang Software Engineering
- Signalverarbeitung 1 -
Bsp.: 4-Bit CLA
Prof. Dr. Jürgen Doneit
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Carry-Select-Addierer
Strategie:
– Wort zweiteilen, zweiten Teil zweimal berechnen
– Einmal mit Cin=1, einmal mit Cin=0
– Mittels Multiplexer „richtigen“ zweiten Teil auswählen
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
8-Bit Carry-Select-Addierer mit
4-Bit CLA Basisblöcken
Studiengang Software Engineering
- Signalverarbeitung 1 -
Prof. Dr. Jürgen Doneit
Vergleich
Ripple-Carry
CLA
Carry-Select
mit CLA Blöcken
Zeit
3*n Gatterlaufzeiten
immer 4
Gatterlaufzeiten
immer 6
Gatterlaufzeiten
gering
hoch
mittel
(bitslice)
(für grosse Wortbreite enorm)
(ab 16-Bit besser als CLA)
(n = Wortbreite)
Aufwand
Quellen: Wikipedia, Skripte der Uni Ulm, Duisburg und der FH Karlsruhe