Ich kann kein Rätsel lösen, das darin besteht, einen 4-Bit-Bitzähler mit einfachen Logikgattern (NOT, OR, AND, NOR, NAND, XOR, XNOR, MUX, FULL ADDER) zu erstellen. Ein Bitzähler gibt an, wie viele Bits in einem Wert gesetzt sind. So hätte beispielsweise der Wert '1011' das Ergebnis '011', weil drei Bits gesetzt sind und '011' binär 3 bedeutet.
Ich habe ein Buch mit dem Titel "Digital Principles" von Schaum's Outlines gekauft, und nirgendwo in diesem Buch steht, wie man aus Logikgattern einen kleinen Zähler macht. Ich habe auch das Buch Hill & Horowitz, das verwendet wird, um digitale Logik zu lehren. Nirgendwo in diesem Buch wird beschrieben, wie man aus Logikgattern einen Bitzähler macht. Ich finde es äußerst frustrierend, dass die Herstellung grundlegender kombinatorischer Logikschaltungen eine Art schwarzer Voodoo ist, der nicht dokumentiert ist.
Gibt es ein Buch, das den Aufbau aller gängigen kombinatorischen Schaltungen wie Bitzähler, Addierer usw. mit einfachen Logikgattern UMFASSEND beschreibt?
Hinweis: Herauszufinden, wie das geht, ist nicht einfach. Dies ist eine Wahrheitstabelle mit 16 Zeilen und 3 Spalten mit Ausgaben. Wenn Sie versuchen, das alles aufzuschreiben und zu vereinfachen, wird es sehr komplex und es gibt viele Möglichkeiten, Fehler zu machen. Die Wahrheitstabelle für einen 4-Bit-Bitzähler sieht so aus (Eingänge links, Ausgänge rechts):
Ich habe versucht, dies mit einer Karnaugh-Karte zu lösen, aber es führt immer noch zu einem Ausdruck, der viel zu groß für den Rätsellösungsbereich ist. Für die zweite Ausgabespalte habe ich beispielsweise die folgende Karnaugh-Karte erhalten:
was den folgenden Ausdruck hat:
A'B'CD + A'BD + ABC' + AB'D + BCD' + AB'CD'
Um dies im Puzzle darzustellen, wären 6 4-Wege-UNDs, 1 4-Wege-ODER und 3 2-Wege-ODERs erforderlich. All diese Komponenten würden nicht einmal in den zur Verfügung stehenden Bereich für die Rätsellösung passen.
Gegeben sind die Eingänge A, B, C, D und die Ausgänge X, Y, Z, wobei XYZ eine vorzeichenlose 3-Bit-Binärzahl ist, die die Anzahl der Bits in ABCD darstellt, die 1 sind. Sei X das signifikanteste Bit der Binärzahl und sei Z sei das niederwertigste Bit.
Die Wahrheitstabelle für die Funktion sieht so aus...
ABCD => XYZ
0000 => 000
0001 => 001
0010 => 001
0011 => 010
0100 => 001 0101 =>
010
0110 => 010
0111 => 011
1000 => 001
1001 => 010
1010 =
> 010
1011 => 011 1100 => 010
1101 => 011
1110 => 011
1111 => 100
Aus der Wahrheitstabelle sehen wir deutlich, dass der X-Ausgang nur 1 ist, wenn alle Bits in ABCD 1 sind .
X = A UND B UND C UND D
Wir sehen deutlich, dass Z nur dann 1 ausgibt, wenn eine ungerade Anzahl von Bits 1 ist. Eine ungerade Paritätsfunktion lässt sich leicht mit XOR-Gattern implementieren. Also...
Z = A XOR B XOR C XOR D
Die Funktion für den Y-Ausgang ist etwas weniger offensichtlich. 1, wenn mindestens zwei von ABCD eingeschaltet sind, aber nicht, wenn alle vier eingeschaltet sind. Der Y-Term kann so geschrieben werden, dass alle Kombinationen von zwei Eingängen eingeschaltet sind, außer wenn alle vier eingeschaltet sind.
Y = ((A UND B) ODER (A UND C) ODER (A UND D) ODER (B UND C) ODER (B UND D) ODER (C UND D)) UND NICHT X
Als Alternative zu dem, was oben beschrieben wurde, könnte diese Funktion auch durch Kaskadieren eines Zwei-Bit-Addierers und zweier Drei-Bit-Addierer konstruiert werden. Der erste Addierer addiert A und B. Der zweite Addierer addiert das Ergebnis des ersten Addierers zu C. Und der dritte Addierer addiert das Ergebnis des zweiten Addierers zu D und so weiter für eine beliebige Anzahl von Eingaben.
Ich habe die Lösung herausgefunden, die dem ähnelt, was user96037 am Ende seiner Antwort sagt. Aufgrund des begrenzten verfügbaren Platzes im Lösungsbereich ist die Verwendung von Addierern erforderlich, und es scheint, dass zwei Addierer wie folgt benötigt werden:
Die grundlegende Strategie hier ist also, dass Sie die Bitzahlen für die Eingänge 1 + 2 und 3 + 4 zuerst separat generieren, was mit nur jeweils 2 Gattern (XOR und AND) möglich ist. Jetzt haben Sie zwei 2-Bit-Werte. Sie können diese beiden Werte dann mit einem Paar verketteter Volladdierer addieren. Der Übertrag in den ersten Addierer muss auf 0 gesetzt werden. Insgesamt gibt es also 6 Komponenten plus die 0 in.
Eugen Sch.
NAND
oderNOR
nur aus Gattern entworfen werden ...Tyler Durden
Eugen Sch.
WasRoughBeast
Tyler Durden
Eugen Sch.
Tyler Durden
Eugen Sch.
Eugen Sch.
Tyler
Tyler Durden
Tyler Durden
Tyler Durden
Eugen Sch.
Transistor
Eugen Sch.