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.

KenmerkMealy-machineMoore-machine
Wat de uitgang bepaaltHuidige toestand en huidige ingangenAlleen de huidige toestand
Uitgang in een toestandsdiagramOp de overgangspijlen geschreven als "ingang/uitgang"In de toestandscirkel geschreven, bij de naam van de toestand
Reactie op ingangenAls een ingang verandert, verandert de uitgang binnen dezelfde cyclus zonder op de klok te wachtenDe 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 gedragMealy-toestanden moeten worden gesplitst naar de uitgang van hun inkomende overgangen, dus er zijn er doorgaans meer nodig
Glitches en ruisGlitches en ruis op de ingangen gaan via de combinatorische logica rechtstreeks naar de uitgangRuis 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
TimingpadenCombinatorische logica verbindt ingangen met uitgangen, wat paden met omliggende logica verlengt; Mealy-machines aan elkaar koppelen kan combinatorische lussen opleverenUitgangen hangen alleen af van de toestand na de klokflank, dus paden worden door registers onderbroken en de timing is makkelijker te analyseren
HDL-stijlHet combinatorische uitgangsblok leest naast de toestand ook de ingangenUitgangsexpressies lezen alleen de toestand (bijvoorbeeld een case-statement dat per toestand de uitgangen zet); uitgangen worden vaak vanuit registers aangestuurd
Waar het pastBesturing die zonder een cyclus vertraging moet reageren, of wanneer minder toestanden gewenst zijnBesturingssignalen 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.

Wanneer welke variant?

Mealy-machine
Geschikt om in dezelfde cyclus op ingangen te reageren of het aantal toestanden laag te houden. Synchroniseer de ingangen eerst met de klok en gebruik de uitgangen waar een korte glitch geen kwaad kan, bijvoorbeeld door ze op dezelfde klok in flipflops te vangen. Registers op de uitgangen verwijderen glitches, maar voegen dezelfde vertraging van één cyclus toe als bij een Moore-machine.
Moore-machine
Geschikt voor ontwerpen die stabiele uitgangen en voorspelbare timing voorop stellen. Ruis op de ingangen bereikt de uitgangen niet, wat goed past bij belangrijke besturingssignalen en signalen die de chip verlaten. Weeg de reactie die één cyclus later komt en de neiging tot meer toestanden mee. In echte ontwerpen wordt vaak per uitgang voor Mealy of Moore gekozen, of worden de twee gecombineerd.

Veelgestelde vragen

Wat betekent "één cyclus later" concreet?

Neem een "101"-detector. Een Mealy-machine in de toestand "10 herkend" zet haar uitgang op 1 in dezelfde cyclus waarin de ingang 1 wordt. Een Moore-machine zet haar uitgang pas op 1 nadat ze die 1 op de klokflank heeft ingelezen en naar de toestand "101 gedetecteerd" is gegaan, dus de uitgang is 1 in de volgende cyclus. Beide detecteren dezelfde ingangsreeksen, maar de Moore-uitgang ligt één cyclus later dan de Mealy-uitgang.

Kunnen Mealy- en Moore-machines in elkaar worden omgezet?

Ja. Elke Mealy-toestand splitsen naar de uitgang van de overgangen die erin binnenkomen, geeft een Moore-machine met hetzelfde ingang-uitganggedrag, al kan het aantal toestanden groeien en verschijnen de uitgangen één cyclus later. Omgekeerd geeft het schrijven van de uitgang van elke Moore-toestand op de overgangen die die toestand binnenkomen een Mealy-machine waarvan de uitgangen één cyclus eerder verschijnen, en soms kunnen dan toestanden worden samengevoegd.

Wat maakt in HDL-code een machine Mealy of Moore?

De uitgangsexpressies. Als de code is opgesplitst in een blok dat het toestandsregister bijwerkt en een combinatorisch blok dat de volgende toestand en de uitgangen bepaalt, is de machine Mealy als de uitgangsexpressies ingangen bevatten en Moore als ze alleen van de toestand afhangen. Ken in het combinatorische blok elke uitgang onder elke voorwaarde een waarde toe, om onbedoelde latches te voorkomen.

Heeft een Moore-machine nooit glitches aan de uitgangen?

Veranderingen en ruis op de ingangen bereiken de uitgangen niet, maar als combinatorische logica de toestand naar uitgangen decodeert, kunnen meerdere toestandsbits die tegelijk veranderen een glitch veroorzaken. Toestanden zo coderen dat uitgangen rechtstreeks uit bits van het toestandsregister komen, of registers op de uitgangen zetten, geeft glitchvrije uitgangen.

Test uw begrip

Welke uitspraak over de kenmerken van een toestandsmachine van het Mealy-type is juist?

  1. ADe uitgang wordt alleen door de huidige toestand bepaald en verandert niet tot de volgende klok, ook niet als de ingang verandert
  2. BDe uitgang wordt door zowel de huidige toestand als de ingang bepaald, zodat een verandering van de ingang binnen dezelfde cyclus in de uitgang zichtbaar wordt
  3. CHet is een combinatorische schakeling zonder toestand
Antwoord en toelichting tonen

Antwoord: B. De uitgang wordt door zowel de huidige toestand als de ingang bepaald, zodat een verandering van de ingang binnen dezelfde cyclus in de uitgang zichtbaar wordt

Bij het Mealy-type kijkt de logica van de uitgang naast de huidige toestand ook naar de ingang, dus als de ingang verandert, verandert de uitgang zonder op de klok te wachten, en kan één cyclus eerder worden gereageerd. Ook kan het aantal toestanden kleiner zijn. Doordat er van ingang tot uitgang een combinatorisch pad loopt, kan ruis op de ingang in de uitgang verschijnen en worden de timingpaden langer. De uitgang wordt soms opnieuw met een flipflop opgevangen en dan gebruikt.

Welk type toestandsmachine (sequentieel circuit) heeft een uitgang die alleen door de huidige toestand wordt bepaald?

  1. AMealy-type
  2. BMoore-type
  3. CHarvard-type
Antwoord en toelichting tonen

Antwoord: B. Moore-type

Bij het Moore-type wordt de uitgang alleen door de huidige toestand bepaald, bij het Mealy-type door zowel toestand als ingang. Moore is stabiel omdat de uitgang pas na een klokflank verandert en ingangsveranderingen of glitches niet rechtstreeks naar de uitgang doorwerken, en de timing is gemakkelijk te voorspellen, maar de reactie op de ingang is één klok vertraagd en het aantal toestanden neemt vaak toe. Mealy kan het aantal toestanden verminderen en reageert direct op de ingang, maar veranderingen van de ingang werken rechtstreeks door naar de uitgang. In echte ontwerpen worden beide gecombineerd.

Welke uitspraak over de basisopbouw van een in HDL geschreven toestandsmachine (state machine) is juist?

  1. AAlleen geheugen om de toestand te onthouden, zonder logische schakelingen
  2. BAlleen een schakeling die de uitgang bepaalt, zonder de toestand te onthouden
  3. CEen register dat de huidige toestand onthoudt, een combinatorische schakeling die de volgende toestand bepaalt en een combinatorische schakeling die de uitgang bepaalt
Antwoord en toelichting tonen

Antwoord: C. Een register dat de huidige toestand onthoudt, een combinatorische schakeling die de volgende toestand bepaalt en een combinatorische schakeling die de uitgang bepaalt

Een toestandsmachine onthoudt de huidige toestand in het register van flipflops, bepaalt uit huidige toestand en ingangen met een combinatorische schakeling de volgende toestand en werkt de toestand bij op de klokflank. De uitgang wordt met een combinatorische schakeling uit de huidige toestand (en de ingangen) bepaald. Veel schakelingen die volgens een procedure werken, zoals besturing van communicatieprotocollen, frisdrankautomaten en verkeerslichten, worden als toestandsmachine geschreven.

  1. Welke uitspraak over de kenmerken van one-hot-codering bij het coderen van toestanden van een toestandsmachine is juist?
  2. Welke combinatie van het aantal flipflops dat nodig is om de toestand te onthouden bij een toestandsmachine met drie toestanden is juist (binaire codering/one-hot-codering)?
  3. Welke omschrijving van een sequentieel circuit is juist?

Oefenvragen over Hardwarebeschrijvingstalen en verificatie

Belangrijke termen uitgelegd

Mealy-machine
Toestandsmachine waarvan de uitgang afhangt van zowel de huidige toestand als de ingang. Veranderingen van de ingang verschijnen in dezelfde cyclus aan de uitgang, maar ruis op de ingang werkt ook gemakkelijker door. Een machine waarvan de uitgang alleen van de toestand afhangt is een Moore-machine.
Sequentiële schakeling
Logische schakeling die een toestand onthoudt, bijvoorbeeld met flipflops, en waarvan de uitgang zowel door de ingang als door de eerdere toestand wordt bepaald. Voorbeelden: tellers en registers.
Combinatorische schakeling
Logische schakeling waarvan de uitgang alleen van de huidige ingangen afhangt. Voorbeelden zijn opteller, multiplexer en decoder.
Flipflop
Basiselement van een sequentiële schakeling dat 1 bit informatie opslaat. Een D-flipflop neemt de ingang over op de flank van de klok.
Glitch
Ongewenste puls die heel kort op de uitgang verschijnt, bijvoorbeeld door verschillen in vertraging tussen signaalpaden. In combinatorische schakelingen ook hazard genoemd; bij DA-omzetters ontstaat hij bij het omschakelen van codes.
One-hot-codering
Codering waarbij aan elke toestand van een toestandsmachine één flipflop wordt toegewezen en er altijd maar één op 1 staat. De logica is eenvoudig en vaak snel, en wordt veel gebruikt bij FPGA's.
Combinatorische lus (combinational loop)
Structuur waarin de uitgang van een combinatorische schakeling zonder flipflop terugkeert naar de eigen ingang. Kan oscilleren of onbepaald zijn en laat geen timinganalyse toe, dus wordt vermeden.
Onbedoelde latch (unintended latch)
Situatie waarbij in een beschrijving die een combinatorische schakeling moet zijn, onder een bepaalde voorwaarde geen waarde aan de uitgang wordt toegewezen, waardoor logische synthese een latch maakt die de waarde vasthoudt.

Verwante vergelijkingen