Autres types de bascules

Les fonctions du décodeur de prochain état se formulent naturellement en fonction de bascules D. Pour faire l’implémentation avec des bascules JK ou T, il faut pouvoir déterminer les entrées nécessaires pour amener les changements d’état requis. Pour ce faire, on utilisera des tableaux d’excitation qui listent les combinaisons d’entrées pour passer d’un état présent \(Q_n\) à un état prochain \(Q_{n+1}\). Le tableau d’excitation pour une bascule JK est donné dans le tableau 8 et celui pour une bascule T est donné dans le tableau 9.

Tableau 8 : Tableau d'excitation, bascule JK
$$Q_n$$ $$Q_{n+1}$$   $$J$$ $$K$$
0 0   0 X
0 1   1 X
1 0   X 1
1 1   X 0
Tableau 9 : Tableau d'excitation, bascule T
$$Q_n$$ $$Q_{n+1}$$   $$T$$
0 0   0
0 1   1
1 0   1
1 1   0

Reprenons le tableau de transition d’états pour notre exemple, tableau 56, en ajoutant les signaux à générer pour des bascules JK. On obtient alors le tableau 10.

Tableau 10 : Tableau de transition d'états, avec bascules JK
$$ Z_1^n$$ $$ Z_0^n$$ $$ A$$   $$ Z_1^{n+1}$$ $$J$$ $$K$$ $$ Z_0^{n+1}$$ $$J$$ $$K$$
0 0 0   0 0 X 0 0 X
0 0 1   0 0 X 1 1 X
0 1 0   1 1 X 0 X 1
0 1 1   0 0 X 1 X 0
1 0 0   0 X 1 0 0 X
1 0 1   1 X 0 1 1 X
1 1 0   1 X 0 1 x 0
1 1 1   1 X 0 1 x 0

On trouve les expressions simplifiées suivantes:

\[J_{Z_1} = A^\prime \cdot Z_0^n\] \[K_{Z_1} = A^\prime \cdot (Z_0^n)^\prime\] \[J_{Z_0} = A\] \[K_{Z_0} = (A + Z_1^n)^\prime\]

Ce qui nous donne l’implémentation de la figure suivante.

Détecteur pour la séquence 101, bascules JK. Détecteur pour la séquence 101, bascules JK

États interdits

Lorsque le nombre d’états nécessaires pour le fonctionnement de l’automate fini est strictement inférieur au nombre total d’états possibles avec les bascules utilisées, un certain nombre d’états (physiques) ne seront pas utilisés dans le fonctionnement normal du circuit séquentiel. On parlera alors d’états interdits. Lors de la formulation des tableaux de vérité pour le décodeur de prochain état, ces états donneront lieu à des cas facultatifs, qui pourront permettre la simplification du circuit combinatoire du décodeur.

Il faut toutefois se méfier de scénarios dans lesquels l’automate fini pourrait se retrouver dans un tel état interdit en raison d’un dysfonctionnement momentané ou lors de la mise en marche du système. Considérons par exemple un circuit séquentiel dont le diagramme d’état (tel qu’implémenté après conception) est illustré ci-dessous. En fonctionnement normal, le système évolue entre les états a, b et c. Mais si pour une raison quelconque, le système entre dans l’état d, il restera coincé en bouclant sur cet état pour toujours (ou peut-être jusqu’à un prochain dysfonctionnement).

Diagramme d'état avec état interdit. Diagramme d’état avec état interdit

Une solution serait de modifier le décodeur de prochain état pour s’assurer que, de l’état interdit, on revient toujours vers un état normal, comme on peut le voir sur la figure suivante, où de l’état d, on reviendra toujours vers l’état c.

Diagramme d'état qui assure le retour en fonctionnement normal. Diagramme d’état qui assure le retour en fonctionnement normal

Exemple avec états one-hot

Dans l’exemple suivant, on explore l’assignation d’états one-hot dans laquelle il n’y a qu’un bit 1 par code binaire.

Considérons le diagramme d’état suivant.

Diagramme d'état pour assignation one-hot. Diagramme d’état pour assignation one-hot

Le tableau d’assignation d’état correspondant est

Tableau 11 : Assignation one-hot
État One-hot
a 100
b 010
c 001

Chaque état aura sa propre bascule active, dont les sorties seront dénotées \(A\), \(B\) et \(C\). Le tableau de transition d’états qu’on obtient comporte un grand nombre de cas facultatifs et d’états inutilisés, que nous n’avons pas indiqués ici. Le tableau 2 ne montre que les six transitions spécifiées dans le diagramme d’état.

Tableau 12 : Tableau de transition d'états one-hot
$$A^n$$ $$B^n$$ $$C^n$$ $$x$$ $$y$$ $$z$$   $$A^{n+1}$$ $$B^{n+1}$$ $$C^{n+1}$$
0 0 1 0 X X   0 0 1
0 0 1 1 X X   0 1 0
0 1 0 X 0 0   0 1 0
0 1 0 X 0 1   0 0 1
0 1 0 X 1 X   1 0 0
1 0 0 X X X   0 0 1

Il est possible de formuler le décodeur de prochain état directement, par inspection des transitions spécifiées. Si on considère les transitions qui entrent dans l’état a, il y a trois façons différentes d’arriver en a:

  • à partir de a, sous la condition \(x=0\)
  • à partir de b, sous la condition \(y=0, z=1\)
  • à partir de c, sans conditions

L’équation de prochain état pour a sera ainsi \(A^{n+1} = A^{n}x^\prime + B^n y^\prime z + C^n\)

Le même raisonnement nous permet d’écrire pour les autres bascules: \(B^{n+1} = A^{n}x + B^n y^\prime z^\prime\) et \(C^{n+1} = B^n y\)

Le décodeur de prochain état est simplifié, car les bits d’état offrent une indication directe de l’état dans lequel la machine se trouve. Le fonctionnement de la machine entraîne peu de transitions, ce qui se traduit par une consommation d’énergie réduite et moins de risque d’aléas (glitches). La vitesse de commutation ne dépend pas du nombre d’états. Il est possible d’ajouter ou retrancher un état sans avoir à refaire entièrement la conception. L’assignation one-hot est particulièrement intéressante lorsqu’il y a moins de contraintes sur le nombre de bascules que sur le nombre d’éléments combinatoires.

Le principal inconvénient de cette approche est la croissance du nombre de bascules, qui est linéaire avec le nombre d’états plutôt que logarithmique. Par exemple, pour 30 états, il faudra 30 bascules alors qu’avec un encodage binaire, il n’en faudrait que cinq. Il faut aussi considérer qu’il y a un grand nombre d’états interdits et prendre les précautions qui s’imposent pour éviter les problèmes de fonctionnement coincé.


Sous-module précédent: