Menu
Coddy logo textTech

State Machine

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 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.

Tu disposes du compteur de bits de la leçon précédente. Tu dois le modifier pour qu’il fonctionne comme un émetteur UART.

Valeurs des bits à envoyer (pour la lettre 'A')

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

Ce qu’il faut faire

  1. Ajouter une entrée appelée start
  2. Ajouter une sortie reg appelée tx
  3. Dans le bloc initial, définir tx = 1 (niveau haut au repos)
  4. Modifier la logique du compteur :
    • Lorsque cnt == 0 et start == 1, définir cnt <= 1 (commencer la transmission)
    • Lorsque cnt est compris entre 1 et 9, l’incrémenter : cnt <= cnt + 1
    • Lorsque cnt == 10, le réinitialiser à 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

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