Les machines à états finis (FSM) Les machines à états finis Les machines à état

Les machines à états finis (FSM) Les machines à états finis Les machines à états finis Les machines à états finis permettent de modéliser des circuits séquentiels complexes. 198 AU 2021/2022 Les machines à états finis 199 AU 2021/2022 • FSM Finite State Machine • Outil pour représenter un système séquentiel • On définit différents états dans lesquels peut être le système • Le passage d’un état à un autre s’effectue si une condition sur les entrées est remplie • Les sorties du système dépendent de l’état courant (machine de Moore) ou de l’état courant et des entrées (machine de Mealy) • Dans le cas d’une FSM synchrone, la valeur des entrées est analysée sur front d’horloge Les machines à états finis 200 AU 2021/2022 Circuit d'excitation Calcul combinatoire des états FUTURS du système : G c D Q Circuit de sortie F Entrées Horloge X(t) X(t+1) S(t) E(t) S(t) = F(X(t)) X(t + 1) = G[E(t), X(t)] • Machine de Moore Les machines à états finis 201 AU 2021/2022 • Machine de Mealy Circuit d'excitation Calcul combinatoire des états FUTURS du système : G c D Q Circuit de sortie F Entrées Horloge X(t) X(t+1) S(t) E(t) S(t) = F[X(t), E(t)] X(t + 1) = G[E(t), X(t)] Les machines à états finis 202 AU 2021/2022 Exemple : détecteur de séquence La porte ne s’ouvre que si l’on tape la séquence ‘1’ ‘2’ ‘3’ •Etat 0 : le système attend un ‘1’ en entrée, la porte est fermée (P=0) •Etat 1 : le système attend un ‘2’ en entrée, la porte est fermée (P=0) •Etat 2 : le système attend un ‘3’ en entrée, la porte est fermée (P=0) •Etat 3 : la bonne séquence a été entrée, la porte est ouverte (P=1) Les machines à états finis 203 AU 2021/2022 Exemple : détecteur de séquence E0 E2 E3 Entrée = ‘1’ Entrée = ‘2’ Entrée = ‘3’ Entrée ≠‘2’ Entrée ≠‘3’ 1=1 Entrée ≠‘1’ P=0 E1 P=0 P=0 P=1 On représente une machine à état par un graphe d’état Les machines à états finis 204 AU 2021/2022 Graphe d’état Définition : •Un diagramme ou graphe d’états permet d’avoir une représentation graphique d’un système séquentiel. •Il est constitué par l’énumération de tous les états possible du système. •Un seul de ces états peut être actif à la fois. •A chaque état est associé la valeur de la (ou des) grandeur(s) de sortie. Transition Etat 1 2 s=1 s=0 Valeur de la (ou des) sortie(s) Les machines à états finis 205 AU 2021/2022 Codage des états • Codage binaire Le numéro de l’état est codé en binaire état 0 = "00", état 1 = "01", état 2 = "10", état 3 = "11" • One-Hot-One Chaque état correspond à 1 bit d’un même bus état 0 * state = "0001", état 1 * state = "0010", état 2 * state = "0100", état 3 * state = "1000" • One-Hot-Zero Même principe que One-Hot-One mais l’état 0 se code "0000" Les machines à états finis 206 AU 2021/2022 Les machines à états finis 207 AU 2021/2022 Quelques règles à respecter pour la synthèse de FSM : * Déclarer un type énumérant tous les états de la machine * Affecter des valeurs par défaut au sorties de la machine à états pour éviter la génération de latches * Prévoir une clause par défaut dans le cas ou le circuit se trouve dans un état non utilisé * Séparer la machine à états des fonctions logiques * Si le résultat d’une opération est utilisé par plusieurs états, il faut définir l’opération à l’extérieure de la machine à états * Utiliser un reset (synchrone ou asynchrone) Les machines à états finis 208 AU 2021/2022 Description VHDL Les FSM sont composées de trois parties: deux fonctions combinatoires et un registre. Chacune de ces parties peut être décrite séparément ou de manière composée avec une autre . Les états peuvent être identifiés explicitement à l'aide d'un type énuméré approprié ! Exemple : TYPE state IS (lecture, incrément, décode, exécute) ; Les machines à états finis 209 AU 2021/2022 • Description à trois parties ARCHITECTURE FSM3p of exemple IS TYPE state IS (lecture, incrément, décode, exécute) ; signal etat, etat_futur : state ; BEGIN Pr : process(horloge) ..... IF horloge'event .... ...... etat <= etat_futur ; ps : process(etat) ..... S <= .... pe : process(E, etat) ...... etat_futur <= ... Pe c Pr Ps Horloge etat etat_futur S E Les machines à états finis 210 AU 2021/2022 Commande d'essuie glace On considère un essuie glace avec pompe de lavage. Le maintien de la commande E active le moteur M de balayage simultanément au moteur de pompe P. La libération de E arrête la pompe P. Le moteur M reste activé pendant deux cycles complet de balayage. Le système est équipé d'un contact de fin de course F. Représenter le graphe de la machine d'état du dispositif. Décrire la machine en VHDL. Les machines à états finis 211 AU 2021/2022 • Commande d'essuie glace cyc_2 M , !P cyc_1 M, !P lavage M, P repos !M, !P ! F F E ! F F E E !E E !E Les machines à états finis 212 AU 2021/2022 Type state is (repos, lavage, cyc_1, cyc_2) signal etat, etat_f : state; P1 : process(clk) begin if clk'event and clk='1' then etat <= etat_f; end if; end process P1; P2 : process(etat) begin if etat= repos then M <= '0'; P <= '0'; elsif etat = lavage then M <= '1'; P <= '1'; else M <= '1'; P <= '0'; end if; end process P2; Description des sorties Registre Les machines à états finis 213 AU 2021/2022 P3 : process(F, E, etat) begin case etat is when repos => if E='1' then etat_f <= lavage ; else etat_f <= etat; end if; when lavage => if E = '0' then etat_f <= cyc_1 ; else etat_f <= etat; end if; when cyc_1 => if E ='1' then etat_f <= lavage ; elsif F= '1' then etat_f <= cyc_2 ; else etat_f <= cyc_1; end if; when cyc_2 => if E = '1' then etat_f <= lavage ; elsif F= '1' then etat_f <= repos ; else etat_f <= etat; end if; end process P3; Circuit d'excitation Les machines à états finis 214 AU 2021/2022 Simplification de l'écriture Il est possible de regrouper les parties combinatoires dans un processus, ce qui allège l'écriture au détriment de la lisibilité. Pour l'exemple cela donne : Type state is (repos, lavage, cyc_1, cyc_2) signal etat, etat_f : state; reg : process(clk) begin if clk'event and clk='1' then etat <= etat_f; end if; end process reg ; Les machines à états finis 215 AU 2021/2022 P3 : process(F, E, etat) begin case etat is when repos => M <= '0'; P <= '0' if E='1' then etat_f <= lavage ; else etat_f <= etat; end if; when lavage => M <= '1'; P <= '1'; if E = '0' then etat_f <= cyc_1 ; else etat_f <= etat; end if; when cyc_1 => M <= '1'; P <= '0'; if E ='1' then etat_f <= lavage ; elsif F= '1' then etat_f <= cyc_2 ; else etat_f <= etat; end if; when cyc_2 => M <= '1'; P <= '0'; if E = '1' then etat_f <= lavage ; elsif F= '1' then etat_f <= repos ; else etat_f <= etat; end if; end process P3; Etats de sorties Etat futur Les machines à états finis 216 AU 2021/2022 Autre simplification: Créer un registre à la fin du circuit d’excitation. Pour l'exemple cela donne : Type state is (repos, lavage, cyc_1, cyc_2) signal etat : state; -- pas de process registre P2 : process(etat) begin if etat= repos then M <= '0'; P <= '0'; elsif etat = lavage then M <= '1'; P <= '1'; else M <= '1'; P <= '0'; end if; end process P2; Etats de sorties Les machines à états finis 217 AU 2021/2022 P3 : process(F, E, etat) Begin if clk'event and clk='1' then case etat is when repos => if E='1' then etat <= lavage ; else etat <= etat; end if; when lavage => if E = '0' then etat <= cyc_1 ; else etat <= etat; end if; when cyc_1 => if E ='1' then etat <= lavage ; elsif F= '1' then etat <= cyc_2 ; else etat <= etat; end if; when cyc_2 => if E = '1' then etat <= lavage ; elsif F= '1' then etat <= repos ; else etat <= etat; end if; end case; end process P3; Description du registre d’état Les packages Paquetages 219 AU 2021/2022 Paquetage STANDARD 220 AU 2021/2022 Le paquetage STANDARD déclare les types et sous-types prédéfinis du langage, la fonction now (qui retourne le temps simulé courant) et l'attribut foreign. Les déclarations du paquetage STANDARD sont automatiquement visibles dans toute unité de conception. Paquetage TEXTIO 221 AU 2021/2022 Le paquetage prédéfini TEXTIO déclare uploads/Industriel/ cours-vhdl-s4.pdf

  • 11
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager