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 feux de circulation est une machine à états finis qui alterne entre différents états de lumière (Rouge, Jaune, Vert) avec des intervalles de temps spécifiques. Une machine à états finis (FSM) est un circuit qui peut se trouver dans l'un d'un nombre limité d'états. Elle passe d'un état à un autre en fonction des entrées ou du temps.

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

LumièreSortieSignification
Rougered = 1Arrêt
Jauneyellow = 1Attention
Vertgreen = 1Partez

Les feux cyclent dans cet ordre :

Green → Yellow → Red → Green → …

Séquence de Temporisation

ÉtatDuréeÉtat Suivant
Vert30 secondesJaune
Jaune10 secondesRouge
Rouge40 secondesVert

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

Un feu de circulation a trois états possibles :

ÉtatLumièreCode
VertLumière verte ALLUMÉE2'b00
JauneLumière jaune ALLUMÉE2'b01
RougeLumière rouge ALLUMÉE2'b10

Complétez le module en ajoutant les parties manquantes.

Ce qu'il faut faire :

Définir l'encodage des états : 0=Green, 1=Yellow, 2=Red

  1. Déclarez un registre de 2 bits appelé state
  2. Déclarez un registre de 6 bits appelé counter (pour une temporisation allant jusqu'à 40 secondes)
  3. Ajoutez les affectations de sortie :
    • Lorsque l'état est 0 : green = 1, yellow = 0, red = 0
    • Lorsque l'état est 1 : green = 0, yellow = 1, red = 0
    • Lorsque l'état 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 du compteur (6 bits)
  

  // TODO: Tâche 3 - Affectations de sortie 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