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 o UART, temos estados diferentes para cada bit: ocioso (idle), início (start), bits de dados 0-7 e parada (stop). O contador de bits (cnt) nos diz em qual estado estamos. Com base no 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 Bit para Enviar (para a letra 'A')

cntvalor de tx
01
10
21
30
40
50
60
70
80
91
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 (ocioso em nível alto)
  4. Altere a lógica do contador:
    • Quando cnt == 0 e start == 1, defina cnt <= 1 (iniciar transmissão)
    • Quando cnt estiver entre 1 e 9, incremente: cnt <= cnt + 1
    • Quando cnt == 10, resete 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