Die Testbench schreiben
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 45 von 90.
Aufgabe
Jetzt müssen wir testen, ob der Halbaddierer korrekt funktioniert. Füge den Testcode innerhalb des initial-Blocks hinzu.
Wichtig: Bevor du den Test hinzufügst, musst du die Modul-Ports ändern, damit der Test ordnungsgemäß funktionieren kann.
Was zu tun ist:
Schritt 1: Ändere die Port-Deklarationen
- Ändere
input a, bzureg a, b(verwende das Semikolon) - Ändere
output sum, carryzuwire sum, carry(verwende das Semikolon) - Entferne die Modul-Ports vollständig (das Modul sollte keine
( )haben)
Schritt 2: Füge den Testcode hinzu
- Füge einen
initial begin-Block hinzu - Füge innerhalb des Blocks Folgendes hinzu:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- Füge
$finish;hinzu, um den Test zu beenden - Füge
endhinzu, um den initial-Block zu schließen
Probier es selbst
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen