So bestimmen Sie, ob ein Carry-Look-Ahead-Addierer überläuft

Ich implementiere einen 32-Bit-CLA-Addierer, so wie ein 16-Bit-Addierer in Wikipedia implementiert ist

Das Problem ist, wie kann ich feststellen, ob der Block überläuft? Ich brauche den Übertrag in Bit 32 (der sich jetzt im letzten 4-Bit-CLA-Addierer befindet) und XOR mit Übertrag aus Bit 32 (Unterschied in MSB prüfen)?

AKTUALISIEREN

Ist meine Überlauflogik korrekt

wobei Cin der Übertrag in den gesamten 16-Bit-Block ist, P* der Block Propagate ist, G* die Blockgenerierung und der Übertrag in Bit 32 (Tippfehler, tatsächlich Bit 16 MSB)

Antworten (3)

Ich dachte darüber nach, zu sehen, was mein Gehirn an längst vergangenen Erklärungen im Gegensatz zu Beobachtungen des gesunden Menschenverstandes wiederkäuen könnte, ABER hier ist eine Seite, die das alles wirklich sehr gut macht .

Sie erklären einen "netten" "Trick".

  • Zweierkomplement-Überlauferkennung kann durch XOR-Verknüpfung der Carry-in- und Carry-out-Bo=its des am weitesten links stehenden Volladdierers erreicht werden.

Ihr Diagramm. Siehe obige Referenz für einen detaillierten Kommentar:

Geben Sie hier die Bildbeschreibung ein

Das ist ein 1-Bit-Addierer, das Problem bei der Verwendung eines >1-Bit-Addierers besteht darin, dass der Übertrag in das MSB irgendwo im Addierer selbst versteckt ist. Hoffe du hast mich erwischt? Ich könnte einen Ausgang für meinen Blockaddierer für Cin zu MSB haben, aber das scheint fehl am Platz zu sein? Alternativ könnte ich jeden Block ein Overflow-Bit ausgeben lassen, ist das die übliche Implementierung? Es wird ziemlich viel redundante Logik geben
Der Ausgang der letzten Stufe ist das XOR der beiden Eingänge und des Übertragseingangs; somit ist der Übertrag das xor der beiden Eingaben und der Ausgabe.

Wenn Sie den CLA-Block (Carry Lookahead Adder) entwerfen, könnten Sie den Block den Übertrag aus der Bit-2-Ziffer ausgeben lassen (die bereits berechnet werden muss, um den korrekten Wert für Bit 3 der Summe zu bilden).

Wenn die CLA-Blockschnittstelle gegeben ist, können Sie den Überlauf aus den Vorzeichenbits der beiden Addierereingänge A(31) und B(31) und dem Vorzeichenbit der Ausgangssumme ableiten. Wenn A und B das gleiche Vorzeichen haben, muss das Summenzeichen zu ihnen passen, falls kein Überlauf vorliegt. Weitere Einzelheiten finden Sie auf dieser Seite oder auf dieser Seite .

Sie können C(n-1) aus P, G und S zurückverfolgen

Wenn Sie verwenden: X = XOR (P, G)

oder Sie können auch XOR( !P, !G) verwenden; P=Propagieren, G=Erzeugen

Ci(n-1) = XOR( X, S) ; S = Summenergebnis des höchsten Bits

Jetzt haben Sie Ci(n-1) und Ci(n)

V = XOR ( Ci(n-1), Ci(n) ) ; siehe andere Theorien oben

G= P= X= Ci= Ci
AxB =J xCi =S A&B A+B GxP XxS überprüfen
00 0 0 0 0 0 0 0 OK
11 0 1 1 1 1 0 1 OK
01 1 0 1 0 1 1 0 OK
10 1 1 0 0 1 1 1 OK

x = XOR; + = ODER; & = UND; ! = NICHT Geben Sie hier die Bildbeschreibung ein