Seite 1 von 1

Mealy/Moore: Unterschiede im Code

Verfasst: 1. Jun 2011 23:10
von mb_w
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

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 12:09
von eichi
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.

Code: Alles auswählen

S0:
  if (COIN == X0)
     {NEXT, ICE} = {S0, No};
  else ...
Wenn du jetzt nur einen Moore-Automaten bauen willst, dann verzichtest du einfach auf die Abfrage der Eingangssignale in der Art

Code: Alles auswählen

S0: {NEXT, ICE} = {S1, No}
Die Zusände bekommen dann halt eine andere Bedeutung und du bekommst dann mehr Zustände.

Gruß

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 12:17
von igor.a
eichi hat geschrieben: Wenn du jetzt nur einen Moore-Automaten bauen willst, dann verzichtest du einfach auf die Abfrage der Eingangssignale in der Art

Code: Alles auswählen

S0: {NEXT, ICE} = {S0, No}
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.
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).
so hab ich es auch in Erinnerung.

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 12:21
von eichi
Hallo,

habe grad nochmal nachgeschaut und gesehen, dass ich mich geirrt habe.

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 18:52
von doemel
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

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 19:05
von hymGo
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...
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);).
mb_w hat geschrieben: Und lassen sich dann die Automaten einfach durch Umschreiben dieses Unterschieds ineinander überführen?
Soweit ich weiß kann man die Automaten ohne weiteres ineinander überführen :wink:

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 19:27
von Thorti
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

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 20:34
von mb_w
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

Re: Mealy/Moore: Unterschiede im Code

Verfasst: 2. Jun 2011 20:42
von Pflücker
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