Master EEA
Ce document présente les concepts fondamentaux des machines à états finis (MEF) synchrones, leur modélisation, leurs caractéristiques et leur implémentation en VHDL. Il s’adresse aux étudiants en électronique numérique et informatique industrielle souhaitant comprendre la conception et la programmation de machines à états pour le contrôle des systèmes numériques.
D'après le document Master EEA
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Machine à Etats Finis, VHDL, Systèmes numériques · PDF · 22 pages
Afficher l'aperçu du document
Ce document présente les concepts fondamentaux des machines à états finis (MEF) synchrones, leur modélisation, leurs caractéristiques et leur implémentation en VHDL. Il s’adresse aux étudiants en électronique numérique et informatique industrielle souhaitant comprendre la conception et la programmation de machines à états pour le contrôle des systèmes numériques.
Système numérique : unité de traitement et unité de contrôle
Un système numérique se compose de deux parties principales :
- Unité de traitement des données : elle réalise des opérations combinatoires (additionneur, comparateur, unité arithmétique et logique - UAL) et séquentielles (registre à décalage, compteur).
- Unité de contrôle : elle synchronise les tâches à l’aide d’automates, séquenceurs ou machines à états finis, en générant les signaux de contrôle nécessaires.
Les données entrantes sont traitées par l’unité de traitement sous le contrôle de l’unité de contrôle, qui pilote le système via des signaux de commande.
Machines synchrones à états finis
Une machine à états finis (automate) est un opérateur séquentiel qui peut se trouver dans un état parmi un ensemble fini d’états. Le passage d’un état à l’autre se fait généralement sur un front d’horloge (montant ou descendant).
Les machines à états peuvent être classées en deux types principaux :
Machine de MOORE
- Les sorties dépendent uniquement de l’état interne.
- Avantages : structure régulière, synchronisme des sorties, filtrage des perturbations sur les entrées.
- Inconvénient : le temps de réponse est d’un cycle d’horloge.
Les équations caractéristiques sont :
Sortiest = f(Etatst) Etatst+1 = f(Entréest, Etatst)
Schéma fonctionnel :
- Un réseau combinatoire traite les entrées et l’état présent pour générer l’état futur.
- Des bascules D mémorisent l’état présent.
- Un réseau combinatoire de sorties génère les sorties en fonction de l’état présent.
Machine de MEALY
- Les sorties dépendent de l’état interne et des entrées.
- Avantages : simplification des sorties et réduction des temps de réponse.
- Inconvénient : asynchronisme des sorties, qui ne sont pas toujours synchrones avec l’horloge.
Les équations caractéristiques sont :
Sortiest = f(Etatst, Entréest) Etatst+1 = f(Etatst, Entréest)
Schéma fonctionnel :
- Le réseau combinatoire d’entrée calcule l’état futur.
- Le réseau combinatoire de sortie dépend de l’état présent et des entrées.
- Les bascules D mémorisent l’état présent.
Diagramme d’états et transitions
La représentation graphique d’une machine à états finis est le diagramme d’états. Chaque état est représenté par un nœud, et les transitions entre états sont conditionnées par des conditions logiques sur les entrées.
- Transition conditionnelle : prise en compte sur front d’horloge, dépend d’une condition sur les entrées. Il doit y avoir au moins deux transitions conditionnelles à partir d’un état.
- Transition inconditionnelle : prise en compte immédiatement sur front d’horloge, une seule transition inconditionnelle par état.
Les règles logiques à respecter dans un graphe d’états sont :
- Loi d’exclusion mutuelle : à partir d’un état, toutes les conditions doivent être définies.
- Une seule condition doit être vérifiée à la fois, garantissant qu’un seul état est activé.
Exemple : Codeur 1 vers 2 bits
Spécifications :
- Si din = 0 alors dout = 00
- Si din = 1 alors dout = 01 ou 10 en alternance
Ce codeur peut être implémenté soit en machine de MEALY soit en machine de MOORE.
Implantation VHDL d’une machine à états finis
La séquentialité est gérée par un process en VHDL. Les états sont représentés par un signal ou une variable :
- Signal : assignation différée, prise en compte à la fin du process, permet le synchronisme naturel entre état présent et état futur.
- Variable : assignation immédiate, prise en compte instantanée.
La structure conditionnelle CASE ... IS est utilisée pour gérer les transitions d’états.
Implantation d’une machine de MOORE en VHDL
Exemple avec un seul process :
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
CASE etat IS
WHEN etat1 =>
Sortie <= ...;
IF entree = ... THEN
etat <= etat2;
END IF;
...
END CASE;
END IF;
END PROCESS;
Cette architecture utilise deux registres, avec un effet de pipeline induisant une latence d’un cycle d’horloge.
Exemple avec deux process :
- Process synchrone (sur horloge) : gestion des transitions d’états.
- Process combinatoire (sur état) : génération des sorties.
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
CASE etat IS
WHEN etat1 =>
IF entree = ... THEN
etat <= etat2;
END IF;
...
END CASE;
END IF;
END PROCESS;
PROCESS(etat)
BEGIN
CASE etat IS
WHEN etat1 =>
sortie <= ...;
...
END CASE;
END PROCESS;
Implantation d’une machine de MEALY en VHDL
Deux process sont également utilisés :
- Process synchrone : gestion des transitions d’états.
- Process combinatoire : génération des sorties dépendant de l’état et des entrées.
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
CASE etat IS
WHEN etat1 =>
IF entree = ... THEN
etat <= etat2;
END IF;
...
END CASE;
END IF;
END PROCESS;
PROCESS(etat, entree)
BEGIN
CASE etat IS
WHEN etat1 =>
IF entree = ... THEN
sortie <= ...;
ELSIF ... THEN
...
END IF;
...
END CASE;
END PROCESS;
Exemple complet : Codeur 1 vers 2 en VHDL
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY codeur IS
PORT (
clk, reset, din : in std_logic;
dout : out std_logic_vector(0 TO 1)
);
END;
ARCHITECTURE comp OF codeur IS
TYPE liste_etat IS (E0, E1, E2, E3);
SIGNAL etat : liste_etat;
BEGIN
P1 : process(clk, reset)
BEGIN
IF reset = '0' THEN
etat <= E0;
ELSIF (clk = '1' AND clk'event) THEN
CASE etat IS
WHEN E0 =>
IF din = '1' THEN etat <= E1; END IF;
WHEN E1 =>
IF din = '1' THEN etat <= E3;
ELSE etat <= E2; END IF;
WHEN E2 =>
IF din = '1' THEN etat <= E3; END IF;
WHEN others =>
IF din = '0' THEN etat <= E0;
ELSE etat <= E1; END IF;
END CASE;
END IF;
END PROCESS P1;
P2 : process(etat)
BEGIN
CASE etat IS
WHEN E0 => dout <= "00";
WHEN E1 => dout <= "01";
WHEN E2 => dout <= "00";
WHEN others => dout <= "10";
END CASE;
END PROCESS P2;
END comp;
Protocole de communication entre composants
Les échanges d’informations entre deux composants nécessitent un protocole garantissant la transmission et la réception des données.
- Composant 1 (Master) : envoie les données
data1to2et doit savoir quand les envoyer et si elles ont été reçues. - Composant 2 (Slave) : doit être disponible pour recevoir les données et garantir leur réception.
Signaux de contrôle
- REQ (Requête) : signal envoyé par le Master pour indiquer l’envoi des données.
- ACK (Acquittement) : signal envoyé par le Slave pour confirmer la réception des données.
Protocole hand-shake (demande-réponse entrelacée)
- L’utilisateur envoie une donnée X et signale l’envoi par REQ = 1.
- La machine prend en compte X et signale la réception par ACK = 1.
- L’utilisateur constate la prise en compte et remet REQ à 0.
- La machine constate que l’utilisateur a vu la prise en compte et remet ACK à 0.
Glossaire des termes clés
- Automate : opérateur séquentiel pouvant être dans un état parmi un ensemble fini.
- Machine à états finis (MEF) : système numérique dont le comportement est défini par un nombre fini d’états et de transitions.
- Machine de MOORE : machine dont les sorties dépendent uniquement de l’état interne.
- Machine de MEALY : machine dont les sorties dépendent de l’état et des entrées.
- Bascules D : éléments mémoires synchrones utilisés pour stocker l’état présent.
- Process VHDL : bloc séquentiel décrivant un comportement synchronisé ou combinatoire.
- Signal : variable VHDL dont l’assignation est différée, utilisée pour le stockage et la synchronisation.
- Variable : variable VHDL dont l’assignation est immédiate, utilisée pour les calculs internes au process.
- REQ (Requête) : signal indiquant une demande d’envoi de données.
- ACK (Acquittement) : signal confirmant la réception des données.
Points clés à retenir
- Les machines à états finis sont essentielles pour la synchronisation et le contrôle des systèmes numériques.
- La machine de MOORE offre un synchronisme des sorties et une meilleure immunité aux perturbations, au prix d’un délai d’un cycle d’horloge.
- La machine de MEALY permet des sorties plus rapides mais asynchrones, ce qui peut compliquer la conception.
- Les diagrammes d’états permettent de visualiser clairement les transitions et conditions logiques des machines.
- En VHDL, les machines sont souvent implémentées avec un ou deux process pour séparer la logique synchrone et combinatoire.
- Les protocoles de communication entre composants utilisent des signaux REQ et ACK pour garantir la transmission fiable des données.
Commentaires
Aucun commentaire pour le moment. Posez la première question.