Testbench
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 90 von 90.
Aufgabe
Ein testbench liefert Eingaben für Ihr Design und erstellt eine Waveform-Datei. Er hat selbst keine Ports.
Ihre Aufgabe
Erstellen Sie einen Testbench, der:
regfürclk,startunddata_in(8 Bits) deklariertwirefürtxundwire [3:0]fürcntdeklariert- Das Modul
uart_txinstanziiert und alle Ports verbindet:.clk,.start,.data_in,.tx,.cnt - Einen Takt generiert (Umschalten alle 5 Zeiteinheiten)
- Innerhalb eines
initial-Blocks:- Eine Waveform-Datei namens
"uart.vcd"mit$dumpfileund$dumpvarserstellt clk = 0,start = 1,data_in = 8'b01000001zum Zeitpunkt 0 setztstartnach 10 Zeiteinheiten freigibt (start = 0)- Für 200 Zeiteinheiten läuft
- Eine Waveform-Datei namens
Öffnen Sie nach dem Ausführen des Testbenchs die Waveform, um das tx-Signal zu überprüfen.
Probier es selbst
module uart_tx (
input clk,
input start,
input [7:0] data_in,
output reg tx,
output reg [3:0] cnt
);
reg [9:0] shift_reg;
initial begin
cnt = 0;
tx = 1;
shift_reg = 0;
end
always @(posedge clk) begin
if (cnt == 0 && start) begin
shift_reg <= {1'b1, data_in, 1'b0};
cnt <= 1;
end
else if (cnt > 0 && cnt < 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= cnt + 1;
end
else if (cnt == 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= 0;
end
end
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