Testbench
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 90 von 90.
Aufgabe
Ein Testbench legt Eingaben für dein Design an und erstellt eine Wellenformdatei. Es hat keine eigenen Ports.
Deine Aufgabe
Erstelle ein Testbench, das:
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 (alle 5 Zeiteinheiten umschalten)
- Innerhalb eines
initial-Blocks:- Mit
$dumpfileund$dumpvarseine Wellenformdatei mit dem Namenuart.vcderstellt clk = 0,start = 1unddata_in = 8'b01000001zum Zeitpunkt 0 setztstartnach 10 Zeiteinheiten freigibt (start = 0)- Dann weitere 200 Zeiteinheiten wartet und
$finishaufruft (damit die Simulation zum Zeitpunkt 210 endet)
- Mit
Öffne nach dem Ausführen des Testbenchs die Wellenform, 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