Menu
Coddy logo textTech

Banc de test

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 90 sur 90.

challenge icon

Défi

Un banc de test fournit des entrées à votre conception et crée un fichier de signaux. Il ne possède aucun port propre.

Votre tâche

Créez un banc de test qui :

  1. Déclare reg pour clk, start et data_in (8 bits)
  2. Déclare wire pour tx et wire [3:0] pour cnt
  3. Instancie le module uart_tx en connectant tous les ports : .clk, .start, .data_in, .tx, .cnt
  4. Génère une horloge (inversion toutes les 5 unités de temps)
  5. À l'intérieur d'un bloc initial :
    • Crée un fichier de signaux nommé uart.vcd à l'aide de $dumpfile et $dumpvars
    • Définit clk = 0, start = 1, data_in = 8'b01000001 au temps 0
    • Relâche start après 10 unités de temps (start = 0)
    • Attend ensuite 200 unités de temps supplémentaires et appelle $finish (la simulation se termine donc au temps 210)

Après avoir exécuté le banc de test, ouvrez le signal pour vérifier le signal tx.

Essayez vous-même

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

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne