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.
| Merkmal | Mealy-Automat | Moore-Automat |
|---|---|---|
| Wovon der Ausgang abhängt | Aktueller Zustand und aktuelle Eingänge | Nur aktueller Zustand |
| Ausgang im Zustandsdiagramm | An 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 Takt | Der 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-Automaten | Mealy-Zustände müssen nach dem Ausgang ihrer eingehenden Übergänge aufgeteilt werden, daher meist mehr |
| Glitches und Störungen | Glitches und Störungen an den Eingängen gelangen über die kombinatorische Logik direkt an den Ausgang | Stö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-Pfade | Kombinatorische 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 erzeugen | Die 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 HDL | Der kombinatorische Ausgangsblock liest neben dem Zustand auch die Eingänge | Die 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 Einsatz | Steuerungen, die ohne einen Takt Verzögerung reagieren müssen, oder wenn weniger Zustände gewünscht sind | Steuersignale, 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.