Mealy-machine versus Moore-machine: uitgangen, timing, aantal toestanden en HDL-stijl
Een toestandsmachine bestaat uit een register dat de huidige toestand vasthoudt, combinatorische logica die de volgende toestand bepaalt en combinatorische logica die de uitgangen bepaalt. Mealy- en Moore-machines verschillen in wat de uitgangen bepaalt. Bij een Mealy-machine hangen de uitgangen af van zowel de huidige toestand als de huidige ingangen, dus een verandering van een ingang verschijnt binnen dezelfde cyclus aan de uitgang. Bij een Moore-machine hangen de uitgangen alleen van de huidige toestand af, dus een verandering van een ingang bereikt de uitgang pas nadat de klok de toestand heeft bijgewerkt, één cyclus later. Mealy-machines hebben minder toestanden nodig en reageren sneller; Moore-machines geven stabiele uitgangen en beter voorspelbare timing.
| Kenmerk | Mealy-machine | Moore-machine |
|---|---|---|
| Wat de uitgang bepaalt | Huidige toestand en huidige ingangen | Alleen de huidige toestand |
| Uitgang in een toestandsdiagram | Op de overgangspijlen geschreven als "ingang/uitgang" | In de toestandscirkel geschreven, bij de naam van de toestand |
| Reactie op ingangen | Als een ingang verandert, verandert de uitgang binnen dezelfde cyclus zonder op de klok te wachten | De uitgang verandert nadat de volgende klok de toestand heeft bijgewerkt, één cyclus later dan bij een Mealy-machine |
| Aantal toestanden (overlappende "101"-detector) | 3 toestanden (geen match, 1 herkend, 10 herkend) | 4 toestanden (een extra toestand "101 gedetecteerd" is nodig om 1 uit te geven) |
| Aantal toestanden (in het algemeen) | Gelijk aan of minder dan bij een Moore-machine voor hetzelfde gedrag | Mealy-toestanden moeten worden gesplitst naar de uitgang van hun inkomende overgangen, dus er zijn er doorgaans meer nodig |
| Glitches en ruis | Glitches en ruis op de ingangen gaan via de combinatorische logica rechtstreeks naar de uitgang | Ruis op de ingangen bereikt de uitgang niet; toestanden zo coderen dat uitgangen rechtstreeks uit bits van het toestandsregister komen, verwijdert ook glitches aan de uitgang |
| Timingpaden | Combinatorische logica verbindt ingangen met uitgangen, wat paden met omliggende logica verlengt; Mealy-machines aan elkaar koppelen kan combinatorische lussen opleveren | Uitgangen hangen alleen af van de toestand na de klokflank, dus paden worden door registers onderbroken en de timing is makkelijker te analyseren |
| HDL-stijl | Het combinatorische uitgangsblok leest naast de toestand ook de ingangen | Uitgangsexpressies lezen alleen de toestand (bijvoorbeeld een case-statement dat per toestand de uitgangen zet); uitgangen worden vaak vanuit registers aangestuurd |
| Waar het past | Besturing die zonder een cyclus vertraging moet reageren, of wanneer minder toestanden gewenst zijn | Besturingssignalen die schone uitgangen nodig hebben (zoals signalen naar een ander klokdomein of buiten de chip), of wanneer voorspelbare timing belangrijk is |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.