Menu
Coddy logo textTech

Definición de los estados

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 79 de 90.

challenge icon

Desafío

Un controlador de semáforo es una máquina de estados finitos que alterna entre diferentes estados de luz (Rojo, Amarillo, Verde) con intervalos de tiempo específicos. Una máquina de estados finitos (FSM) es un circuito que puede estar en uno de un número limitado de estados. Cambia de un estado a otro basándose en entradas o en el tiempo.

En este proyecto, construirás un controlador de semáforo para una intersección simple. El semáforo tiene tres salidas:

LuzSalidaSignificado
Rojored = 1Parar
Amarilloyellow = 1Precaución
Verdegreen = 1Avanzar

Las luces ciclan en este orden:

Green → Yellow → Red → Green → …

Secuencia de Tiempo

EstadoDuraciónSiguiente Estado
Green30 segundosYellow
Yellow10 segundosRed
Red40 segundosGreen

En esta lección, definirás los estados para el controlador de semáforo.

Un semáforo tiene tres estados posibles:

EstadoLuzCódigo
GreenLuz verde encendida2'b00
YellowLuz amarilla encendida2'b01
RedLuz roja encendida2'b10

Completa el módulo añadiendo las partes que faltan.

Qué hacer:

Define la codificación de estados: 0=Green, 1=Yellow, 2=Red

  1. Declara un registro de 2 bits llamado state
  2. Declara un registro de 6 bits llamado counter (para tiempos de hasta 40 segundos)
  3. Añade las asignaciones de salida:
    • Cuando el estado es 0: green = 1, yellow = 0, red = 0
    • Cuando el estado es 1: green = 0, yellow = 1, red = 0
    • Cuando el estado es 2: green = 0, yellow = 0, red = 1

Pruébalo tú mismo

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: Tarea 1 - Declarar el registro de estado (2 bits)
  
  // TODO: Tarea 2 - Declarar el registro del contador (6 bits)
  

  // TODO: Tarea 3 - Asignaciones de salida usando case (state)
  // estado 0: green=1, yellow=0, red=0
  // estado 1: green=0, yellow=1, red=0
  // estado 2: green=0, yellow=0, red=1

endmodule

Todas las lecciones de Fundamentos