Master EEA
Université de Rennes 1 – ISTIC CentraleSupélec Rennes
Machine à Etats Finis en VHDL
Samuel CRAND Laboratoire IETR - CNRS UMR 6164 Bât. 11 B Tél : 02 23 23 65 04 E-mail : [email protected]
1
Système numérique
Unité de traitement des données
- Combinatoire
- Additionneur - Comparateur - UAL - Séquentiel
- Registre à décalage - Compteur
Unité de contrôle
- Synchronisation des tâches
- Automate - Séquenceur - Machine à états finis
Commandes
Unité de contrôle
Unité de traitement des données
Signaux de contrôle
Données (entrée)
Données (sortie)
2
Machines synchrones à états finis
Automate : Opérateur séquentiel
Automate : 1 état parmi N
Passage d’un état à l’état suivant : front montant ou descendant de l’horloge
Clock
Entrées
Sorties
Automate
3
Machine de MOORE
Machine de MEALY
Sorties = f(états)
Sorties = f(états, entrées)
Définition d’une machine : Entrées : Entréest Sorties : Sortiest Etat initial : Etat0 Etat présent : Etatt Etat futur : Etatt+1
4
Machine à états finis
Machine de MOORE
. Caractéristique
Les sorties dépendent seulement de l'état interne
. Avantages
Structure plus régulière Synchronisme des sorties Filtrage de perturbations sur les entrées
. Inconvénient
Temps de réponse = un cycle d'horloge
Et
Xt
St
Xt+1
5
4.3.2 Machines synchrones à états finis
Machine de MOORE
Equations :
Sortiest = f (Etatst) Etatst+1 = f(Entréest, Etatst)
Entréest
Etatst
Réseau combinatoire d'entrées
Etatst
Bascules D
Sortiest
Réseau combinatoire de sorties
Etatst+1
6
VHDL pour la synthèse : exemples
Machine de MEALY
. Caractéristiques :
- Les sorties évoluent lorsque les entrées évoluent - Les sorties ne sont pas toujours synchrones
Et
Xt
. Inconvénient :
- Asynchronisme des sorties
. Avantages :
- Simplification des sorties - Réduction des temps de réponse
St
Xt+1
Publicité
7
4.3.2 Machines synchrones à états finis
Machine de MEALY
Equations :
Sortiest = f (Etatst, Entréest) Etatst+1 = f(Etatst, Entréest)
Entréest
Etatst
Réseau combinatoire d'entrées
Entréest
Bascules D
Etatst+1
Etatst
Sortiest
Réseau combinatoire de sorties
8
Machine de MOORE
Machine de MEALY
Les sorties dépendent seulement de l'état interne
Les sorties évoluent lorsque les entrées évoluent Les sorties ne sont pas toujours synchrones
Avantages
Synchronisme des sorties Filtrage de perturbations sur les entrées
Simplification des sorties Réduction des temps de réponse
Inconvénients
Temps de réponse = un cycle d'horloge
Asynchronisme des sorties
9
4.3.2 Machines synchrones à états finis
Représentation d’une machine à états finis => Diagramme d’états
Action n-1
En-1
Cn-1
Action i
E2
C2
Ei
Action 2
Action 1
E1
C1
Ci
i = 0 à n-1
Passage d’un état à un autre état => Condition logique
C1 : Condition de passage de l’état Ei à l’état E1
Maintien dans un état => Condition logique
Ci : Condition de maintien dans l’état Ei
10
4.3.2 Machines synchrones à états finis
Représentation d’une machine à états finis => Diagramme d’états
Transition conditionnelle
. Prise en compte de la condition sur les entrées uniquement sur front de l’horloge . Minimum 2 transitions conditionnelles à partir d’un état
Transition inconditionnelle
. Prise en compte immédiate sur front de l’horloge . Une seule transition inconditionnelle par état
11
4.3.2 Machines synchrones à états finis
Relations logiques à respecter dans un graphe d’états
Loi d’exclusion mutuelle
A partir d’un état, toutes les conditions doivent être définies
A partir d’un état, une seule condition vérifiée => un seul état activé
12
Machine à états finis
Codeur 1 -> 2
Spécifications initiales
Codage
ou
Si din = 0 alors Si din = 1 alors
ou
dout = 00 dout = 01 dout = 10 en alternance
Machine de MEALY
ou
Machine de MOORE
Diagramme d'états
13
clk t t t din dout 10 01 Machine à états finis
Publicité
Codage en VHDL
Séquentialité -> Process
Etats de la machine :
. Signal : Assignation différée
- Prise en compte à la fin du process - Synchronisme - Etat présent et état futur par nature
. Variable : Assignation immédiate
- Prise en compte immédiate
Instructions VHDL . CASE … IS
WHEN … ... END CASE
14
Implantation d'une machine de MOORE en VHDL
1er cas : Un seul process et utilisation d'un signal pour l'état de la machine
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;
Résultat de la synthèse
- Machine de MOORE - Utilisation de 2 registres - Effet de pipeline (latence d'un cycle)
Etat
Registres
Logique combinatoire d'entrée
entrées
clk
Logique combinatoire de sortie
Registres
sortie
15
Implantation d'une machine de MOORE en VHDL
2ème cas : 2 process et utilisation d'un signal pour l'état de la machine
Synchrone : PROCESS(clk) BEGIN
IF rising_edge(clk) THEN
CASE etat IS
WHEN etat1 =>
IF entree = … THEN etat <= etat2;
END IF;
… END CASE;
END PROCESS Synchrone;
Combinatoire : PROCESS(etat)
BEGIN
CASE etat IS
WHEN etat1 => sortie <= …; ...
END CASE;
END PROCESS Combinatoire;
Etat
Registres
Logique combinatoire d'entrée
entrées
clk
Machine de MOORE ? OUI
Logique combinatoire de sortie
sortie
16
Implantation d'une machine de MEALY en VHDL
2 process et utilisation d'un signal pour l'état de la machine
Synchrone : PROCESS(clk) BEGIN
IF rising_edge(clk) THEN
CASE etat IS
WHEN etat1 =>
IF entree = … THEN etat <= etat2;
END IF;
… END CASE;
END PROCESS Synchrone;
Combinatoire : PROCESS(etat, entree) BEGIN
CASE etat IS
WHEN etat1 =>
IF entree = … THEN sortie <= …; ELSIF ...;
END IF;
END CASE;
END PROCESS Combinatoire;
Publicité
Etat
Registres
Logique combinatoire d'entrée
entrées
clk
Machine de MEALY ? OUI
Logique combinatoire de sortie
sortie
17
Machine à états finis
Codeur 1 -> 2
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;
18
Codeur 1 -> 2
Machine à états finis
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;
19
Protocole de communication
Echanges d’informations entre 2 composants
data1to2
Composant 1
Composant 2
Contrôle
Composant 1 :
- Transmission des données data1to2, quand ? - Réception des données data1to2, garantie ?
Composant 2 :
- Disponibilité du composant 2 pour recevoir les données data1to2 ? - Réception des données data1to2, garantie ?
20
Protocole de communication
Echanges d’informations entre 2 composants
Composant 1 (Master)
data1to2
REQ
ACK
Composant 2 (Slave)
REQ : Requête (REQuest)
- Information d’envoi des données data1to2
ACK : Acquittement (ACKnowledgment)
- Information de la réception des données data1to2
2 Machines à états finis
Composant 1
Composant 2
21
Protocole de demande-réponse entrelacées (hand-shake)
avec requête (REQuest) et acquittement (ACKnowledgment)
REQ
ACK
① l’utilisateur envoie X et le signale par REQ=1
② la machine prend en compte X et le signale par ACK=1
③ l’utilisateur a vu que la machine a pris en compte X et signale par REQ=0
④ la machine a vu que l’utilisateur avait vu que la machine avait pris en compte X
et le signale par ACK=0)
Source : Steven Derrien - ISTIC
22