Menu
Coddy logo textTech

Máquina de estados

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: inactivo (idle), inicio (start), bits de datos 0-7 y parada (stop). El contador de bits (cnt) nos indica en qué estado nos encontramos. Basándonos en cnt, decidimos qué valor enviar por la línea tx.

Ya tienes el contador de bits de la lección anterior. Necesitas modificarlo para que funcione como un transmisor UART.

Valores de bits a enviar (para la letra 'A')

cntvalor tx
01
10
21
30
40
50
60
70
80
91
101

Qué hacer

  1. Añade una entrada llamada start
  2. Añade un registro de salida (output reg) llamado tx
  3. En el bloque initial, establece tx = 1 (inactivo en alto)
  4. Cambia la lógica del contador:
    • Cuando cnt == 0 y start == 1, establece cnt <= 1 (comenzar transmisión)
    • Cuando cnt esté entre 1 y 9, increméntalo: cnt <= cnt + 1
    • Cuando cnt == 10, reinícialo 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