Master EEA

Machine à Etats Finis, VHDL, Systèmes numériques · course

Voir tous les documents en électronique et automatique

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