Menu
Coddy logo textTech

Máquina de estados

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 88 de 90.

challenge icon

Desafio

Uma máquina de estados é um circuito que pode estar em um de vários estados. Para UART, temos estados diferentes para cada bit: idle, start, data bits 0-7, e stop. O contador de bits (cnt) nos diz em qual estado estamos. Com base em cnt, decidimos qual valor enviar na linha tx.

Você tem o contador de bits da lição anterior. Você precisa modificá-lo para funcionar como um transmissor UART.

Valores de Bits a Enviar (para a letra 'A')

cnttx value
01
10
21
30
40
50
60
70
81
90
101

O que fazer

  1. Adicione uma entrada chamada start
  2. Adicione uma saída reg chamada tx
  3. No bloco initial, defina tx = 1 (idle em HIGH)
  4. Altere a lógica do contador:
    • Quando cnt == 0 e start == 1, defina cnt <= 1 (inicie a transmissão)
    • Quando cnt estiver entre 1 e 9, incremente: cnt <= cnt + 1
    • Quando cnt == 10, faça o reset para 0

Experimente você mesmo

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

  initial begin
    cnt = 0;
  end

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

endmodule

Todas as lições de Fundamentos