Menu
Coddy logo textTech

Macchina a stati

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 88 di 90.

challenge icon

Sfida

Una macchina a stati è un circuito che può trovarsi in uno di diversi stati. Per UART, abbiamo stati diversi per ogni bit: inattivo, avvio, bit di dati da 0 a 7 e stop. Il contatore dei bit (cnt) ci indica in quale stato ci troviamo. In base a cnt, decidiamo quale valore inviare sulla linea tx.

Hai il contatore dei bit della lezione precedente. Devi modificarlo per farlo funzionare come trasmettitore UART.

Valori dei bit da inviare (per la lettera 'A')

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

Cosa fare

  1. Aggiungi un input chiamato start
  2. Aggiungi un output reg chiamato tx
  3. Nel blocco initial, imposta tx = 1 (livello alto in stato inattivo)
  4. Modifica la logica del contatore:
    • Quando cnt == 0 e start == 1, imposta cnt <= 1 (inizia la trasmissione)
    • Quando cnt è compreso tra 1 e 9, incrementalo: cnt <= cnt + 1
    • Quando cnt == 10, azzeralo a 0

Provalo tu

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

  initial begin
    cnt = 0;
  end

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

endmodule

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online