Überblick über Mealy- und Moore-Automaten
Bei einer Zustandsmaschine ist der Zustand eine Kombination der lokalen Daten und Diagrammaktivität. „Zustandsberechnung“ bedeutet, dass die lokalen Daten aktualisiert werden und Übergänge von einem aktuell aktiven Zustand zu einem neuen Zustand durchgeführt werden. Bei Modellen von Zustandsmaschinen ist der nächste Zustand eine Funktion des aktuellen Zustands und dessen Eingängen:
In dieser Gleichung:
Stellt X(n) den Zustand zum Zeitschritt n dar.
Stellt X(n+1) den Zustand beim nächsten Zeitschritt n+1 dar.
Stellt u die Eingänge dar.
Zustände werden über Zeitschritte hinweg bewahrt.
Semantik von Mealy- und Moore-Automaten
Mealy- und Moore-Automaten werden oft als die grundlegenden Branchenstandard-Paradigmen zur Modellierung von Zustandsmaschinen betrachtet. Sie können mit einer Teilmenge der Stateflow®-Diagrammsemantik Diagramme erstellen, die reine Mealy- oder Moore-Semantik implementieren. Mithilfe von Embedded Coder®, Simulink® Coder™ und der HDL Coder™-Software können Sie Mealy- und Moore-Diagramme für Simulationen und Codegenerierung verwenden. Mealy- und Moore-Semantik wird in MATLAB® nicht für eigenständige Stateflow-Diagramme unterstützt.
Semantik von Mealy-Diagrammen
Mealy-Automaten sind Zustandsmaschinen, bei denen Übergänge bei den Taktkanten erfolgen. Der Ausgang eines Mealy-Diagramms ist eine Funktion der Eingänge und des Zustands:
Bei jedem Zeitschritt wird ein Mealy-Diagramm aufgeweckt, evaluiert seinen Eingang und geht daraufhin zu einer neuen Konfiguration aktiver Zustände über; dies wird auch als nächster Zustand bezeichnet. Das Diagramm berechnet bei den Übergängen zum nächsten Zustand seinen Ausgang.
Um sicherzustellen, dass der Ausgang eine Funktion von Eingang und Zustand ist, erzwingen Mealy-Zustandsmaschinen die folgende Semantik:
Ausgänge hängen nicht vom nächsten Zustand ab.
Das Diagramm berechnet Ausgänge nur bei Übergängen, nicht innerhalb von Zuständen.
Das Diagramm wird regelmäßig basierend auf dem Systemtakt aufgeweckt.
Mealy-Automaten berechnen ihren Ausgang bei Übergängen. Daher können Mealy-Diagramme ihren ersten Ausgang berechnen, wenn der Standardpfad für das Diagramm ausgeführt wird. Wenn Sie die Diagrammeigenschaft Execute (enter) Chart At Initialization für ein Mealy-Diagramm aktivieren, findet diese Berechnung zum Zeitpunkt t = 0 (erster Zeitschritt) statt. Andernfalls findet sie zum Zeitpunkt t = 1 (nächster Zeitschritt) statt. Weitere Informationen finden Sie unter Execute (enter) chart at initialization.
Semantik von Moore-Diagrammen
Moore-Automaten sind Zustandsmaschinen, deren Ausgang bei den Taktkanten modifiziert wird. Der Ausgang eines Moore-Diagramms ist nur eine Funktion des Zustands:
Bei jedem Zeitschritt wird ein Moore-Diagramm aufgeweckt, berechnet seinen Ausgang und evaluiert daraufhin seinen Eingang, um sich für den nächsten Zeitschritt neu zu konfigurieren. Nach der Evaluierung des Eingangs kann das Diagramm jedoch zu einer neuen Konfiguration aktiver Zustände übergehen. Das Diagramm konfiguriert seinen Ausgang, bevor der Eingang evaluiert und der Zustand aktualisiert wird.
Um sicherzustellen, dass der Ausgang nur eine Funktion des aktuellen Zustands ist, erzwingen Moore-Zustandsmaschinen die folgende Semantik:
Ausgänge hängen nicht von Eingängen ab.
Ausgänge hängen nicht von vorherigen Ausgängen ab.
Ausgänge hängen nicht von temporaler Logik ab.
Moore-Automaten berechnen ihren Ausgang in Zuständen. Daher können Moore-Automaten Ausgängen nur berechnen, nachdem der Standardpfad ausgeführt wurde. Bis zu diesem Zeitpunkt nehmen die Ausgänge die Standardwerte an.
Erstellen von Mealy- und Moore-Diagrammen
Wenn Sie ein Stateflow-Diagramm erstellen, ist der Standardtyp ein hybrides Zustandsmaschinenmodell, das als Classic-Diagramm bezeichnet wird. Classic-Diagramme kombinieren die Semantik von Mealy- und Moore-Diagrammen mit der erweiterten Stateflow-Diagramm-Semantik.
Um ein Mealy-Diagramm zu erstellen, geben Sie in der MATLAB-Befehlszeile Folgendes ein:
sfnew -Mealy![]()
Um ein Moore-Diagramm zu erstellen, geben Sie in der MATLAB-Befehlszeile Folgendes ein:
sfnew -Moore![]()
Alternativ können Sie nach Hinzufügen eines Stateflow-Diagramm-Blocks zu einem Simulink-Modell den Typ der Semantik für das Diagramm auswählen, indem Sie die Diagramm-Eigenschaft State Machine Type festlegen.
Vorteile von Mealy- und Moore-Diagrammen
Mealy- und Moore-Diagramme bieten gegenüber Stateflow-Classic-Diagrammen die folgenden Vorteile:
Sie können verifizieren, dass die von Ihnen erstellten Mealy- und Moore-Diagramme den formellen Definitionen und semantischen Regeln entsprechen. Fehlermeldungen werden zur Kompilierungszeit (nicht der Entwurfszeit) angezeigt.
Moore-Diagramme bieten bei C/C++ und HDL-Zielen eine effizientere Implementierung als Classic-Diagramme.
Sie können ein Moore-Diagramm zur Modellierung einer Feedbackschleife verwenden. Bei Moore-Diagrammen haben Eingänge keine direkte Durchleitung. Sie können eine Schleife mit Feedback vom Ausgangsport zum Eingangsport gestalten, ohne eine algebraische Schleife zu integrieren. Mealy- und Classic-Diagramme verfügen über eine direkte Durchleitung und geben einen Fehler aus, wenn eine algebraische Schleife vorliegt.
