Menu
Coddy logo textTech

Machine à états

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 88 sur 90.

challenge icon

Défi

Une machine à états est un circuit qui peut se trouver dans l'un de plusieurs états. Pour le UART, nous avons différents états pour chaque bit : idle, start, bits de données 0 à 7, et stop. Le compteur de bits (cnt) nous indique dans quel état nous nous trouvons. En fonction de cnt, nous décidons quelle valeur envoyer sur la ligne tx.

Vous disposez du compteur de bits de la leçon précédente. Vous devez le modifier pour qu'il fonctionne comme un émetteur UART.

Valeurs de bit à envoyer (pour la lettre 'A')

cntvaleur tx
01
10
21
30
40
50
60
70
81
90
101

Ce qu'il faut faire

  1. Ajoutez une entrée nommée start
  2. Ajoutez un reg de sortie nommé tx
  3. Dans le bloc initial, définissez tx = 1 (idle haut)
  4. Modifiez la logique du compteur :
    • Lorsque cnt == 0 et start == 1, définissez cnt <= 1 (commencer à transmettre)
    • Lorsque cnt est compris entre 1 et 9, incrémentez : cnt <= cnt + 1
    • Lorsque cnt == 10, réinitialisez à 0

Essayez vous-même

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

Toutes les leçons de Fondamentaux