Kritischer Pfad für Carry-Skip-Addierer


7

Kann jemand erklären, warum der Carry-Skip-Addierer den gleichen kritischen Pfad wie der normale Carry-Ripple-Addierer hat? Mein Lehrbuch sagt, dass ein kritischer Pfad auftritt, wenn ein Übertrag in LSB generiert und dann durch den Rest des Addierers weitergegeben wird. So wie ich es sehe, tritt ein kritischer Pfad auf, wenn jede Stufe entweder einen Übertrag erzeugen oder töten muss, daher muss jede nächste Stufe auf die Welligkeit der vorherigen Stufe warten, um die Summen zu erhalten. Alle Websites sagen, dass mein Lehrbuch korrekt ist, aber keine erklärt, warum. Ich würde mich über jede Hilfe freuen.

BTW Carry-Skip-Addierer ist der gleiche wie Carry-Lookahead-Addierer, berechnet jedoch kein Gruppengenerierungssignal.

Antworten:


9

Das Worst-Case-Szenario für einen Ripple-Carry-Addierer (RCA) besteht darin, dass das LSB einen Übertrag erzeugt und der Übertrag den gesamten Addierer von Bit 0 bis Bit ( N - 1) durchläuft . Ein Beispielmuster wäre 00000001 + 11111111. In der Addiererterminologie sind die Bits 7-1 "Propagatoren" und das Bit 0 ein "Generator". Der kritische Pfad verläuft vom Durchführen des LSB zum Durchführen des MSB, und jeder Addierer befindet sich im kritischen Pfad.

Die Idee hinter einem Carry-Skip-Addierer (Carry-Skip Adder, CSA) besteht darin, die Länge dieses kritischen Pfads zu verringern, indem dem Übertragspfad eine Verknüpfung zugewiesen wird, wenn alle Bits in einem Block einen Übertrag übertragen würden. Ein blockweites Ausbreitungssignal ist ziemlich einfach zu berechnen, und jeder Block kann gleichzeitig sein eigenes Ausbreitungssignal berechnen. Der schlimmste Fall ist also immer noch das gleiche Szenario, aber was passiert, sieht ein bisschen anders aus.

Nehmen wir an, wir haben immer noch das gleiche Problem von 0000 ...... 001 + 0111 ..... 111. Der erste Block berechnet einen Übertrag im ersten Bit und breitet den Übertrag durch die Bits 1, 2 und 3 aus. Zu diesem Zeitpunkt ist das erste Blockübertragungssignal gültig. Die Propagate-Auswahlsignale sind bereits gültig, da es sich um 2-3 Gate-Verzögerungen handelt und das Übertragssignal 4 Gate-Verzögerungen beträgt. Der Übertrags-Multiplexer für die Bits 8 bis 11 erhält das Übertragsignal vom Übertrag von Bit 3, da die Bits 4 bis 7 einen Übertrag übertragen würden. Beachten Sie, dass dies 1 Gate-Verzögerung erfordert, während ein normaler Cinch 4 Gate-Verzögerungen benötigt. Jeder Block fügt dem Übertragsignal 1 Gate-Verzögerung hinzu.

Wenn das MSB die Übertragsausbreitung beendet, würde dies dazu führen, dass der letzte CSA-Block den Eingang überträgt, was weitere 4 Gate-Verzögerungen erfordern würde. Dieses Setup eines LSB-Generators und eines MSB-Kill ist der neue Worst-Case. Die Quelle des kritischen Pfads ist zwischen RCA und CSA dieselbe, der kritische Pfad ist jedoch unterschiedlich.

Wenn ein beliebiger Block selbst einen Übertrag erzeugt, wird der Übertrag immer zum nächsten Block weitergegeben. Wenn der zweite Block jedoch selbst einen Übertrag erzeugt oder den Übertrag beendet, ist dies das Ende des kritischen Pfades. Wenn der zweite Block den Übertrag weitergibt, sehen wir den Vorteil der CSA-Architektur.

Wenn der Begriff "kritischer Pfad" verwendet wird, bedeutet dies im Allgemeinen, dass Sie eine Reihe von Eingaben in Betracht ziehen, die die Verzögerung im ungünstigsten Fall verursachen. Ihre Szenarien, die Sie bereitstellen, geben "hässliche" Fälle an, die möglicherweise eine große Verzögerung aufweisen, aber nicht die größte Verzögerung.


1

Lassen Sie es mich so beantworten.

Angenommen, dieser Bypass-Addierer hat drei Stufen. Und jede Stufe hat 4 Bits.

Wenn ein Bit den Übertrag erzeugt oder löscht, wird der Übertrag aus der 1. Stufe nicht benötigt. In diesem Fall müsste das Ergebnis des Übertrags aus der vorherigen Phase nicht abgewartet werden. Der schlimmste Fall tritt also auf, wenn auf den Transport der ersten Stufe gewartet werden soll.

Und lassen Sie es mich anders sagen. Die Verzögerung im ungünstigsten Fall = Rüstzeit + die gesamte Übertragungszeit in der 1. Stufe + 2 * Bypass-Zeit + (4-1) * Übertragungszeit für jedes Bit

Der Übertrag vom Eingang in geht vom 1. Bit zum letzten Bit in der 1. Stufe über. Gleichzeitig ist die zweite Stufe, ob auf den Übertrag von der ersten Stufe gewartet wird oder begonnen wird, einen eigenen Übertrag zu erzeugen oder zu löschen. Und der schlimmste Fall würde warten. Der schlimmste Fall ist also, dass die zweite Stufe beschließt, den Übertrag der ersten Stufe zu verbreiten.

Hoffe das beantwortet deine Zweifel.


1

In einem typischen Ripple-Carry-Addierer, der z. B. X [3..0] + Y [3..0] + Cin kombiniert, um Z [3..0] und Cout zu ergeben, werden die Signale X [0], Y [0] und Cin sind alle gleichwertig; Alle haben die gleiche Verzögerung für Cout. Wenn mehrere Addiererstufen miteinander verkettet sind, ist die Gesamtübertragungszeit des Übertrags die Zeit von X [0] und Y [0] der ersten Stufe bis zu ihrem Cout plus die Zeiten von Cin der nachfolgenden Stufen bis zu ihrem Cout. Wenn man z. B. acht identische 4-Bit-Abschnitte miteinander verkettet, ist die Zeit von X [0] oder Y [0] bis Cout nur 1/7 so wichtig wie die Zeit von Cin bis Cout.

Im Wesentlichen passiert, dass ein Ripple-Carry-Addierer drei äquivalente kritische Pfade von X [0], Y [0] und Cin zum Carry-Ausgang haben würde, wenn alle Eingaben gleichzeitig ankommen. Wenn sich die Übertragseingabe erst lange nach allen anderen Eingaben stabilisiert, ist dies bei jedem kombinatorischen Addierer der kritische Pfad (nichts anderes könnte ein kritischer Pfad sein, da alles auf die Übertragungseingabe warten würde). Ein Carry-Skip-Addierer versucht, die Zeit zwischen der Stabilisierung des Carry-Eingangs und der Stabilisierung seines Ausgangs zu minimieren, vorausgesetzt, alle anderen Eingänge sind eine Weile stabil , aber wenn alle Eingänge gleichzeitig stabil werden, werden die kritischen Pfade von X [0] und Y [0] zum Übertragsausgang bleibt gleich.

Im Übrigen kann ein Addierer, der auf kaskadierten Carry-Skip-Addierern basiert, eine O (sqrt (N)) - Ausbreitungszeit mit einer O (N) -Schaltung bereitstellen, indem die Stufen höherer Ordnung länger sind als die Stufen kürzerer Ordnung. Wenn eine N-Bit-Übertragssprungstufe eine Laufzeit von 2N + 2 Gateverzögerungen von ihren X- und Y-Eingängen und 2 Verzögerungen von ihrem Übertragseingang hat und eine N-Bit-Welligkeitsübertragungsstufe eine Zeit von 2N Verzögerungen von hat Wenn man einen 32-Bit-Addierer aus einer 4-Bit-Ripple-Carry-Stufe und 4, 5, 6, 7 und 8-Bit-Carry-Skip-Stufen aufbaut, stabilisiert der Carry aus der ersten Stufe 8 Verzögerungen nach X. und Y. Die zweite Stufe stabilisiert 10 Verzögerungen nach X und Y oder 2 Zyklen nach ihrer Übertragungseingabe, je nachdem, was zuletzt passiert (beide passieren zusammen). Die dritte Stufe stabilisiert 12 Zyklen nach X und Y oder 2 Zyklen nach ihrem Übertragseingang usw. Dies ist nicht der schnellste Weg zur Addition, aber ein guter Kompromiss zwischen Geschwindigkeit und Schaltung. Es ist möglich, die Laufzeit auf O (lgN) zu reduzieren, dies erfordert jedoch O (NlgN-Schaltung).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.