Menu
Coddy logo textTech

State Machine Logic

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 80 sur 90.

challenge icon

Défi

Dans cette leçon, vous allez ajouter la logique de transition de state au contrôleur de feux de signalisation. La machine à états détermine quand passer d’un state au suivant.

La logique de la machine à états contrôle quand et comment le feu de signalisation change de state.

Séquence des states

Vert → Jaune → Rouge → Vert → …

Votre tâche consiste à ajouter la logique de la machine à états au module.

À faire :

  1. Add un bloc always @(posedge clk or posedge reset)
  2. Lors de la réinitialisation, définir state sur Rouge (2)
  3. Lorsque next vaut 1, passer au state suivant :
    • Si state est Vert (0) : change en Jaune
    • Si state est Jaune (1) : change en Rouge
    • Si state est Rouge (2) : change en Vert

Essayez vous-même

module traffic_light (
  input clk,
  input reset,
  input next,           // Déclencheur pour changer d'état
  output reg red,
  output reg yellow,
  output reg green
);

  reg [1:0] state;

  // Affectations des sorties
  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: Ajouter la logique de la machine d'états (sans timing)
  // 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

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne