Menu
Coddy logo textTech

Lógica de la máquina de estados

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

challenge icon

Desafío

En esta lección, agregarás la lógica de transición de estados al controlador del semáforo. La máquina de estados determina cuándo pasar de un estado al siguiente.

La lógica de la máquina de estados controla cuándo y cómo el semáforo cambia de estado.

Secuencia de Estados

Green → Yellow → Red → Green → …

Tu tarea es agregar la lógica de la máquina de estados al módulo.

Qué hacer:

  1. Agrega un bloque always @(posedge clk or posedge reset)
  2. Al activarse el reset, establece state a Red (2)
  3. Cuando next sea 1, muévete al siguiente estado:
    • Si el estado es Green (0): cambia a Yellow
    • Si el estado es Yellow (1): cambia a Red
    • Si el estado es Red (2): cambia a Green

Pruébalo tú mismo

module traffic_light (
  input clk,
  input reset,
  input next,           // Disparador para cambiar de estado
  output reg red,
  output reg yellow,
  output reg green
);

  reg [1:0] state;

  // Asignaciones de salida
  always @(*) begin
    case (state)
      0: begin green = 1; yellow = 0; red = 0; end
      1: begin green = 0; yellow = 1; red = 0; end
      2: begin green = 0; yellow = 0; red = 1; end
      default: begin green = 0; yellow = 0; red = 1; end
    endcase
  end

  // TODO: Agregar la lógica de la máquina de estados (sin temporización)
  // always @(posedge clk or posedge reset) begin
  //   if (reset) begin
  //     state <= 2;
  //   end else if (next) begin
  //     case (state)
  //       0: state <= 1;
  //       1: state <= 2;
  //       2: state <= 0;
  //     endcase
  //   end
  // end

endmodule

Todas las lecciones de Fundamentos