Zwei Schalter, ein Treppenhauslicht
Ein Logikgatter ist ein kleiner Baustein, der aus Bits ein neues Bit macht. Eine Wahrheitstabelle zeigt, was ein Gatter für jede mögliche Eingabe ausgibt. Jeder Chip besteht aus Millionen solcher Gatter.
Im Treppenhaus schalten Sie das Licht unten ein und oben wieder aus. Jeder der beiden Schalter dreht das Ergebnis um. Genau so verhält sich das Gatter XOR.
Am Ende dieser Lektion
Notiz
Ich kann eine Wahrheitstabelle lesen und das Gatter nennen, das sie ergibt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Bit | eine Stelle, die 0 oder 1 ist | |
| Gatter | ein Baustein, der aus Bits ein Bit macht | |
| Wahrheitstabelle | eine Tabelle mit dem Ergebnis für jede Eingabe | |
| UND | ergibt 1, wenn beide Eingänge 1 sind | a & b |
| ODER | ergibt 1, wenn mindestens ein Eingang 1 ist | a | b |
| XOR | ergibt 1, wenn die Eingänge verschieden sind | a ^ b |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Gatter macht aus zwei Bits ein Bit
Ein Gatter hat meist zwei Eingänge und einen Ausgang. Es rechnet nicht mit Zahlen, sondern mit Wahrheit: 1 steht für wahr, 0 für falsch.
Bei zwei Eingängen gibt es nur vier Möglichkeiten. Deshalb passt die ganze Antwort eines Gatters in eine kleine Wahrheitstabelle mit vier Zeilen.
Die drei Gatter nebeneinander
| a | b | UND | ODER | XOR |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Tabelle von Python ausrechnen lassen
# Wahrheitstabelle fuer UND, ODER und XOR.
print("a b | und oder xor")
for a in [0, 1]:
for b in [0, 1]:
und = a & b
oder = a | b
xor = a ^ b
print(a, b, "|", und, " ", oder, " ", xor)
# Aendern Sie die Zeile mit und in: und = 1 - (a & b)
# Welche Tabelle ergibt das? Fuehren Sie erneut aus.
In Verilog ist ein Gatter eine Zeile
Eine Schaltung beschreiben Sie in einer Hardwarebeschreibungssprache. Verilog ist eine davon. Ein Modul ist eine Schaltung mit Eingängen und Ausgängen.
Eine Zeile assign legt fest, wie ein Ausgang aus den Eingängen entsteht. & ist UND, | ist ODER und ^ ist XOR. Ein Testbench ist ein zweites Modul, das alle Eingaben durchprobiert und die Tabelle druckt.
Das Modul gatter.v mit drei Gattern
module gatter(input a, input b, output und, output oder, output exoder);
assign und = a & b;
assign oder = a | b;
assign exoder = a ^ b;
endmoduleDie Datei schreiben, übersetzen, laufen lassen
Der erste Befehl wechselt in Ihren Ordner hdl. Die nächsten zwei schreiben gatter.v und gatter_tb.v. Jedes Argument von printf wird eine Zeile der Datei.
iverilog übersetzt beide Dateien in ein Programm und druckt nichts, wenn es klappt. vvp führt das Programm aus. Die Datei gatter.v ist neu und gehört nicht zur Bewertung des Labs.
In den Ordner hdl wechseln
cd ~/hdlHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Modul gatter.v schreiben
printf '%s\n' 'module gatter(input a, input b, output und, output oder, output exoder);' ' assign und = a & b;' ' assign oder = a | b;' ' assign exoder = a ^ b;' 'endmodule' > gatter.vHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Testbench gatter_tb.v schreiben
printf '%s\n' 'module gatter_tb;' ' reg a, b;' ' wire und, oder, exoder;' ' gatter dut(.a(a), .b(b), .und(und), .oder(oder), .exoder(exoder));' ' integer i;' ' initial begin' ' $display(" a b | und oder xor");' ' for (i = 0; i < 4; i = i + 1) begin' ' {a, b} = i;' ' #1 $display(" %b %b | %b %b %b", a, b, und, oder, exoder);' ' end' ' end' 'endmodule' > gatter_tb.vHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beide Dateien übersetzen
iverilog -o /tmp/gatter gatter.v gatter_tb.vHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Simulation starten
vvp /tmp/gatterHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, ODER heiße „entweder das eine oder das andere“. Das Gatter ODER ergibt aber auch 1, wenn beide Eingänge 1 sind. Nur XOR schließt diesen Fall aus. Sagt eine Regel „höchstens eins“, brauchen Sie XOR.