Lorsque plusieurs personnes collaborent sur un même projet, elles sont régulièrement amenées à échanger des documents, par exemple des diagrammes représentant le fonctionnement du système à développer. Il est nécessaire que tous les acteurs du projet soient d’accord sur la façon d’interpréter ces diagrammes. S’il y a des ambiguïtés ou des malentendus, le projet peut aboutir à un système qui ne fonctionnera pas de la manière attendue.
Une manière de mettre tout le monde d’accord consiste à choisir des représentations qui s’appuient sur des modèles mathématiques. Ainsi, il devient possible de vérifier rigoureusement si un circuit réalise bien le comportement spécifié. Et cette vérification peut même être automatisée.
Dans ce chapitre, nous donnons un rapide aperçu de la théorie des automates finis tels qu’ils sont utilisés dans le domaine de la conception de circuits logiques. Cet exposé est illustré par l’exemple de la commande d’un robot autonome pour lequel nous avons proposé deux graphes d’états.
Un automate fini est défini par un sextuplet où :
Dans un automate fini, l’ensemble contient un nombre fini d’éléments.
Le fonctionnement d’un automate fini est rythmé par l’arrivée de ses entrées. On notera la séquence des entrées présentées à la machine dans l’ordre chronologique.
Initialement, l’automate est dans l’état . Lorsque survient l’entrée , l’automate produit une sortie et passe dans l’état .
Ensuite, au cours du fonctionnement de l’automate, l’arrivée d’une nouvelle entrée produit une sortie et une mise à jour de l’état .
Par la suite, pour alléger les notations, nous noterons simplement , et l’état, l’entrée et la sortie courants (au lieu de , et ). L’état suivant sera noté (au lieu de ).
La fonction de transition aura la signature suivante :
Dans un machine de Moore, les sorties ne dépendent que de l’état courant. La signature de la fonction de sortie est alors :
Dans une machine de Mealy, les sorties dépendent de l’état courant et de la valeur courante des entrées. Voici la signature correspondante de la fonction de sortie :
Notre robot possède quatre états, que nous allons abréger en (Recherche d’un Mur), (Suivi d’un Mur), (Rotation à Gauche) et (Rotation à Droite). L’ensemble des états et l’état initial se définissent donc comme :
Le robot se dirige dans le labyrinthe en se fiant aux informations fournies par ses capteurs. Lorsqu’il tourne à gauche ou à droite, il réagit également à un signal indiquant la fin d’une rotation de 90 degrés. L’ensemble des entrées possibles se définit ainsi comme l’ensemble de tous les triplets de booléens (Capteur Avant, Capteur Gauche, Fin de Rotation) :
Les actions du robot consistent à commander chaque moteur dans le sens avant ou arrière. Nous avons identifié trois actions (avancer, tourner à droite, tourner à gauche), correspondant à trois combinaisons des commandes des moteurs. Nous y ajoutons une combinaison correspondant à l’arrêt des deux moteurs (toutes les commandes à zéro). L’ensemble des sorties possibles est donc un ensemble de quadruplets de booléens (Moteur Gauche Avancer, Moteur Gauche Reculer, Moteur Droit Avancer, Moteur Droit Reculer) défini comme suit :
La fonction de transition est la traduction, en termes mathématiques, des transitions du graphe d’états. Elle est de la forme :
Dans le tableau ci-dessous, chaque ligne correspond à une flèche du graphe d’états :
→ | |||||
---|---|---|---|---|---|
0 | 0 | – | → | ||
0 | 1 | – | → | ||
1 | – | – | → | ||
0 | 1 | – | → | ||
– | 0 | – | → | ||
1 | 1 | – | → | ||
– | – | 0 | → | ||
– | – | 1 | → | ||
– | – | 0 | → | ||
– | – | 1 | → |
Dans la section précédente, nous avons proposé deux graphes d’états. Le premier décrivait une machine de Moore, où les sorties ne dépendent que de l’état courant. La fonction de sortie correspondante est de la forme :
Les valeurs des sorties associées à chacun des états sont détaillées dans ce tableau :
→ | |||||
---|---|---|---|---|---|
→ | 1 | 0 | 1 | 0 | |
→ | 1 | 0 | 1 | 0 | |
→ | 0 | 1 | 1 | 0 | |
→ | 1 | 0 | 0 | 1 |
Le second graphe d’états décrivait une machine de Mealy, où les sorties dépendent de l’état courant et des entrées. La fonction de sortie correspondante est de la forme :
Les valeurs des sorties associées à chacun des états sont détaillées dans ce tableau :
→ | ||||||||
---|---|---|---|---|---|---|---|---|
0 | – | – | → | 1 | 0 | 1 | 0 | |
1 | – | – | → | 0 | 0 | 0 | 0 | |
0 | 1 | – | → | 1 | 0 | 1 | 0 | |
1 | – | – | → | 0 | 0 | 0 | 0 | |
– | 0 | – | → | 0 | 0 | 0 | 0 | |
– | – | 0 | → | 0 | 1 | 1 | 0 | |
– | – | 1 | → | 0 | 0 | 0 | 0 | |
– | – | 0 | → | 1 | 0 | 0 | 1 | |
– | – | 1 | → | 0 | 0 | 0 | 0 |
Un automate fini est défini mathématiquement par un ensemble d’états, un ensemble d’entrées, un ensemble de sorties, un état initial, une fonction de transition et une fonction de sortie.
La fonction de transition détermine l’état suivant en fonction de l’état courant et de la valeur des entrées.
Pour une machine de Moore, la fonction de sortie détermine la valeur des sorties en fonction de l’état courant. Pour une machine de Mealy, la fonction de sortie détermine la valeur des sorties en fonction de l’état courant et de la valeur des entrées.