Mealy/Moore: Unterschiede im Code

mb_w
Neuling
Neuling
Beiträge: 9
Registriert: 29. Sep 2008 15:41

Mealy/Moore: Unterschiede im Code

Beitrag 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

eichi
Neuling
Neuling
Beiträge: 8
Registriert: 21. Aug 2010 16:13

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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ß
Zuletzt geändert von eichi am 2. Jun 2011 12:21, insgesamt 1-mal geändert.

Benutzeravatar
igor.a
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 143
Registriert: 28. Sep 2009 16:05

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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.

eichi
Neuling
Neuling
Beiträge: 8
Registriert: 21. Aug 2010 16:13

Re: Mealy/Moore: Unterschiede im Code

Beitrag von eichi »

Hallo,

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

doemel
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 23. Okt 2010 11:45
Kontaktdaten:

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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

Benutzeravatar
hymGo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 209
Registriert: 4. Okt 2009 23:17

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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:

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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
Assistent zur Vorlesung TGDI im WS 11/12

mb_w
Neuling
Neuling
Beiträge: 9
Registriert: 29. Sep 2008 15:41

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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
Dateianhänge
Echte Mealy-Eismaschine mit 3 Zuständen. Die Eisausgabe fehlt jetzt, kann man sich aber dazu denken.
Echte Mealy-Eismaschine mit 3 Zuständen. Die Eisausgabe fehlt jetzt, kann man sich aber dazu denken.
mealy_ice.JPG (135.04 KiB) 1390 mal betrachtet

Pflücker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 129
Registriert: 21. Sep 2010 14:27

Re: Mealy/Moore: Unterschiede im Code

Beitrag 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

Antworten

Zurück zu „Archiv“