Menu
Coddy logo textTech

Testbench

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 90 von 90.

challenge icon

Aufgabe

Ein testbench stellt deinem Design Eingaben bereit und erstellt eine Waveform-Datei. Es hat keine eigenen Ports.

Deine Aufgabe

Erstelle einen testbench, der:

  1. reg für clk, start und data_in (8 Bit) deklariert
  2. wire für tx und wire [3:0] für cnt deklariert
  3. das uart_tx-Modul instanziiert und alle Ports verbindet: .clk, .start, .data_in, .tx, .cnt
  4. einen Takt erzeugt (Umschalten alle 5 Zeiteinheiten)
  5. innerhalb eines initial-Blocks:
    • eine Waveform-Datei namens uart.vcd mit $dumpfile und $dumpvars erstellt
    • zur Zeit 0 clk = 0, start = 1 und data_in = 8'b01000001 setzt
    • start nach 10 Zeiteinheiten freigibt (start = 0)
    • 200 Zeiteinheiten lang läuft

Öffne nach dem Ausführen des testbench 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

endmodule

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler