Définition des états
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 79 sur 90.
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ère | Sortie | Signification |
|---|---|---|
| Rouge | red = 1 | Arrêt |
| Jaune | yellow = 1 | Attention |
| Vert | green = 1 | Partez |
Les feux cyclent dans cet ordre :
Green → Yellow → Red → Green → …
Séquence de Temporisation
| État | Durée | État Suivant |
|---|---|---|
| Vert | 30 secondes | Jaune |
| Jaune | 10 secondes | Rouge |
| Rouge | 40 secondes | Vert |
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 :
| État | Lumière | Code |
|---|---|---|
| Vert | Lumière verte ALLUMÉE | 2'b00 |
| Jaune | Lumière jaune ALLUMÉE | 2'b01 |
| Rouge | Lumière rouge ALLUMÉE | 2'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
- Déclarez un registre de 2 bits appelé
state - Déclarez un registre de 6 bits appelé
counter(pour une temporisation allant jusqu'à 40 secondes) - 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
- Lorsque l'état est 0 :
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
endmoduleToutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états