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