Menu
Coddy logo textTech

State Machine

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 88 de 90.

challenge icon

Desafío

Una máquina de estados es un circuito que puede estar en uno de varios estados. Para UART, tenemos diferentes estados para cada bit: idle, start, bits de datos del 0 al 7 y stop. El contador de bits (cnt) nos indica en qué estado estamos. Según cnt, decidimos qué valor enviar por la línea tx.

Tienes el contador de bits de la lección anterior. Debes modificarlo para que funcione como un transmisor UART.

Valores de bits que se deben enviar (para la letra 'A')

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

Qué hacer

  1. Añade una entrada llamada start
  2. Añade una salida reg llamada tx
  3. En el bloque initial, establece tx = 1 (idle en alto)
  4. Cambia la lógica del contador:
    • Cuando cnt == 0 y start == 1, establece cnt <= 1 (inicia la transmisión)
    • Cuando cnt esté entre 1 y 9, incrementa: cnt <= cnt + 1
    • Cuando cnt == 10, restablece a 0

Pruébalo tú mismo

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 las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online