Beste Antwort
Eine Wahrheitstabelle ist eine Tabelle, die Ihnen die Ausgabe einer Booleschen Funktion für jede mögliche Kombination von gibt Eingänge. Ein Volladdierer ist eine Boolesche Funktion (oder eine Hardware, die sie implementiert), die bei zwei 2-Bit-Ganzzahlen die Summe dieser Zahlen, einschließlich Carry-Over, gibt. (Ein Halbaddierer addiert nur die Zahlen, ignoriert jedoch die Übertragung). Wenn Sie zwei 2-Bit-Ganzzahlen als Eingabe haben, gibt es 16 mögliche Eingaben, sodass Ihre Tabelle 16 Zeilen enthält. So kann es aussehen, wenn Ihre Eingänge a und b mit Bits sind. Der Ausgang ist xabx 00 00 000 00 01 001 00 10 010 00 1 1 011 01 00 001 01 01 010 01 10 011 01 11 100 11 00 011 10 01 011 10 10 100 10 11 101 11 00 011 11 01 100 11 10 101 11 11 110
Antwort
Die glatte Antwort lautet „was auch immer der Designer möchte“. P. >
Als ich mich Ende der 1970er Jahre mit Computerdesign beschäftigte, hatte ich einen Hintergrund in Mathematik und in geringerem Maße in Computerprogrammierung. Einige meiner frühen Arbeiten betrafen das Design und die Implementierung von Befehlssätzen und insbesondere der arithmetischen Operationen. All dies erforderte, dass ich ein Verständnis der Computerarithmetik aufbauen musste, und aufgrund des Hintergrunds tat ich dies aus einer leicht abstrakten, mathematischen Sicht. Dies stand im Gegensatz zu dem, was dargelegt wurde in vielen Lehrbüchern zum Thema Elektronik und Computerdesign, in denen Funktionen (z. B. Addierer) und deren Implementierung beschrieben wurden, die jedoch nicht immer motiviert waren.
Das Motivat ion zum Implementieren eines Addierers ist, zwei Sätze von Bits („Wörter“) zu nehmen, Zahlen repräsentieren, und um eine Ausgabe zu produzieren, die die Summe dieser Bits darstellt. Hier sind drei wichtige Fragen zu stellen. Was sind die Zahlen, die wir darstellen wollen? Zweitens, wie werden diese Zahlen als Bits dargestellt? Und drittens, was soll passieren, wenn die Summe der beiden Zahlen nicht als Satz von Bits dargestellt werden kann.
Eine häufige Situation (N-Bit, Little Endian, Ganzzahl ohne Vorzeichen) ist, dass eine Das N-Bit-Wort wird verwendet, um die Ganzzahlen [0,2^N-1],
darzustellen, und das Wort B[N-1]...B[0]
repräsentiert den Wert ΣB[i]2^i: i in [0,N-1].
Die dritte Frage ist ein Problem – die Summe der beiden Eingaben kann im Bereich [0,2*(2^N-1)]
liegen, sodass es Ergebnisse gibt, die nicht dargestellt werden können.
A. Die einfache Lehrbuchimplementierung eines „N-Bit-Addierers“ baut ihn aus N „1-Bit-Volladdierern“ auf. Zusätzlich zu den 2 Sätzen von N Operandenbits gibt es ein Übertragsbit (auf Null gezwungen) und ein Übertragsbit. Wenn das mathematische Ergebnis der Addition dargestellt werden kann, sind die N-Bits des Ergebnisses vom Addierer die korrekte Darstellung des Ergebnisses, und die Ausführung ist 0. Wenn andererseits das mathematische Ergebnis von Die Addition kann nicht dargestellt werden, dann sind die N-Bits des Ergebnisses vom Addierer die korrekte Darstellung des Ergebnismoduls 2 ^ N, und die Ausführung ist 1. Zusammenfassend ergibt dieser Addierer immer das korrekte Ergebnismodulo 2 ^ N und eine Ausführung zeigen an, dass das korrekte Ergebnis nicht darstellbar ist. Einige Computersysteme möchten dies als Fehler behandeln, möglicherweise in einem Flag aufzeichnen oder eine Ausnahme verursachen.
Eine andere häufige Situation (N-Bit, Little Endian, vorzeichenbehaftete Zweierkomplement-Ganzzahl) ist, dass eine Das N-Bit-Wort wird verwendet, um die Ganzzahlen [-2^(N-1),2^(N-1)-1],
darzustellen, und das Wort B[N-1]...B[0]
repräsentiert den Wert -B[N-1]*2^N + ΣB[i]2^i: i in [0,N-1]*.
Auch hier gibt es Ergebnisse, die nicht dargestellt werden können. Der zuvor beschriebene Addierer lieferte das korrekte Ergebnis für alle darstellbaren Ergebnisse (weshalb die Zweierkomplementarithmetik verwendet wird). Die Durchführung zeigt jedoch nicht an, ob das Ergebnis darstellbar ist. (Betrachten Sie -1 + 1 = 0, was zu einem Übertrag führt, und 0 + 0 = 0, was nicht der Fall ist). Für das Zweierkomplement ist die Bedingung, die ein nicht darstellbares Ergebnis darstellt (üblicherweise als „Überlauf“ bezeichnet), dass das Vorzeichenbit (höchstwertiges Bit) des Ergebnisses „unerwartet“ ist – das heißt, die Summe zweier negativer Zahlen scheint positiv zu sein, oder Die Summe zweier positiver Zahlen scheint negativ zu sein (Übung für den Leser, um zu zeigen, dass die Summe zweier verschiedener Zeichen immer dargestellt werden kann).
Einige andere Darstellungen können möglicherweise dieselben Addierer verwenden als vorzeichenbehaftete und vorzeichenlose Ganzzahlen. Bei gebrochenen Darstellungen, bei denen der Wert eines Wortes der Wert des Wortes ist, der als Ganzzahl, geteilt durch eine Zweierpotenz, behandelt wird, liefert der Addierer das richtige Ergebnis, wenn der Wert darstellbar ist. In Systemen, die diese Darstellungen verwenden, ist das gewünschte Verhalten manchmal, dass die Ergebnisse „gesättigt“ sind – das heißt, das Ergebnis liegt außerhalb des Bereichs, die Summe ist der positivste oder der negativste Wert, je nach Bedarf. Andere Systeme 2 einen der Werte (typischerweise 10… 0) zur Verwendung als Fehlerwert, der sich dann durch weitere Operationen ausbreitet. In diesem Fall wird ein spezieller Addierer benötigt.
* Diese Formulierung macht die Komplementform der beiden explizit – der vorzeichenbehaftete Wert des Wortes ist der vorzeichenlose Wert des Wortes minus 2 ^ N mal dem obersten Bit (Vorzeichenbit). Entsprechend kann der Wert -B[N-1]*2^(N-1) + ΣB[i]2^i: i in [0,N-2]
geschrieben werden, was dem oberen Bit entspricht, das 0 oder -1 anstelle von 0 oder +1 darstellt.