Testbench
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 90 von 90.
Aufgabe
Eine Testbench stellt deinem Design Eingaben bereit und erstellt eine Wavedatei. Sie hat keine eigenen Ports.
Deine Aufgabe
Erstelle eine Testbench, die:
regfürclk,startunddata_in(8 Bit) deklariertwirefürtxundwire [3:0]fürcntdeklariert- das Modul
uart_txinstanziiert und alle Ports verbindet:.clk,.start,.data_in,.tx,.cnt - einen Takt erzeugt (Umschalten alle 5 Zeiteinheiten)
- innerhalb eines
initial-Blocks:- eine Wavedatei namens
uart.vcdmit$dumpfileund$dumpvarserstellt - zum Zeitpunkt 0
clk = 0,start = 1unddata_in = 8'b01000001setzt startnach 10 Zeiteinheiten freigibt (start = 0)- dann weitere 200 Zeiteinheiten wartet und
$finishaufruft (sodass die Simulation zum Zeitpunkt 210 endet)
- eine Wavedatei namens
Öffne nach dem Ausführen der Testbench die Wavedatei, um das Signal tx 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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler