Mealy/Moore: Unterschiede im Code
Mealy/Moore: Unterschiede im Code
Hallo,
mir ist noch nicht so ganz klar geworden, wo der Unterschied zwischen einem Mealy- und einem Moore-Automaten auf Code-Ebene liegt.
Mir ist klar, dass die Ausgangssignale beim Mealy-Automaten vom aktuellen Zustand und den Eingabesignalen abhängen und ebenso, dass bei einem Moore-Automaten die Ausgangssignale nur vom aktuellen Zustand abhängen. Wie aber unterscheiden sich dann die Implementierungen?
Mir ist der Unterschied aufgefallen, dass beim Mealy-Automaten, z.B. der Eismaschine (Foliensatz 4, Folie 91), das Ausgangssignal (ICE) in der Zustandsübergangslogik explizit bei jedem Zustandswechsel angegeben wird. Das ist beim Moore-Automaten nicht der Fall. Dafür sind beim Moore-Automaten die Ausgangssignale über assign-Zuweisungen fest mit den Zuständen verdrahtet (z.B. Lösung von Aufgabe 2.2.2, Seite 10).
Ist dies der Unterschied? Kann es noch andere Unterschiede geben? Und lassen sich dann die Automaten einfach durch Umschreiben dieses Unterschieds ineinander überführen?
Vielen Dank für eure Hilfe!
Michael
mir ist noch nicht so ganz klar geworden, wo der Unterschied zwischen einem Mealy- und einem Moore-Automaten auf Code-Ebene liegt.
Mir ist klar, dass die Ausgangssignale beim Mealy-Automaten vom aktuellen Zustand und den Eingabesignalen abhängen und ebenso, dass bei einem Moore-Automaten die Ausgangssignale nur vom aktuellen Zustand abhängen. Wie aber unterscheiden sich dann die Implementierungen?
Mir ist der Unterschied aufgefallen, dass beim Mealy-Automaten, z.B. der Eismaschine (Foliensatz 4, Folie 91), das Ausgangssignal (ICE) in der Zustandsübergangslogik explizit bei jedem Zustandswechsel angegeben wird. Das ist beim Moore-Automaten nicht der Fall. Dafür sind beim Moore-Automaten die Ausgangssignale über assign-Zuweisungen fest mit den Zuständen verdrahtet (z.B. Lösung von Aufgabe 2.2.2, Seite 10).
Ist dies der Unterschied? Kann es noch andere Unterschiede geben? Und lassen sich dann die Automaten einfach durch Umschreiben dieses Unterschieds ineinander überführen?
Vielen Dank für eure Hilfe!
Michael
Re: Mealy/Moore: Unterschiede im Code
Hallo,
ich würde nicht unbedingt sagen, dass sich der Unterschied Moore/Mealy nur auf die Ausgangssignale bezieht, sondern viel mehr auf die Art wie der Zustandsübergang durchgeführt wird. Um mal bei dem Beispiel des Eisautomaten zu bleiben gehe ich im folgenden mal vom Zustand S0 aus. Da aktuell ein Mealy-Automat vorliegt wird eben geprüft welche Eingabe COIN gemacht wurde und danach wird der nächste Zustand bestimmt.
Wenn du jetzt nur einen Moore-Automaten bauen willst, dann verzichtest du einfach auf die Abfrage der Eingangssignale in der Art
Die Zusände bekommen dann halt eine andere Bedeutung und du bekommst dann mehr Zustände.
Gruß
ich würde nicht unbedingt sagen, dass sich der Unterschied Moore/Mealy nur auf die Ausgangssignale bezieht, sondern viel mehr auf die Art wie der Zustandsübergang durchgeführt wird. Um mal bei dem Beispiel des Eisautomaten zu bleiben gehe ich im folgenden mal vom Zustand S0 aus. Da aktuell ein Mealy-Automat vorliegt wird eben geprüft welche Eingabe COIN gemacht wurde und danach wird der nächste Zustand bestimmt.
Code: Alles auswählen
S0:
if (COIN == X0)
{NEXT, ICE} = {S0, No};
else ...
Code: Alles auswählen
S0: {NEXT, ICE} = {S1, No}
Gruß
Zuletzt geändert von eichi am 2. Jun 2011 12:21, insgesamt 1-mal geändert.
Re: Mealy/Moore: Unterschiede im Code
Ich denke, das ist falsch. Auch beim Moore-Automaten hängt der nächste Zustand durchaus von den Eingaben ab, sonst hätte jeder Zustand ja immer nur einen möglichen Nachfolgezustand.eichi hat geschrieben: Wenn du jetzt nur einen Moore-Automaten bauen willst, dann verzichtest du einfach auf die Abfrage der Eingangssignale in der ArtCode: Alles auswählen
S0: {NEXT, ICE} = {S0, No}
so hab ich es auch in Erinnerung.Mir ist der Unterschied aufgefallen, dass beim Mealy-Automaten, z.B. der Eismaschine (Foliensatz 4, Folie 91), das Ausgangssignal (ICE) in der Zustandsübergangslogik explizit bei jedem Zustandswechsel angegeben wird. Das ist beim Moore-Automaten nicht der Fall. Dafür sind beim Moore-Automaten die Ausgangssignale über assign-Zuweisungen fest mit den Zuständen verdrahtet (z.B. Lösung von Aufgabe 2.2.2, Seite 10).
Re: Mealy/Moore: Unterschiede im Code
Hallo,
habe grad nochmal nachgeschaut und gesehen, dass ich mich geirrt habe.
habe grad nochmal nachgeschaut und gesehen, dass ich mich geirrt habe.
Re: Mealy/Moore: Unterschiede im Code
Also so wenn man reine Moore-/Mealy-Automaten in Verilog implementiert (der Eisautomat aus der Vorlesung ist kein reiner) wird beim Moore im synchronem allways-Block die Ausgänge gesetzt wenn sich der Zustand ändert und beim Mealy gäbe es einen (oder mehrere) extra Block in dem asynchron die Ausgänge gesetzt werden je nachdem was gerade an den Eingängen anliegt.
MfG Christoph
MfG Christoph
Re: Mealy/Moore: Unterschiede im Code
Also beim Moore Automat reicht es eigentlich meistens, wenn man die Ausgänge direkt über ein assign zuweist. Denn diese hängen ja nur von den Zustände ab und man kann daher einfach mit dem Zustand vergleichen (z.B. assign out = (Zustand == x);).doemel hat geschrieben:Also so wenn man reine Moore-/Mealy-Automaten in Verilog implementiert (der Eisautomat aus der Vorlesung ist kein reiner) wird beim Moore im synchronem allways-Block die Ausgänge gesetzt wenn sich der Zustand ändert...
Soweit ich weiß kann man die Automaten ohne weiteres ineinander überführenmb_w hat geschrieben: Und lassen sich dann die Automaten einfach durch Umschreiben dieses Unterschieds ineinander überführen?

Re: Mealy/Moore: Unterschiede im Code
Hallo,
man kann beide Automatentypen unterschiedlich beschreiben, da gibt es keine feste Regel.
Bei Mealy werden die Ausgänge (entweder über assign oder in einem always-Block) abhängig vom Zustand und den Eingängen ausgegeben.
Bei Moore dürfen die Ausgangssignale nur vom Zustand abhängen.
Gruß
Thorsten
man kann beide Automatentypen unterschiedlich beschreiben, da gibt es keine feste Regel.
Bei Mealy werden die Ausgänge (entweder über assign oder in einem always-Block) abhängig vom Zustand und den Eingängen ausgegeben.
Bei Moore dürfen die Ausgangssignale nur vom Zustand abhängen.
Gruß
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Mealy/Moore: Unterschiede im Code
Hallo,
danke schonmal für die Antworten!
Ich habe mir selbst auch noch ein paar Gedanken gemacht und bin zu dem Schluss gekommen, dass das Beispiel mit der Eismaschine aus Foliensatz 4 missverständlich ist. Der Automat lässt sich auch mit drei Zuständen beschreiben (siehe Anhang), was ihn "more mealy" macht. Wenn das so geht, ist mir der Unterschied zwischen Moore und Mealy letztlich auch klar geworden
Viele Grüße
Michael
danke schonmal für die Antworten!
Ich habe mir selbst auch noch ein paar Gedanken gemacht und bin zu dem Schluss gekommen, dass das Beispiel mit der Eismaschine aus Foliensatz 4 missverständlich ist. Der Automat lässt sich auch mit drei Zuständen beschreiben (siehe Anhang), was ihn "more mealy" macht. Wenn das so geht, ist mir der Unterschied zwischen Moore und Mealy letztlich auch klar geworden

Viele Grüße
Michael
- Dateianhänge
-
- Echte Mealy-Eismaschine mit 3 Zuständen. Die Eisausgabe fehlt jetzt, kann man sich aber dazu denken.
- mealy_ice.JPG (135.04 KiB) 1487 mal betrachtet
Re: Mealy/Moore: Unterschiede im Code
Weil ich es gerade vor wenigen Minuten gehört hatte:
Zitat: "Der (Automat) ist aber aus pädagogischen Gründen gewählt, damit ich ihnen mal zeigen kann, dass man in einer Realisierung des Automaten durchaus mal mischen (zwischen Moore und Mealy) kann an der Stelle. Man ist nicht festgenagelt darauf in Verilog nur Mealy- oder nur Morre-Übergänge zu haben[...]."
Ungefähr 50:51 am 25.05
Zitat: "Der (Automat) ist aber aus pädagogischen Gründen gewählt, damit ich ihnen mal zeigen kann, dass man in einer Realisierung des Automaten durchaus mal mischen (zwischen Moore und Mealy) kann an der Stelle. Man ist nicht festgenagelt darauf in Verilog nur Mealy- oder nur Morre-Übergänge zu haben[...]."

Ungefähr 50:51 am 25.05