Mealy-Automat vs. Moore-Automat: Ausgänge, Timing, Zustandsanzahl und HDL-Beschreibung

Ein Zustandsautomat besteht aus einem Register, das den aktuellen Zustand speichert, einer kombinatorischen Logik, die den nächsten Zustand bestimmt, und einer kombinatorischen Logik, die die Ausgänge bestimmt. Mealy- und Moore-Automaten unterscheiden sich darin, wovon die Ausgänge abhängen. Beim Mealy-Automaten hängen die Ausgänge vom aktuellen Zustand und von den aktuellen Eingängen ab, sodass eine Eingangsänderung noch im selben Takt am Ausgang erscheint. Beim Moore-Automaten hängen die Ausgänge nur vom aktuellen Zustand ab, sodass eine Eingangsänderung erst nach der Zustandsänderung durch den Takt am Ausgang ankommt, einen Takt später. Mealy-Automaten brauchen weniger Zustände und reagieren schneller; Moore-Automaten liefern stabile Ausgänge und ein besser vorhersagbares Timing.

MerkmalMealy-AutomatMoore-Automat
Wovon der Ausgang abhängtAktueller Zustand und aktuelle EingängeNur aktueller Zustand
Ausgang im ZustandsdiagrammAn den Übergangspfeilen in der Form „Eingang/Ausgang“Im Zustandskreis zusammen mit dem Zustandsnamen
Reaktion auf EingängeÄndert sich ein Eingang, ändert sich der Ausgang ohne Warten auf den Takt noch im selben TaktDer Ausgang ändert sich, nachdem der nächste Takt den Zustand aktualisiert hat, einen Takt später als beim Mealy-Automaten
Zustandsanzahl (überlappender „101“-Detektor)3 Zustände (keine Übereinstimmung, 1 erkannt, 10 erkannt)4 Zustände (ein zusätzlicher Zustand „101 erkannt“ ist nötig, um 1 auszugeben)
Zustandsanzahl (allgemein)Bei gleichem Verhalten gleich viele oder weniger als beim Moore-AutomatenMealy-Zustände müssen nach dem Ausgang ihrer eingehenden Übergänge aufgeteilt werden, daher meist mehr
Glitches und StörungenGlitches und Störungen an den Eingängen gelangen über die kombinatorische Logik direkt an den AusgangStörungen an den Eingängen erreichen den Ausgang nicht; werden die Zustände so codiert, dass die Ausgänge direkt aus Bits des Zustandsregisters kommen, verschwinden auch Glitches am Ausgang
Timing-PfadeKombinatorische Logik verbindet Eingänge mit Ausgängen und verlängert Pfade einschließlich der umgebenden Logik; das Verbinden von Mealy-Automaten untereinander kann kombinatorische Schleifen erzeugenDie Ausgänge hängen nur vom Zustand nach der Taktflanke ab, daher sind die Pfade durch Register getrennt und das Timing leichter zu analysieren
Beschreibung in HDLDer kombinatorische Ausgangsblock liest neben dem Zustand auch die EingängeDie Ausgangsausdrücke lesen nur den Zustand (z. B. eine case-Anweisung, die die Ausgänge je Zustand festlegt); Ausgänge werden oft aus Registern getrieben
Passender EinsatzSteuerungen, die ohne einen Takt Verzögerung reagieren müssen, oder wenn weniger Zustände gewünscht sindSteuersignale, die saubere Ausgänge brauchen (etwa Signale in eine andere Taktdomäne oder aus dem Chip heraus), oder wenn vorhersagbares Timing wichtig ist

Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welche Variante?

Mealy-Automat
Geeignet, wenn noch im selben Takt auf Eingänge reagiert oder die Zustandsanzahl gering gehalten werden soll. Die Eingänge werden zuvor auf den Takt synchronisiert, und die Ausgänge werden so verwendet, dass ein kurzer Glitch nicht schadet, etwa indem sie von Flipflops am selben Takt übernommen werden. Werden die Ausgänge erneut in Flipflops übernommen, verschwinden die Glitches, das Timing verzögert sich dann aber wie beim Moore-Automaten um einen Takt.
Moore-Automat
Geeignet für Entwürfe, bei denen stabile Ausgänge und vorhersagbares Timing an erster Stelle stehen. Störungen an den Eingängen erreichen die Ausgänge nicht, was ihn für wichtige Steuersignale und Signale nach außen gut geeignet macht. Abzuwägen sind die um einen Takt spätere Reaktion und die Neigung zu mehr Zuständen. In realen Entwürfen wird oft je Ausgang zwischen Mealy und Moore gewählt oder beides kombiniert.

Häufige Fragen

Was bedeutet „einen Takt später“ konkret?

Man nehme einen „101“-Detektor. Ein Mealy-Automat im Zustand „10 erkannt“ setzt seinen Ausgang noch in dem Takt auf 1, in dem der Eingang 1 wird. Ein Moore-Automat setzt seinen Ausgang erst auf 1, nachdem er diese 1 an der Taktflanke übernommen hat und in den Zustand „101 erkannt“ gewechselt ist; der Ausgang ist also erst im nächsten Takt 1. Beide erkennen dieselben Eingangsfolgen, aber der Moore-Ausgang ist gegenüber dem Mealy-Ausgang um einen Takt nach hinten verschoben.

Lassen sich Mealy- und Moore-Automaten ineinander umwandeln?

Ja. Teilt man jeden Mealy-Zustand nach dem Ausgang der in ihn eingehenden Übergänge auf, erhält man einen Moore-Automaten mit demselben Ein-Ausgabe-Verhalten, allerdings kann die Zustandsanzahl wachsen, und die Ausgänge erscheinen einen Takt später. Umgekehrt ergibt sich ein Mealy-Automat, dessen Ausgänge einen Takt früher erscheinen, wenn man den Ausgang jedes Moore-Zustands an die in diesen Zustand eingehenden Übergänge schreibt; dabei lassen sich manchmal Zustände zusammenfassen.

Was entscheidet in HDL-Code, ob ein Mealy- oder Moore-Automat vorliegt?

Die Ausgangsausdrücke. Ist der Code in einen Block, der das Zustandsregister aktualisiert, und einen kombinatorischen Block für nächsten Zustand und Ausgänge aufgeteilt, liegt ein Mealy-Automat vor, wenn die Ausgangsausdrücke Eingänge enthalten, und ein Moore-Automat, wenn sie nur vom Zustand abhängen. Im kombinatorischen Block wird jedem Ausgang unter jeder Bedingung ein Wert zugewiesen, damit keine ungewollten Latches entstehen.

Hat ein Moore-Automat nie Glitches an den Ausgängen?

Eingangsänderungen und Störungen erreichen die Ausgänge nicht, aber wenn kombinatorische Logik den Zustand in Ausgänge decodiert, können mehrere gleichzeitig wechselnde Zustandsbits einen Glitch verursachen. Werden die Zustände so codiert, dass die Ausgänge direkt aus Bits des Zustandsregisters kommen, oder werden die Ausgänge erneut in Flipflops übernommen, sind die Ausgänge glitchfrei.

Verständnis prüfen

Welche Aussage zu Zustandsautomaten vom Mealy-Typ ist korrekt?

  1. ADer Ausgang wird allein vom aktuellen Zustand bestimmt und ändert sich auch bei geänderten Eingängen erst mit dem nächsten Takt
  2. BDer Ausgang wird sowohl vom aktuellen Zustand als auch vom Eingang bestimmt, sodass sich eine Eingangsänderung noch im selben Zyklus am Ausgang zeigt
  3. CEs ist eine kombinatorische Schaltung ohne Zustand
Antwort und Erläuterung anzeigen

Antwort: B. Der Ausgang wird sowohl vom aktuellen Zustand als auch vom Eingang bestimmt, sodass sich eine Eingangsänderung noch im selben Zyklus am Ausgang zeigt

Beim Mealy-Typ berücksichtigt die Ausgangslogik neben dem aktuellen Zustand auch den Eingang, sodass sich der Ausgang bei Eingangsänderung ohne Abwarten des Takts ändert und einen Zyklus früher reagiert werden kann. Manchmal genügen auch weniger Zustände. Dafür besteht ein kombinatorischer Pfad vom Eingang zum Ausgang, sodass Rauschen am Eingang am Ausgang erscheinen kann und Timing-Pfade länger werden. Manchmal wird der Ausgang daher erneut in Flipflops übernommen.

Welcher Typ von sequenzieller Schaltung (Zustandsautomat) hat einen Ausgang, der nur vom aktuellen Zustand bestimmt wird?

  1. AMealy-Automat
  2. BMoore-Automat
  3. CHarvard-Typ
Antwort und Erläuterung anzeigen

Antwort: B. Moore-Automat

Beim Moore-Automaten wird der Ausgang nur vom aktuellen Zustand bestimmt, beim Mealy-Automaten von Zustand und Eingang. Der Moore-Automat ist stabil, da sich der Ausgang erst nach einer Taktflanke ändert und Eingangsänderungen oder Glitches nicht direkt auf ihn durchschlagen, und das Timing ist gut vorhersagbar; dafür reagiert er einen Takt verzögert auf Eingänge, und die Zustandszahl neigt zum Wachsen. Der Mealy-Automat kann die Zustandszahl verringern und sofort auf Eingänge reagieren, doch Eingangsänderungen wirken direkt auf den Ausgang. Im realen Entwurf werden beide kombiniert.

Welcher grundlegende Aufbau eines in HDL geschriebenen Zustandsautomaten (State Machine) ist korrekt?

  1. ANur ein Speicher für den Zustand, ohne Logikschaltungen
  2. BNur eine Schaltung, die die Ausgänge bestimmt, ohne Zustand zu speichern
  3. CEin Register, das den aktuellen Zustand speichert, eine kombinatorische Schaltung für den nächsten Zustand und eine kombinatorische Schaltung für die Ausgänge
Antwort und Erläuterung anzeigen

Antwort: C. Ein Register, das den aktuellen Zustand speichert, eine kombinatorische Schaltung für den nächsten Zustand und eine kombinatorische Schaltung für die Ausgänge

Ein Zustandsautomat speichert den aktuellen Zustand in Flipflop-Registern, bestimmt aus aktuellem Zustand und Eingängen den nächsten Zustand durch eine kombinatorische Schaltung und aktualisiert den Zustand an der Taktflanke. Die Ausgänge werden aus dem aktuellen Zustand (und den Eingängen) kombinatorisch bestimmt. Viele Schaltungen, die einem Ablauf folgen, etwa Kommunikationsprotokolle, Verkaufsautomaten oder Ampelsteuerungen, werden als Zustandsautomaten beschrieben.

  1. Welche Aussage zur One-Hot-Kodierung bei der Zustandskodierung eines Zustandsautomaten ist korrekt?
  2. Welche Kombination gibt die Zahl der zum Speichern des Zustands nötigen Flipflops für einen Zustandsautomaten mit drei Zuständen korrekt an (Binärkodierung / One-Hot-Kodierung)?
  3. Welche Aussage zur sequenziellen Schaltung ist richtig?

Übungsfragen zu Hardwarebeschreibungssprachen und Verifikation

Wichtige Begriffe erklärt

Mealy-Automat
Zustandsautomat, dessen Ausgang vom aktuellen Zustand und vom Eingang abhängt. Eingangsänderungen wirken im selben Zyklus auf den Ausgang, aber auch Eingangsrauschen gelangt leicht zum Ausgang. Hängt der Ausgang nur vom Zustand ab, spricht man vom Moore-Automaten.
Sequenzielle Schaltung (Schaltwerk)
Logikschaltung, die ihren Zustand z. B. in Flipflops speichert und deren Ausgang von Eingang und vorherigem Zustand abhängt. Beispiele sind Zähler und Register.
Kombinatorische Schaltung
Logikschaltung, deren Ausgang nur vom aktuellen Eingang abhängt. Beispiele sind Addierer, Multiplexer und Dekodierer.
Flipflop
Grundelement sequenzieller Schaltungen, das 1 Bit speichert. Das D-Flipflop übernimmt den Eingang bei der Taktflanke.
Glitch
Unerwünschter kurzer Impuls am Ausgang, z. B. durch Laufzeitunterschiede verschiedener Signalpfade. In kombinatorischen Schaltungen auch Hazard genannt; im DA-Wandler tritt er beim Codewechsel auf.
One-Hot-Kodierung
Kodierung, bei der jedem Zustand einer Zustandsmaschine ein eigenes Flipflop zugeordnet ist und stets nur eines auf 1 steht. Die Logik ist einfach und tendenziell schnell; häufig bei FPGAs.
Kombinatorische Schleife
Struktur, in der der Ausgang einer kombinatorischen Schaltung ohne Flipflop auf den eigenen Eingang zurückgeführt wird. Sie kann schwingen oder unbestimmte Werte liefern und ist nicht timing-analysierbar, daher zu vermeiden.
Ungewolltes Latch (Unintended Latch)
Fall, dass die Logiksynthese ein wertspeicherndes Latch erzeugt, weil in einer als kombinatorisch gedachten Beschreibung unter einer Bedingung dem Ausgang nichts zugewiesen wird.

Verwandte Vergleiche