Menu
Coddy logo textTech

State Machine

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

challenge icon

Desafio

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

Você tem o contador de bit da lição anterior. É necessário modificá-lo para funcionar como um transmissor UART.

Valores de bit a enviar (para a letra 'A')

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

O que fazer

  1. Adicione um input chamado start
  2. Adicione um output reg chamado tx
  3. No bloco initial, defina tx = 1 (idle em nível alto)
  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, redefina 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

Pratique por conta própria: Compilador de Verilog online