Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Logikgatter und Wahrheitstabellen

Nach dieser Lektion: Ich kann eine Wahrheitstabelle lesen und das Gatter nennen, das sie ergibt.

Lektion, 50 Min.5 BefehleDigitaldesign-Lab: Verilog, VHDL und yosys in einer privaten Ubuntu-VM

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

BegriffWas er bedeutetBeispiel
Biteine Stelle, die 0 oder 1 ist
Gatterein Baustein, der aus Bits ein Bit macht
Wahrheitstabelleeine Tabelle mit dem Ergebnis für jede Eingabe
UNDergibt 1, wenn beide Eingänge 1 sinda & b
ODERergibt 1, wenn mindestens ein Eingang 1 ista | b
XORergibt 1, wenn die Eingänge verschieden sinda ^ 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

abUNDODERXOR
00000
01011
10011
11110

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Tabelle von Python ausrechnen lassen

Code: python
# 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

Code: c
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

Die 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

Befehl
cd ~/hdl

Hier 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

Befehl
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.v

Hier 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

Befehl
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.v

Hier 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

Befehl
iverilog -o /tmp/gatter gatter.v gatter_tb.v

Hier 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

Befehl
vvp /tmp/gatter

Hier 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.

Über dieses Lab und seinen Quellcode: Digitaldesign-Lab: Verilog, VHDL und yosys in einer privaten Ubuntu-VM

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.