Logique séquentielle/Description par graphe d'états

Début de la boite de navigation du chapitre
Description par graphe d'états
Icône de la faculté
Chapitre no 8
Leçon : Logique séquentielle
Chap. préc. :Les technologies
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Logique séquentielle : Description par graphe d'états
Logique séquentielle/Description par graphe d'états
 », n'a pu être restituée correctement ci-dessus.

Graphe d'états

modifier

Un graphe d'états est une suite d'états et de transitions réceptives. Pour ceux qui auraient une connaissance du GRAFCET on parle ici d'état et non d'étape. Les évolutions seront représentées par un jeton (et un seul) qui se déplace d'état en état.

Même si nous avons déjà rencontré la notion d'état, il est important de se rappeler :

Début d’un principe
Fin du principe


 
Les états normaux (à gauche) initial (à droite)

Voici des exemples d'états à droite.

Cette figure représente respectivement un état normal inactif, un état normal actif (on y ajoute un jeton), un état initial inactif (double cercle). Dire qu'on se trouve dans un état se représente donc par un jeton (comme pour les GRAFCETs).

Transitions

modifier

Une transition a toujours été décrite, jusqu'ici, au moyen d'une flèche et d'une éventuelle condition le passage d’un état à un autre : on parle de transition conditionnelle. Une telle transition ne spécifie pas ce qui se passe si la condition est fausse.

 
Une transition réceptive


Voici une transition réceptive (à droite)

La réceptivité est l'équation booléenne : c’est une valeur booléenne. La signification de cette transition peut être présentée par le dessin ci-contre.

 
Equivalence entre transition et transition réceptive

On aperçoit dans cette figure l’intérêt d'une transition réceptive : on retire les transitions d’un état sur lui-même. C’est tout mais c’est le genre de simplification qui peut simplifier grandement un dessin si l’on a plusieurs dizaines d'états.

Graphe d'états

modifier

Un graphe d'états est un graphe pour lequel les états sont reliés les uns aux autres par des transitions. Ce graphe ne possède qu'un seul état initial. Si l’on s'intéresse à l'évolution d’un tel graphe on obtient un seul jeton qui se déplace à travers les états.

Équations de récurrence

modifier

Du point de vue du codage des états, ce que l’on présente maintenant est souvent appelé Code One-shot. Cela signifie, en clair, qu'on utilise une équation de récurrence par état. Le graphe d'états présenté en figure plus loin possède quatre états, il sera donc décrit par quatre équations de récurrence. Comment trouver ces équations de récurrence ?

On cherche pour chacun des états i les conditions d'activation que l’on notera   et les désactivations que l’on notera   puis on écrit une des deux équations ci-dessous suivant le type d'état que l’on a :

 

pour un état initial et

 

pour un état normal. Init est une entrée ajoutée destinée à l'initialisation (synchrone ici).


Un exemple sera plus parlant qu'un long discours. Soit le graphe d'états ci-dessous :

 
Notre graphe d'états d'étude

Cherchons les conditions d'activation   de chacun des états :

  •  
  •  
  •  
  •  

puis les conditions de désactivation

  •  
  •  
  •  
  •  

Les équations de récurrence sont alors :

  •  
  •  
  •  
  •  

Équations de sortie

modifier

Nous n'avons encore jamais rencontré ce type d'équation.


Les équations de sortie de l'exemple ci-dessus sont donc :

  •  
  •  
  •  
  •  

Implantation

modifier

On implante ces équations de récurrence facilement avec des bascules D (voir TD 3). Le schéma comporte deux parties : les équations de récurrence se retrouvent en partie gauche et les équations de sortie se retrouvent en partie droite.

En suivant toutes ces règles, on trouve pour l'exemple ci-dessus le schéma donné maintenant :

 

Essayez de retrouver les équations de récurrence sur ce schéma ainsi que les équations de sortie : ce travail n’est pas complètement inutile.

Posons-nous la question de savoir comment pourrait-on programmer une PAL à partir des équations.

Implantation en VHDL

modifier

Le programme VHDL est trouvé très facilement quand on a les équations : il suffit de les traduire en VHDL. Les équations de récurrence seront alors dans un "if clk'event ..." et du coup dans un process. Le process en question a une liste de sensibilité toute simple : l'horloge. Les équations de sortie ne seront pas dans ce process mes concourantes (à lui). Regardez tout cela das le programme ci-dessous :

-- programme VHDL correspondant au graphe d'états précédent
ENTITY graf1 IS 
PORT (I,e1,e2,e3,e4,clk : IN BIT;
      a1,a2,a3,a4 : OUT BIT);
END graf1;
ARCHITECTURE agraf1 OF graf1 IS
SIGNAL x1,x2,x3,x4,x5 : BIT;
BEGIN
  PROCESS(clk) BEGIN
    IF (clk'event AND clk='1') THEN
-- équations de récurrence
      x1 <= (x3 AND e4) OR (x4 AND e3) OR I;
      x2 <= (x1 AND e1 AND NOT I) OR (x2 AND NOT e2 AND NOT I);
      x3 <= (x2 AND e2 AND NOT I) OR (x3 AND NOT e4 AND NOT I);
      x4 <= (x1 AND NOT e1 AND NOT I) OR (x4 AND NOT e3 AND NOT I);
    END IF;
  END PROCESS;
--équations de sortie
  a1 <= x1;
  a2 <= x1;
  a3 <= x3 OR x4;
  a4 <= x2;
END agraf1;

Exercices

modifier