Machine de Mealy vs machine de Moore : sorties, temporisation, nombre d’états et style HDL
Une machine à états se compose d’un registre qui mémorise l’état courant, d’une logique combinatoire qui détermine l’état suivant et d’une logique combinatoire qui détermine les sorties. Les machines de Mealy et de Moore diffèrent par ce qui détermine les sorties. Dans une machine de Mealy, les sorties dépendent à la fois de l’état courant et des entrées courantes : un changement d’entrée apparaît en sortie dans le même cycle. Dans une machine de Moore, les sorties ne dépendent que de l’état courant : un changement d’entrée n’atteint la sortie qu’après la mise à jour de l’état par l’horloge, un cycle plus tard. Les machines de Mealy demandent moins d’états et réagissent plus vite ; les machines de Moore donnent des sorties stables et une temporisation plus prévisible.
| Critère | Machine de Mealy | Machine de Moore |
|---|---|---|
| Ce qui détermine la sortie | L’état courant et les entrées courantes | L’état courant seulement |
| Sortie dans un diagramme d’états | Écrite sur les flèches de transition sous la forme « entrée/sortie » | Écrite dans le cercle de l’état, avec le nom de l’état |
| Réaction aux entrées | Quand une entrée change, la sortie change dans le même cycle sans attendre l’horloge | La sortie change après la mise à jour de l’état au front d’horloge suivant, un cycle plus tard qu’avec une machine de Mealy |
| Nombre d’états (détecteur de « 101 » avec recouvrement) | 3 états (aucune correspondance, 1 reconnu, 10 reconnu) | 4 états (un état supplémentaire « 101 détecté » est nécessaire pour sortir 1) |
| Nombre d’états (en général) | Égal ou inférieur à celui d’une machine de Moore pour le même comportement | Les états de Mealy doivent être scindés selon la sortie de leurs transitions entrantes, d’où en général davantage d’états |
| Glitchs et bruit | Les glitchs et le bruit des entrées traversent la logique combinatoire jusqu’à la sortie | Le bruit des entrées n’atteint pas la sortie ; coder les états pour que les sorties soient directement des bits du registre d’état supprime aussi les glitchs en sortie |
| Chemins de temporisation | La logique combinatoire relie les entrées aux sorties, ce qui allonge les chemins incluant la logique environnante ; connecter des machines de Mealy entre elles peut créer des boucles combinatoires | Les sorties ne dépendent que de l’état après le front d’horloge : les chemins sont coupés par des registres et la temporisation est plus facile à analyser |
| Style HDL | Le bloc combinatoire des sorties lit les entrées en plus de l’état | Les expressions de sortie ne lisent que l’état (par exemple une instruction case qui fixe les sorties pour chaque état) ; les sorties sont souvent pilotées par des registres |
| Cas d’usage | Contrôle qui doit réagir sans un cycle de retard, ou quand on veut moins d’états | Signaux de contrôle qui exigent des sorties propres (vers un autre domaine d’horloge ou hors de la puce, par exemple), ou quand une temporisation prévisible compte |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.