RdP  synchrones synchronisés et  SYSTEMES LOGIQUES

 
Une machine d'états (State machine) est une représentation du fonctionnement de la partie controle d'un système logique industriel. Ces représentations se font souvent sous formes de graphes, lesquels graphes sont le plus souvent des réseaux (Graphes, Grafcet, Réseaux de Pétri,...) .

Pour un bon nombre de bonnes raisons déja évoquées, les parties controle d'un système logique gagnent à ètre modélisées à l'aide de réseaux synchronisés (RdPS), et tout particulièrement dans le cas de la conception d'un ASIC, à l'aide de RdPS ou réseaux de Pétri synchrones synchronisés .

Synchrone, pour rappeler qu'à toute transition est associée une condition de franchissement (réceptivité), sachant que cette condition peut ètre aussi l'évènement lambda dit "toujours vrai" . Une transition lambda est une transition à hauteur de laquelle on ne rappelle pas de condition. Elle est franchie aussitot que franchissable du seul fait de l'état de marquage du réseau.

Le réseau est par ailleurs synchronisé, pour rappeler que tout franchissement ne se fera qu'en synchronisme sur un des deux fronts d'une horloge maitresse cadençant le système.

A chaque place est généralement associée une action ou une ou plusieurs commandes. Mais on peut tout aussi bien ne rien associer à une place. Alors, celle-ci n'est la que pour marquer une étape dans l'évolution du séquencement modélisé. Ce peut ètre aussi un sémaphore de synchronisation entre deux blocs de controle qui communiquent ou se synchronisent. Etc .....

Bien noter que toute commande associée à une place n'est active que durant le marquage de cette place. Cette commande est désactivée aussitot la place libérée de toute marque.

Une réceptivité Ri peut ètre aussi ordinaire que l'état logique d'une variable booléenne comme le résultat logique d'une fonction combinatoire aussi complexe que nécéssaire (prédicat ).

Dans tous les cas une réceptivité ramène une valeur logique (0, 1) qui conditionne l'autorisation de franchissement de la transition à laquelle elle est associée.
 

STRUCTURE:

La structure la plus simple d'une machine implémentant un graphe de controle modélisé par un RdP pourra se présenter conformément à la figure ci-après. Les signaux se répartissent en:

     - Entrées primaires           :  E
 
     - Sorties primaires            :  S
 
     - Marquage à l'instant t     :  M(t)
 
     - Marquage suivant          :  M(t+1)
 



 On distingue:
1) Deux blocs strictement combinatoires,  (Portes logiques exclusivement)

     - Le bloc de séquencement                               (A)
     - le bloc de commande (ou bloc de sortie)         (B)

2) Un registre dit "registre de marquage"  RM.

RM est constitué d'un ensemble de bascules. Chaque bascule rend compte à tout instant de l'état de marquage de la place du réseau à laquelle on l'aura associée.

Les deux blocs strictement combinatoires peuvent ètre définis par de simples tables de vérité ou par un systèmes d'équations booléennes.

Les logiques d'implémentation de ces  blocs combinatoires  pourront ètre:

     - Logique anarchique                         (portes ordinaires)
     - Mémoire morte                               (R.O.M)
     - Réseau logique programmable         (P.L.A)
 

Etat interne / état total

La configuration binaire du vecteur   M(t), donc le contenu du registre RM,  rend compte, à l'instant t, de l'état de marquage du réseau à cet instant. C'est l'ETAT INTERNE du séquenceur.

La concaténation de l'état des entrées primaires E au vecteur de marquage interne définit maintenant l'ETAT TOTAL de la machine  (E / Qt).
 

Machine de MEALY

S'il se trouve des sorties primaires dont les états logiques dépendent autant du marquage (RM) que des états d'entrée (soit de de l'état total), nous dirons avoir affaire à une machine de MEALY. La structure de la figure (   ) est celle d'une machine de MEALY.

Nous disons aussi que dans une machine de MEALY les entrées participent aux sorties. Le système d'équations est alors de la forme :

  S(t)        =   h [M(t),  E(t)]
  M(t+1)   =    g [M(t),  E(t)]
 

Machine de MOORE

Une machine est dite "machine de MOORE" si l'état logique de toute sortie  si  ne dépend que du marquage du RdP de controle. La structure précédemment proposée est celle d'une machine de MOORE. Son système d'équations est alors:

 S(t)       =    h [ M(t)
 M(t+1)  =    g [ M(t), E(t) ]   (marquage sur le prochain coup d'horloge)

M(t)  :  marquage à l'instant  t.


GRAPHE  d'ETATS

 Rappels:

Un RdP a une structure de graphe d'états (GE) si on y rencontre ni jonctions, ni distributions. Un graphe d'états est exclusivement constitué de sélections, d'attributions ou de transferts. On dit encore que c'est un RdP constitué uniquement que de noeuds OU. Si de plus ce graphe a pour marquage initial un jeton et un seul dans une des places, le graphe est alors un graphe de transition d'états (G.T.E). Le jeton est "conservatif". Il ne fait que transiter de place en place au grè des franchissements. Quand on parle d'un graphe d'états, on sous-entend souvent un G.T.E.

Au graphe d'états correspond le graphe de fluence. Ce dernier est en effet constitué que d'une seule catégorie de noeuds. Des arcs, auxquels on associe des évènements, relient ces noeuds entre eux.
 
 

Transcription d'un RdP en graphes d'états

Si on décide d'implémenter un RdP, non pas en mode cellulaire mais sous forme machines d'états (state machine), il nous faut disposer d'un ou de plusieurs graphes d'états. Deux méthodes pour cela:

    1) Tracé du graphe des marquages conséquents
    2) Partition en graphes d'états.
 

- Graphe des marquages conséquents  (G.M.C)

C'est se donner une nouvelle représentation du fonctionnement du réseau par l'étude exhaustive de l'ensemble des marquages atteignables. A chaque état de marquage est associé une place, place à hauteur de laquelle on peut rappeler la suite des places marquées dans le réseau initial pour ce marquage. Le graphe obtenu est unique et a alors les caractéristiques d'un graphe d'états.
 

GMC  et machine d'états.

Le graphe des marquages conséquents, de par son principe de construction, a tendance à exploser en nombre de places. Il pourra toujours servir à une étude exhaustive du RdP sur ordinateur mais on hésitera souvent à en faire le graphe destiné à étre implémenté.
 

- Partition en  G.E  d'un RdP

Il s'agit ici de découper le réseau en autant de graphes d'états que nécéssaire afin d'obtenir la disparition des jonctions et distributions. Les graphes séparés ainsi obtenus vont devoir communiquer ou se synchroniser, mais chacun des graphes pris individuellement sera bien un G.E.

On dispose de programmes qui se chargent de procéder automatiquement à ce type de décomposition (ANDRE - Nice). Tout outil de partition devra cependant, en plus d'un mode de traitement par défaut, autoriser une certaine interactivité. Un concepteur peut souhaiter par exemple désigner certaines places comme devant appartenir au mème graphe.

En effet, un mème RdP se prète généralement à plusieurs partitions possibles. Retenir plutot telle partition que telle autre relève en principe de la responsabilité du concepteur, de son expérience et des objectifs poursuivis (superficie, vitesse, aléas de décodage, .... ) Ainsi, il y a deux partitions possibles du RdP (     ). la partition  (a) conduit à se réserver un registre d'états de longueur  4  pour le graphe principal puisque  9  états à différencier.

Une fois la partition effectuée, chacun des graphes d'états sera implémenté selon n'importe laquelle des techniques d'implémentation d'une machine d'états. Il y a seulement à bien définir les synchronisations entre machines, lesquelles apparaissent en principe de façon évidente.

Les outils de saisie simultanée de n graphes d'états communiquant existent sur le marché des logiciels de développement, y compris pour  PC (ALDEC-foundation pour  FPGA - XILINX).


Matérialisation des graphes d'états  (Machine d'ETATS)

Introduisons la méthode directement sur l'exemple du G.T.E ci-dessous. Cette implémentation se fera ici sans la moindre préoccupation d'optimisation. Le seul objectif poursuivi étant l'obtention d'une première réalisation matérielle sur la base de l'utilisation d'un bloc P.L.A (Programmable Logic Array) pour le combinatoire et d'un registre d'état  RE.

Au niveau du graphe lui-mème, trois aménagements préalables s'imposent qui sont:

      - Exclusions des réceptivités.
      - Rajout des transitions de maintien.
      - Obtention de formes sommes de monomes au niveau des transitions (PLA oblige).

1- Exclusions des réceptivités.

- Il s'agit maintenant de s'assurer que pour toute sélection dans le réseau les réceptivités s'excluent mutuellement. En d'autres termes, pour toute sélection, il faut garantir qu'une et une seule des transitions de la sélection sera franchie.

Par exemple, de la place  p1  on peut atteindre les places p2, p3 ou p4  selon les occurences respectives   /a, b.c ou /c. Mais le principe du graphe d'état (autant que celui d'un RdP) oblige à obtenir, si franchissement, le franchissement d'une et d'une seule des transitions. En d'autres termes, si  c = 0 ET a = 0, quelle place marquer des places  p2  et  p4 ?

Le principe d'exclusion de franchissement simultané de deux transitions ou plus d'une mème sélection nous oblige à compléter les écritures des réceptivités de façon à garantir que si il y a franchissement celui-ci ne peut s'effectuer que par une et une seule des n  transitions de la sélection. Il nous faut compléter les conditions de franchissement.

On vérifie, réseau (     ), que les intersections logiques des réceptivités prises deux à deux sont chaque fois vides.

                 /a .  abc  =  0,          /a .  a/c =  0,           abc .   a/c =  0

On procèdera à cette vérification pour toutes les sélections du réseau.

Certains outils (COMPASS) autorisent une affectation de priorités aux transitions. Alors, si deux transitions d'une mème sélection sont franchissables, c'est la transition de priorité la plus élevée qui sera franchie. L'outil complète de lui-mème les conditions logiques.

2- Rajout des transitions de maintien.

Pour une machine dans un état  i, si aucune des transitions de sortie de cet état n'est validée, l'état futur de la machine reste l'état  i  (inscription dans le registre d'état sur le prochain front de synchronisation de la mème configuration Q(t)  soit:  [Q(t+1)  =  Q(t)].

- Sur le réseau on rajoute donc les arcs et transitions qui renvoient le jeton dans la mème place. En place  p0, tant que  a=0  le jeton doit ètre "réinscrit" en place p0 au coup d'horloge à venir. D'ou la réceptivité  /a associée à la transition de maintien rebouclée sur cette mème place.
 


 

Un traitement équivalent pour la place  1  nous amène à écrire pour la récéptivité associée à la transition de maintien du jeton en place  1  la réceptivité:

               r  =   /[ /a + bca + /ca ]   =  a . /b . c

C'est la condition qui, si vérifiée, oblige le jeton à rester en place  1  au coup d'horloge suivant. Etc......

Le synthétiseur sera vigilant sur ce point. Tel outil considèrera que par défaut on reste dans l'état (option à prérégler). Tel autre exigera que cela soit bien spécifié sur le graphe. Un troisième ne signalera rien du tout et écrira un code VHDL qui aboutira à une synthèse incorrecte.
 
 

3- Formes sommes de monomes.

La condition logique /(/b . c) associée à la transition  t( p2, p3 ) ne se présente pas sous forme somme de monomes. On s'oblige en conséquence à développer  cette condition sous la forme :

   / (/b . c)  =  b  +  /c

Cela pourrait se traduire dans le graphe par deux transitions parallèles de  p2  vers p3. L'une avec pour condition de transition b, l'autre avec pour condition de transition  /c.
 

Nous décidons ainsi, à fin d'automatisation et de vérification, qu'à toute transition ne soit asssocié qu'un monome et un seul. Alors, l'intersection logique de ce monome et du monome qui décode l'état Q(t) de la place d'entrée constituera un des monomes de la table PLA à venir. Cette représentation exhaustive des transitions dans le réseau a son importance car nous allons constater que le nombre de monomes du PLA  à venir devra égaler le nombre de transitions ainsi mis en évidence.

On considère à ce stade que le graphe est bien formé. Il se prète à transcription automatique sous forme d'une table des transitions.
 

Table des transitions:

Toute place pi est désormais désignée  Qi sachant que cette place sera ultèrieurement identifiée par une configuration binaire dans la suite des bascules d'un registre d'état (RE).

L'écriture de la table n'est donc qu'une transcription du graphe. Elle rappelle ligne par ligne toutes les transitions possibles d'état en état y compris le rebouclage d'un état sur lui-mème (maintien). Si toutes les réceptivités des transitions se limitent à l'écriture d'un seul monome le nombre de lignes de cette table égale le nombre d'arcs d'arrivée sur les places du graphe. Chaque ligne sera une ligne de programmation du PLA à venir.

         état                                           état
         présent        récep          suivant          sorties
                                                                          Z1  Z2
     _______________________________________

           Q0        a                    Q1           0   0
           Q0       /a                    Q0           0   0
           Q0        a.b.c               Q3          0   1

           Q1        a./c                Q4           0   1
           Q1        a./b.c             Q1           0   1
           Q1       /a                    Q2           0   1

           Q2       /b.c                 Q3           1   -
           Q2         b                    Q2          1   -             décomposition  de
           Q2        /c                    Q2          1   -         Q2 . /(/b . c)  =  Q2 . b  +  Q2 . /c

            Q3         a                    Q6         1   1
            Q3        /a                    Q3         1   1

            Q6        /c                    Q0          -   0
            Q6         c                    Q6          -   0

             Q4        /a                   Q4          0   1
             Q4        /c                   Q4          0   1
             Q4        a.c                  Q5          0   1

             Q5       /a.b                 Q6           -    -
             Q5         a                    Q5          -    -
             Q5        /b                   Q5           -    -

Le codage.

    Tout état de marquage d'un RdP devra pouvoir ètre caractérisé dans sa matérialisation par une configuration binaire identifiant cet état de marquage. Le choix et le principe des affectations de ces configurations binaires à chacun des marquages d'un RdP est l'étape de codage du RdP.

Nous distinguons deux grands modes de codage:

     - Le mode à registre d'état (RE)
     - le mode cellulaire  (One hot).

Le mode cellulaire a été examiné par ailleurs. Nous adoptons ici le mode à registre d'état (RE).

Le codage consiste alors à affecter un code représentatif à chacune des configurations symboliques  Qi.

Décidons du codage ci-après:

 Q0  =  0 0 0
 Q1 =   0 0 1
 Q2 =   0 1 1
 Q3 =   1 1 1
 Q4 =   1 1 0
 Q5 =   1 0 0

Si nous ne nous sommes pas préoccupé jusqu'ici d'optimisation, nous décidons tout de mème ici d'adopter un codage qui a le plus souvent le mérite d'amener un allègement de la circuiterie combinatoire. C'est le principe du codage par adjacences (ADJ)

Optimisation

On se doute que du choix du codage des états dépendra la plus ou moins grande complexité des blocs combinatoires de la machine, que ce soit en nombre de portes ou en taille de PLA. De nombreux algorithmes de codage optimal ont été proposés il y a de nombreuses années qui sont utilisés par les outils de synthèse automatique des machines d'états. Les travaux continuent de s'effectuer dans ce domaine. Travaux qui prennent en compte le fait qu'une optimisation se fait toujours avec pour objectif de satisfaire certains critères, notamment les critères vitesse, superficie, voire certaines spécificités de la technologie ciblée (FPGA par exemple).

Rappelons quelques codes usuels:

Binaire                                            :  BIN
Random                                          :  RND
One-hot                                          :  HOT
Adjacence                                       :  ADJ
Linear feedback shift register            :  FSR
 

Etats hors code

Si le codage a nécessité de se réserver une configuration binaire de longueur n, nous disposons d'une capacité de codage sur  2n  codes distincts. Le plus souvent, le nombre des états de la machine est inférieur à  2n. Parmi ces 2n codes distincts, les configurations binaires qui n'appartiennent pas à la liste des codes retenus sont dits états hors code.

On veille, lors de toute synthèse de machine d'états, à vérifier le comportement de la machine si consécutivement à un couplage parasite quelconque cette machine devait se retrouver dans un de ces états hors code.  Au besoin on complète la synthèse afin d'imposer, au rythme des impulsions d'horloge une évolution de la machine qui la ramène dans le cycle principal de fonctionnement.
 
 

         état                                             état
         présent       récep             suivant                    sorties
                                                          (t+1)
       q2 q1 q0          c   b   a          q2 q1 q0        Z1  Z2
     _______________________________________________

         0  0  0                1                0  0  1           0   0

         0  0  0                0                0  0  0           0   0

         0  0  0        1  1  1               1  1  1            0   1

         0  0  1        0  -  1                1  1  0           0   1

         0  0  1        1  0  1               0  0  1            0   1

         0  0  1         -  -  0                0  1  1            0   1

         0  1  1        1  0  -                1  1  1           1   -

         0  1  1         -  1  -                0  1  1           1   -

         0  1  1        0  -  -                 0  1  1          1   -

         1  1  1         -  -  1               1  0  1          1   1

         1  1  1        -  -  0                 1  1  1          1   1

         1  0  1        0  -  -                  0  0  0          -   0

         1  0  1        1  -  -                  1  0  1          -   0

         1  1  0        -  -  0                  1  1  0         0   1

         1  1  0        0  -  -                  1  1  0         0   1

         1  1  0        1  -  1                 1  0  0          0   1

         1  0  0        -  1  0                 1  0  1         -    -

         1  0  0        -  -  1                  1  0 0          -    -

         1  0  0        -  0  -                  1  0  0         -    -

       ______________________________________________
 

Table de programmation du P.L.A.

L'écriture intermédiaire de la table de programmation avant codage est donnée figure (   ). Elle se transcrit directement du graphe  (      ).

Aprés codage des états  Qi elle se présente sous la forme de la table  (       ) qui amène enfin la table de programmation (       ).
 

Simplifications

On peut considérer maintenant cette table comme une table de vérité ordinaire et appliquer toutes les règles de simplifications pour alléger le nombre de monomes du bloc combinatoire donc du PLA. On reprend les équations logiques des variables  q2(t+1), q1(t+1), q0(t+1), Z1 et Z2.
 

Matérialisation :

La structure de la machine mettra en évidence:

-  Un registre  RE  dédié à la représentation Q(t) de l'état courant ou état présent (n bascules si codage sur n bits).
-  Le bloc combinatoire qui détermine les évolutions d'état en état, c'est le bloc de séquencement. Il voit sur ses entrées la configuration de l'état présent et les entrées primaires.
-  Le bloc combinatoire qui génère les commandes en fonction des états. C'est le bloc de sortie ou bloc des commandes.

Dans une implémentation PLA, ces deux blocs peuvent gagner à ètre fondus dans un seul et mème PLA.

Observation:

Toute implémentation de G.E autour d'un registre d'état oblige à prévoir un état de départ ou état initial. Ce n'est pas le cas d'un codage cellulaire (One-hot). Dans ce dernier cas de figure, toutes les cellules sont initialement vides. Pour une machine à registre d'état, l'état initial faisant partie de l'ensemble des états de la machine doit avoir la place qui lui correspond dans le graphe d'origine. Place forcément marquée à l'initialisation du réseau.
 

Graphe prédicat / action

Plutot que d'associer les actions aux places, on peut les associer elles aussi aux transitions. A la transition se retrouvent alors attachées une réceptivité et une action. Le franchissement de la transition déclenche simultanément la commande. En fait dans nos graphes synchrones la représentation prédicat/action sera la façon de préciser que les commandes sont enregistrées latchées. Le front d'horloge qui déclenche le franchissement sur le graphe est aussi celui qui enregistre la ou les commandes. Les sorties de la machine sont des sorties synchrones.

Il pourra s'avérer plus pratique dans ce cas de figure d'utiliser des bascules RS voire  T en lieu et place de la traditionnelle bascule D  (bibliothèque).
 

Chemin critique

La suite de portes combinatoires traversée par un signal issu de la sortie  Q  d'une bascule et aboutissant sur l'entrée  D, ou toute autre entrée d'une bascule d'arrivée est un chemin. Ce chemin est dit chemin critique si c'est le chemin le plus long en terme de temps de propagation à travers les portes de ce chemin. Cette durée ou délai de temps de propagation conditionne la période minimale de l'horloge cadençant une structure totalement synchrone. On vérifiera toujours que dans le pire cas (process, tension, température), le signal a bien le temps de se propager sur ce chemin avant apparition du prochain front de synchronisation. Pour évaluation de la période minimale Th on ajoute à ce temps le temps de délai de commutation de la bascule de départ (clock to Q) et le temps de setup (temps d'établissement) de la bascule d'arrivée.

Performances:

Lorsque certains critères de performances doivent ètre atteints, on peut ètre amené à remodeler le graphe d'états. On peut par exemple ètre conduit à dupliquer certains états dans le cas de codage one-hot pour obtenir un allègement du combinatoire qui précède les bascules.
 

Les aléas de décodage.

    Nous avons vu qu'il y avait, lors des commmutations, des occasions de "courses" entre les signaux traversant les couches de portes des blocs strictement combinatoires. Ces disparités des délais de parcours dans le magma combinatoire sont à l'origine des "aléas" (Glitches, Spikes, ....).

Pour un système séquentiel nous parleront d'aléas de décodage quand il s'agira de manifestations d'aléas consécutivement au changement d'état d'un état  i  dans un état j du registre d'état. On assiste alors à la commutation d'un nombre plus ou moins grand des variables du registre d'état (RE).

Si on ne se préoccupe que très peu, voire pas du tout, des aléas dus à la traversée du combinatoire d'état ou du bloc de séquencement, puisque resynchronisation des signaux dans le registre d'état lui-mème, les aléas sur les signaux du combinatoire de sortie (bloc des commandes) devront eux systématiquement retenir l'attention du concepteur. En effet, la présence du registre d'état, synchronisé sur front d'impulsion, fait que les commutations intempestives entre deux coups d'horloge sur les entrées de ce registre, sont sans conséquences quant à la pureté des signaux au sortir de ce registre pour autant que les temps d'établissement (setup) des bascules soient respectées. Par contre, les signaux au sortir du bloc combinatoire de sortie, ou du bloc de commande, ont diverses destinations, et selon ces destinations, il peut y avoir obligation de prendre les dispositions qui empècheront l'apparition d'aléas. Dans bien des cas, et tout particulièrement lorsqu'on se situe dans le cadre d'un conception de type "totalement synchrone", les aléas susceptibles de se manifester sur les sorties du système séquentiel n'ont pas de conséquences sur l'intégrité du controle de la partie opérative, les signaux aboutissant normalement sur les entrées de controle (EC Enable Clock) des bascules de la PO.
 

Solutions:      Resynchronisation des signaux de sortie.

xxxxx  Structure d'ensemble d'un séquenceur:
<chro>
<synchronisation sur les plots de sortie>

La synchronisation des entrées / sorties: