Menu
Coddy logo textTech

Logique de la machine à états

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 d'état au contrôleur de feux de circulation. La machine à états détermine quand passer d'un état à l'autre.

La logique de la machine à états contrôle quand et comment le feu de circulation change d'état.

Séquence d'États

Vert → Jaune → Rouge → Vert → …

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

Ce qu'il faut faire :

  1. Ajoutez un bloc always @(posedge clk or posedge reset)
  2. Lors de la réinitialisation (reset), réglez state sur Rouge (2)
  3. Lorsque next est à 1, passez à l'état suivant :
    • Si l'état est Vert (0) : passez à Jaune
    • Si l'état est Jaune (1) : passez à Rouge
    • Si l'état est Rouge (2) : passez à 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 de sortie
  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'état (sans temporisation)
  // 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