Menu
Coddy logo textTech

Définition des états

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 79 sur 90.

challenge icon

Défi

Un contrôleur de feu de circulation est une machine à états finis qui alterne entre différents états de feux (Rouge, Jaune, Vert) selon des intervalles de temps spécifiques. Une machine à états finis (FSM) est un circuit qui peut se trouver dans un nombre limité d'états. Elle passe d'un état à un autre en fonction d'entrées ou d'un chronométrage.

Dans ce projet, vous allez construire un contrôleur de feu de circulation pour une intersection simple. Le feu de circulation possède trois sorties :

FeuOutputSignification
Rougered = 1Arrêt
Jauneyellow = 1Attention
Vertgreen = 1Partez

Les feux alternent dans cet ordre :

Green → Yellow → Red → Green → …

Séquence de chronométrage

stateDuréeÉtat suivant
Vert30 secondesJaune
Jaune10 secondesRouge
Rouge40 secondesVert

Dans cette leçon, vous allez définir les états du contrôleur de feu de circulation.

Un feu de circulation a trois états possibles :

stateFeuCode
VertFeu vert ALLUMÉ2'b00
JauneFeu jaune ALLUMÉ2'b01
RougeFeu rouge ALLUMÉ2'b10

Complétez le module en ajoutant les parties manquantes.

Ce qu'il faut faire :

Définir le codage des états : 0=Green, 1=Yellow, 2=Red

  1. Declare un register de 2 bits nommé state
  2. Declare un register de 6 bits nommé counter (pour un chronométrage allant jusqu'à 40 secondes)
  3. Ajoutez les assignments de sortie :
    • Lorsque state est 0 : green = 1, yellow = 0, red = 0
    • Lorsque state est 1 : green = 0, yellow = 1, red = 0
    • Lorsque state est 2 : green = 0, yellow = 0, red = 1

Essayez vous-même

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: Tâche 1 - Déclarer le registre d'état (2 bits)
  
  // TODO: Tâche 2 - Déclarer le registre compteur (6 bits)
  

  // TODO: Tâche 3 - Affectations des sorties en utilisant case (state)
  // état 0 : green=1, yellow=0, red=0
  // état 1 : green=0, yellow=1, red=0
  // état 2 : green=0, yellow=0, red=1

endmodule

Toutes les leçons de Fondamentaux