Menu
CoddyTech

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