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 des nombreux états possibles. Pour l'UART, nous avons différents états pour chaque bit : repos (idle), départ (start), bits de données 0-7 et arrêt (stop). Le compteur de bits (cnt) nous indique dans quel état nous nous trouvons. En fonction de cnt, nous décidons de la 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 bits à envoyer (pour la lettre 'A')

cntvaleur tx
01
10
21
30
40
50
60
70
80
91
101

Ce qu'il faut faire

  1. Ajoutez une entrée nommée start
  2. Ajoutez un registre de sortie (output reg) nommé tx
  3. Dans le bloc initial, réglez tx = 1 (état de repos haut)
  4. Modifiez la logique du compteur :
    • Lorsque cnt == 0 et start == 1, réglez cnt <= 1 (commencer la transmission)
    • 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