Menu
Coddy logo textTech

State Machine Logic

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, añadirás la lógica de transición de state 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

Verde → Amarillo → Rojo → Verde → …

Tu tarea es añadir la lógica de la máquina de estados al módulo.

Qué hacer:

  1. Añade un bloque always @(posedge clk or posedge reset)
  2. Al reiniciar, establece state en Rojo (2)
  3. Cuando next sea 1, pasa al siguiente estado:
    • Si state es Verde (0): change a Amarillo
    • Si state es Amarillo (1): change a Rojo
    • Si state es Rojo (2): change a Verde

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: Añadir 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

Practica por tu cuenta: Compilador de Verilog online