Forum: FPGA, VHDL & Co. State Machine zwei oder ein Prozess


von markus (Gast)


Lesenswert?

Hallo,
ich sehe oft Beispiele von State Machinen mit zwei Prozessen(nur CLK im 
ersten Prozess, State<= Nextstate usw). Wieso wird das so gemacht? Was 
sind die Vorteile für diese Vorgehen. Warum nicht nur ein Prozess?
Vielen Dank
Viele Grüße

von Patrick C. (pcrom)


Lesenswert?

Welche Sprache ?
Welche Hardware ?
Beispiel ?

von Erik B. (erik_b976)


Lesenswert?

In der 2-Prozess FSM siehst du leichter was später FF werden (sollen).

In der 2-Prozess FSM kannst du leichter kombinatorischen Mist machen und 
nicht synchrone Ausgänge erzeugen.

Ist mehr ein Lesbarkeits-Ding, nicht zwingend besser. Ich verwende sie 
gar nicht.


Patrick C. schrieb:
> Welche Sprache ?

Natürlich VDHL, in Verilog gibs blocking und non-blocking.

von Clemens N. (cleemens)


Lesenswert?

Erik B. schrieb:
> Natürlich VDHL, in Verilog gibs blocking und non-blocking.

Natürlich kannst du auch ein Verilog den Kombinatorischen vom Statelogik 
Zeug trennen...
z.B. kuck hier http://www.asic-world.com/tidbits/verilog_fsm.html

von Erik B. (erik_b976)


Lesenswert?

Können ja, müssen nein.

Es fehlt noch der Hinweis, dass ich auch ohne 2-Prozess FSM asynchrone 
Outputs haben kann, die vom State abhängen. ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Erik B. schrieb:
> In der 2-Prozess FSM kannst du leichter kombinatorischen Mist machen
Wie z.B. die bei Anfängern überaus beliebte kombinatorische Schleife... 
;-)

von Burkhard K. (buks)


Lesenswert?

markus schrieb:
> Wieso wird das so gemacht? Was
> sind die Vorteile für diese Vorgehen. Warum nicht nur ein Prozess?

Wenn ich nur einen Prozess verwende, ist dieser zwangsläufig getaktet 
(sequentiell), d.h. alle Zuweisungen an Signale innerhalb des Blocks 
landen in einem Register - auch wenn eine Speicherung nicht erforderlich 
oder gewünscht ist. Registrierte Signale werden um jeweils einen Takt 
verzögert ausgegeben.

Mit der Zwei-Prozess-Schreibweise lassen sich sequentielle und 
kombinatorische Logik trennen. Der erste Prozess ("State Register") ist 
sequentiell, der zweite ("Next-State-Logic") ein kombinatorischer (d.h. 
nicht getaktet). Grundsätzlich ist die FSM-Beschreibung nicht auf zwei 
Prozesse beschränkt, denkbar sind auch drei oder sogar vier Prozesse:
  1. State Register (sequentieller/getakteter Prozess)
  2. Next-State Logic (kombinatorischer Prozess)
  3. Moore-Logic (kombinatorischer Prozess)
  4. Mealy-Logic (kombinatorischer Prozess)

Welche Form verwendet wird, kann von der Aufgabe, aber auch den 
Präferenzen des Autors abhängen. Es gibt verschiedene Schulen und jeder 
ihrer Änhänger hält "seine" Methode selbstverständlich für die einzig 
wahre. Entsprechende Fragen im Forum werden mit Threads nicht unter 50 
Beiträgen bestraft ;-)

von markus (Gast)


Lesenswert?

Burkhard K. schrieb:
> Registrierte Signale werden um jeweils einen Takt
> verzögert ausgegeben.
Der Statz hat mich hellhörig gemacht, aber bei dem Prozess mit zwei wird 
doch auch alles um einen Takt verzögert?

von Vancouver (Gast)


Lesenswert?

markus schrieb:
> aber bei dem Prozess mit zwei wird
> doch auch alles um einen Takt verzögert?


Nur die Ausgabe des getakteten Prozesses wird bis zum nächsten Takt 
verzögert. Die Ausgabe des kombinatorischen Prozesses erfolgt sofort. Da 
die Ausgabe des kombinatorischen Prozesses aber ausschließlich als 
Eingabe für den getakteten Prozess verwendet wird, ändert die State 
Machine ihre Ausgänge nur Taktsynchron.

von markus (Gast)


Lesenswert?

Vielen Dank für eure Antworten.

von Burkhard K. (buks)


Lesenswert?

Vancouver schrieb:
> Nur die Ausgabe des getakteten Prozesses wird bis zum nächsten Takt
> verzögert. Die Ausgabe des kombinatorischen Prozesses erfolgt sofort.

Im XST User Guide "HDL Coding Techniques": 
ftp://ftp.xilinx.com/pub/documentation/misc/xstug_examples.zip findet 
sich unter HDL_Coding_Techniques/state_machines/state_machines_2.vhd ein 
konkretes Beispiel.

Der erste Prozess enthält ein
1
rising_edge(clk)
 Statement (und "clk" in der Sensitivity-Liste), dem zweiten Prozess 
fehlt dieses Statement; er ist daher kombinatorisch (hier steht dann 
"state" in der Sensitivity-Liste).

von Erik B. (erik_b976)


Lesenswert?

Vancouver schrieb:
> Da
> die Ausgabe des kombinatorischen Prozesses aber ausschließlich als
> Eingabe für den getakteten Prozess verwendet wird

Nicht zwingend, siehe https://de.wikipedia.org/wiki/Mealy-Automat

von Vancouver (Gast)


Lesenswert?

Beim Mealy nicht, das stimmt. Hatte jetzt nur den Moore im Kopf. Aber 
Mealy kann auch nicht vernünftig mit einer Ein-Prozess-Schreibweise 
implementiert werden. Außer man ist bereit, es richtig hässlich zu 
machen.

von Erik B. (erik_b976)


Lesenswert?

Vancouver schrieb:
> Außer man ist bereit, es richtig hässlich zu
> machen.

Jetzt hast du mich neugierig gemacht. Wie in einem Prozess mit Clock, so 
dass er noch synthesefähig bleibt?

Und komm mir jetzt nicht mit nebenläufigen weiteren Zuweisungen, das 
gilt nicht. ;)

von Vancouver (Gast)


Lesenswert?

Erik B. schrieb:
> Und komm mir jetzt nicht mit nebenläufigen weiteren Zuweisungen, das
> gilt nicht. ;)

Ich fürchte, darauf würde es hinauslaufen. Wie bei einem asynchronen 
Reset, also außerhalb des 'if rising_edge()'-Scopes. Der asynchrone 
Reset ist der einzige Fall, wo man so etwas tun darf ohne vom VHDL-Gott 
mit einem Blitz gesteinigt zu werden. Ob das in anderen Fällen noch 
synthesefähig ist, habe ich nie probiert. Es gibt keinen rationalen 
Grund, das zu tun.

von J. S. (engineer) Benutzerseite


Lesenswert?

Vancouver schrieb:
> Beim Mealy nicht, das stimmt. Hatte jetzt nur den Moore im Kopf. Aber
> Mealy kann auch nicht vernünftig mit einer Ein-Prozess-Schreibweise
> implementiert werden. Außer man ist bereit, es richtig hässlich zu
> machen.

Verwendet eigentlich noch jemand die M&M-Unterscheidung?

Welche Signale gehen denn in heutige FPGAs noch vom Eingang 
unsynchronisiert auf irgendwelche FSMs und/oder von dort zusammen mit 
Eingängen direkt auf Ausgänge?

Eine Abhängigkeit von Eingängen gemäss Mealy ist doch eigentlich 
obsolet, wenn man die FFs der Synchstufen als Zustand nimmt.

Man könnte nun mikroskopisch bei der Fomulierung der FSM direkt variable 
Signale mit denen der FSM verknüpfen und behaupten, dass das eine Mealy 
Architektur sei - praktisch schnappt man sich aber aus der delay pipe 
der Signale nur das aus der vorherigen Zeitstufe.

Die einzige Ecke wo man sowas heute noch findet, sind IO-Umschaltstufen, 
wo ein OE eines externen Prozessors direkt verknüpft werden muss, um 
irgendwelche IOs ansychron zum internen Takt oder Pseudosynchron zum 
externen Takt umzusetzen und wir kennen ja die Timingthemen rund herum.

von S. R. (svenska)


Lesenswert?

Jürgen S. schrieb:
> Verwendet eigentlich noch jemand die M&M-Unterscheidung?

Im FPGA will man Moore benutzen, aber in Software ist Mealy kein Problem 
(damit spart man sich Zustände und kann schneller reagieren). Allerdings 
taktet man eine FSM (wenn man sie taktet) im Controller ein paar 
Größenordnungen langsamer.

von Burkhard K. (buks)


Lesenswert?

Jürgen S. schrieb:
> Verwendet eigentlich noch jemand die M&M-Unterscheidung?

Den kleinen Unterschied zu kennen, kann bei kritischem Timinig hilfreich 
sein - Mealy spart in der Regel Zustände/Takte ein.

Jürgen S. schrieb:
> Eine Abhängigkeit von Eingängen gemäss Mealy ist doch eigentlich
> obsolet, wenn man die FFs der Synchstufen als Zustand nimmt.

Bei der Flankenerkennung des Eingangsignals sofern diese als 
Moore-Automat implementiert wurde. Eine Mealy-FSM dagegen schiebt am 
Eingang vorhandene Glitches während der Dauer des generierten Pulses an 
den Ausgang durch.

von Erik B. (erik_b976)


Lesenswert?

Jürgen S. schrieb:
> Welche Signale gehen denn in heutige FPGAs noch vom Eingang
> unsynchronisiert auf irgendwelche FSMs und/oder von dort zusammen mit
> Eingängen direkt auf Ausgänge?

Betrachte das nicht einfach auf den FPGA als ganzes, sondern einzelne 
Module.

Dann kann man sehr wohl kombinatorische Ausgänge haben, um FF 
(Ressourcen) oder Takte (Timing) zu sparen.

Solange "man weiß was man tut"(TM) und das Ziel ein internes FF unter 
Timing-Kontrolle ist, ist das auch gar kein Problem.

Bei Ausgängen oder irgendwelchen Hardmacros kann es sehr wohl zu Hazards 
führen. Aber das liegt in der Natur der statischen Timinganalyse. ;)

Und das Eingänge und Resets einsynchronisiert werden müssen, sollte eh 
klar sein, nicht wahr? :D

von J. S. (engineer) Benutzerseite


Lesenswert?

Erik B. schrieb:
> Und das Eingänge und Resets einsynchronisiert werden müssen, sollte eh
> klar sein, nicht wahr? :D

Genau deshalb habe ich das ja angeführt :-) Damit hat man streng 
genommen keinen Mealy Automaten mehr. Den hat man insbesondere deshalb 
nicht, weil die FFs im FPGA (und das nehme ich jetzt mal her) hin und 
her getrieben werden und damit die entstehende Kombinatorik timing 
orientiert gesetzt wird. Im Extremfall wird damit die eigentliche 
Realisation der FSM eines formell aus Moore Automat formierten FSM eine 
Mealy und umgekehrt.

Daher macht die Unterscheidung nur im Bezug auf die Art der Formulierung 
einen Sinn.

Burkhard K. schrieb:
> Bei der Flankenerkennung des Eingangsignals sofern diese als
> Moore-Automat implementiert wurde. Eine Mealy-FSM dagegen schiebt am
> Eingang vorhandene Glitches während der Dauer des generierten Pulses an
> den Ausgang durch.

Und genau das braucht kein Mensch. Im Gegenteil:

Wir haben ja sogar gesehen, dass selbst die Formulierung als Moore in 
VHDL nicht 100% das Problem löst, wenn FFs wieder durch die Gegend 
geschoben und in das Design gedrängt werden. Man denkt, man habe ein von 
den Eingängen isoliertes synchrones Verhalten definiert und die Synthese 
produziert ein über das Design verteiltes Verhalten mit zeitabhängig der 
Eingänge.

Siehe Reset-Diskussion

von J. S. (engineer) Benutzerseite


Lesenswert?

S. R. schrieb:
> Jürgen S. schrieb:
>> Verwendet eigentlich noch jemand die M&M-Unterscheidung?
>
> Im FPGA will man Moore benutzen, aber in Software ist Mealy kein Problem

Richtig, aber wir sind ja hier im VHDL-Teil des Forums, und:

Wenn man es pragmatisch sieht, ist Software mit seinen getakteten 
Funktionen auch eine Art von "Einsynchronisation" und damit eine 
Repräsentation eines synchronen Designs. Es ist sogar mit Bezug auf das 
im FPGA mitunter nicht perfekt handhabbare Problem der FSMs und FF 
Distribution sogar ein sehr! perfektes synchrones Design. Von daher kann 
man in SW ->scheinbar<- munter Mealys bauen, hat aber zu keinem 
Zeitpunkt die Probleme, die unter diesem Begriff bei HW-Entwicklung 
verbucht sind.

Die Thematik macht eigentlich nur bei echten Bausteinen mit fixem 
Verhalten Sinn, wenn man in der Tat Signale (oder nennen wir sie besser 
Leitungen) um einen physischen Baustein herum geführt werden, dessen 
Speicherwirkung umgehen und damit echte Eingänge weiterverarbeitet 
werden.

Im FPGA fallen mir da nur externe Resetleitungen und Taktleitungen ein, 
die auf PLLs gehen und weiter hinten im Design noch überwacht werden 
müssen. Die Timingprobleme und Budgetprobleme sind entsprechend denen 
der im Vorsatz erwähnten Schaltungen.

von S. R. (svenska)


Lesenswert?

Jürgen S. schrieb:
>>> Verwendet eigentlich noch jemand die M&M-Unterscheidung?
>> Im FPGA will man Moore benutzen, aber in Software ist Mealy kein Problem
> Richtig, aber wir sind ja hier im VHDL-Teil des Forums, und:

Na und? Die Unterscheidung ist nach wie vor sinnvoll, und zwar 
mindestens in unterschiedlichen Bereichen.

Jürgen S. schrieb:
>> Und das Eingänge und Resets einsynchronisiert werden müssen, sollte eh
>> klar sein, nicht wahr? :D
> Genau deshalb habe ich das ja angeführt :-) Damit hat man streng
> genommen keinen Mealy Automaten mehr.

Das kann man zwar so sagen, aber es ist nicht besonders hilfreich.

Ein Mealy-Automat, den man mit einsynchronisierten Eingangssignalen 
betreibt, liefert die Ausgangssignale trotzdem einen Takt früher, als 
ein vergleichbarer Moore-Automat es täte und er braucht, je nach Design, 
trotzdem weniger Zustände. Genau das sind die Schlüsseleigenschaften 
vom Mealy, und die bleiben erhalten.

Dass man das in einem FPGA aus Routing- und Logikgründen möglicherweise 
nicht möchte, ist eine ganz andere Thematik. Und dass ein Mealy extrem 
streng genommen unsynchronisiert betrieben werden müsste, d.h. zwingend 
glitchende Ausgänge haben müsste, kann man zwar formal behaupten, aber 
es bringt einen in der Implementation auch nicht weiter.

Jürgen S. schrieb:
> Wenn man es pragmatisch sieht, ist Software mit seinen getakteten
> Funktionen auch eine Art von "Einsynchronisation" und damit eine
> Repräsentation eines synchronen Designs.

Wenn du das so sehen willst, dann ist jede Form von Software synchron, 
nämlich zumindest mit der Taktfrequenz der CPU. Ich halte diese Form der 
Betrachtung aber nicht für zielführend, denn eine CPU glitcht 
prinzipbedingt nicht.

Wenn du nämlich behauptest, dass es asynchrone Software eigentlich nicht 
geben kann, dann nimmst du denen, die mit mehreren Threads in Software 
arbeiten, deine Erfahrung und deine Lösungen zu genau den gleichen 
Problemen weg. Denn die gesamte Asynchronizitiätskacke taucht da wieder 
auf.

Jürgen S. schrieb:
> Die Thematik macht eigentlich nur bei echten Bausteinen mit fixem
> Verhalten Sinn

Einspruch. Die M&M-Thematik besteht aus der Frage "hängen die 
Ausgangssignale direkt von den Eingangssignalen ab oder nicht", mehr 
nicht. Das hat nichts mit der Technologie zu tun, in der der Automat 
realisiert ist und auch nichts von der Zeitskala, in der er betrieben 
wird.

Es spielt keine Rolle, ob der Automat von einem Oszillator oder einem 
Stück Code getaktet wird. Das Prinzip ist in beiden Fällen das gleiche.

von J. S. (engineer) Benutzerseite


Lesenswert?

S. R. schrieb:
> Na und? Die Unterscheidung ist nach wie vor sinnvoll, und zwar
> mindestens in unterschiedlichen Bereichen.
Ich hatte die Unterscheidung nicht als "nicht sinnvoll" bezeichnet, 
sondern nur ausgeführt, dass es bei FPGAs keinen effektiv großen 
Unterschied gibt. Diesen gibt es zwar in der Formulierung, führt aber 
bis auf die erwähnten Ausnahmen nicht zu einem wirklichen Gewinn von 
Geschwindigkeit oder Reaktionsfähigkeit des Designs:


> Das kann man zwar so sagen, aber es ist nicht besonders hilfreich.
Doch, das kann und muss man IMO auch so sagen, weil es hilfreich für das 
Verständnis ist, denn:

> Ein Mealy-Automat, den man mit einsynchronisierten Eingangssignalen
> betreibt, liefert die Ausgangssignale trotzdem einen Takt früher
Das tut er in Betrachtung der Zeitebene auf die man die FSM formuliert, 
ja. Aber da in einem FPGA die Kombinatorik das Langsame ist und zudem 
die Designs heute sehr hoch getaktet werden, ist der Vorteil minimal, 
weil letztlich das kombinatorische Budget das Timing bestimmt - 
insbesondere in breiten FSMs - überproportional. Dieses Verständnis ist 
schon wichtig. Sieh den parallelen thread zum schnellen auslesen des 
BRAMs.


> Dass man das in einem FPGA aus Routing- und Logikgründen möglicherweise
> nicht möchte, ist eine ganz andere Thematik.
Das ist aber genau die Thematik, die hier angefragt ist: Mealy Moore in 
FPGAs :-)

Dass Du das Thema Microprozessor parallel eingeführt hast und es da 
Unterschiede in der Interpretation gibt, ist unbenommen.


> streng genommen unsynchronisiert betrieben werden müsste, d.h. zwingend
> glitchende Ausgänge haben müsste, kann man zwar formal behaupten, aber
> es bringt einen in der Implementation auch nicht weiter.
Doch, denn das ist der Punkt: Die FSM in einem FPGA darf nicht isoliert 
als ein Block gesehen werden, sondern deren Funktion wird infolge 
jeglicher heute applizierter Optimierungen in das Design, die Terme und 
die LUTs hinein verteilt, es sei denn man formuliert ausdrücklich 
failsave modi und Redundanzen. In diesen beiden Fällen wären die Fälle 
der FSM real(er) exisistent, gekapselt und observierbar, da sie 
ausdrücklich gerettet werden müssen und damit wäre ein M<->M theoretisch 
unterscheidbar, aber dann verbieten sich Mealies um so mehr, weil dann 
die Funktion des Observierens und Rettens nicht mehr gegeben ist.

Ich habe den Einwurf nicht ohne Grund gemacht. Man muss sogar im 
Hinblick auf sicherer FSMs auf die Formulierung von Mealy verzichten, 
weil diese nicht gut schützbar sind und erst umgebaut werden müssen 
(wasim Übrigen passiert!)


> Wenn du das so sehen willst, dann ist jede Form von Software synchron,
> nämlich zumindest mit der Taktfrequenz der CPU. Ich halte diese Form der
> Betrachtung aber nicht für zielführend, denn eine CPU glitcht
> prinzipbedingt nicht.

Richtig SW glitchet nicht und deshalb gibt es das Problem auf Taktebene 
(und das ist die Betrachtungsebene des M&M) nicht. Das war meine 
Aussage. Daher ist Dein Beispiel kein Gegenargument.

Dein neues Beispiel ist wiederum deshalb keines, weil 
Multitasking-Themen auf einer Datentaktebene höher laufen und damit in 
einer anderen Zeitebene:

> dann nimmst du denen, die mit mehreren Threads in Software
> arbeiten, deine Erfahrung und deine Lösungen zu genau den gleichen
> Problemen weg.

Nein, die Lösungen der MT-Probleme sind anderer Natur, da auch das 
Problem anderer Natur ist. Es ist nämlich ein Problem der 
Quasi-Gleichzeitigkeit, die man in der SW real nicht hat und die eine 
händische Synchronisation auf Datentaktebene nach sich ziehen muss. Das 
ist nebenbei ein Problem, dass man im FPGA auf Systemtaktebene durchaus 
nicht, wohl aber auch auf Datentaktebene, wenn sich Schaltungsteile mit 
einander unterhalten.

Mein Postulat, dass es in SW das Problem nicht gibt, impliziert also 
nicht, daß es damit keine Multitaskingprobleme gibt und die 
Softwareentwickler hier keine Aufgaben hätten.

> die gesamte Asynchronizitiätskacke taucht da wieder auf.
Interessanter Begriff. Wie im Satz obendrüber verdeutlicht, muss man 
Datentaktung von Systemtaktung trennen, die nicht notwendigerweise 
identisch sind. In einem MT-System hat man - wenn man nichts gesondert 
unternimmt - einen nicht vorhersagbaren Datentakt, bis hin zu einem 
gänzlichen Verdrängen unter Verlangsamung eines Prozesses - mit den 
entsprechenden Problem. Das ist  schon ein anderes Thema.


> Einspruch. Die M&M-Thematik besteht aus der Frage "hängen die
> Ausgangssignale direkt von den Eingangssignalen ab oder nicht", mehr
> nicht. Das hat nichts mit der Technologie zu tun
Selbstverständlich hat das mit der Technologie und Umsetzung zu tun, 
denn wie ja die Diskussion zeit, hat das gleiche Prinzip zweier Methoden 
in unterschiedlichen Bereichen völlig unterschiedliche Ausprägungen.

Meine Aussage war, dass Mealy/Moore bei Automaten in FPGAs eine gänzlich 
untergeordnete Rolle spielen. Die Ausnahme sind sehr langsam getaktete 
FPGAs im Bezug auf die Signaländerungen an den Eingängen und deren 
Budget. Die Bussignale eines schnellen Prozessors, der selber in der 
Größenordnung des FPGA-Takts arbeitet, sind solche Signale.

Innen drin, konnte man nur früher noch was rauskitzeln, wenn man Signale 
stark kombinatorisch verdrahte hat und schneller FSMs bauen. Ab einer 
gewissen Größe geht das bei heutigen Taktraten so rasch in die Knie, 
dass es zum Aufrechterhalt designweit Extra-FFs benötigt werden. Diese 
lassen sich aber mit extremer Mealy-Verdrahtung nicht einfügen, oder 
werden dank Resynthe austomatisch von anderswo beigezogen. Die Response 
des Designs ist dann nicht besser. Das hängt auch damit zusammen, dass 
heute FPGAs kaum noch rein kombinatorische Elemente haben. In den Slices 
sitzen immer FFs drin und die sind nicht ohne Grund dort implementiert 
worden.

Ich bevorzuge immer Moore-Formulierungen mit eindeutigem Bezug auf den 
state. Das vereinfacht auch die Verifikation.

von daniel__m (Gast)


Lesenswert?

Irgendwie scheint das Thema einen viralen Punkt getroffen und eine 
"Glaubensdiskussion" ausgelöst zu haben.

Zurück zum TO: Warum 2 Prozesse?
Manche Probleme  Abläufe  Sequenzen lassen sich leichter (ggf. sogar 
nur) als Mealy-Automaten beschreiben.

Jürgen S. schrieb:
> Ich bevorzuge immer Moore-Formulierungen mit eindeutigem Bezug auf den
> state. Das vereinfacht auch die Verifikation.

Die bevorzuge ich auch und nutze sie, wo und wenn möglich. Jedoch haben 
beide Formulierungen ihre individuellen Vor- und Nachteile, so dass 
ich in der Praxis doch überwiegend bei Mealy-Automaten lande. Dabei ist 
mein Blickwinkel auf die FSM eher lokal auf das Modul beschränkt (welche 
jedoch synchrone Signale von anderen Modulen bekommen). Global gesehen, 
also den gesamten FPGA betrachtend, ist das natürlich ein großer 
Moore-Automat.

Als einer der Gründe, warum bei mir immer wieder Mealy daraus wird, ist 
die Latenz. Beim Moore habe ich immer mind. einen Takt Latenz, bei 
Mealy geht es auch ohne. Das kann bei Ready/Valid Interfaces relevant 
sein, da es oft den Durchsatz bestimmt.

Mealy-Automaten haben m.M.n. einen zu Unrecht schlechten Ruf. Ja, sie 
bergen vor allem für Anfängern viele Fettnäpfchen (kombinatorische 
Schleifen, unerkannte asynchrone Eingangssignale, doppelte 
State-Schreibweise, schlechteres Timing, etc), sind aber mit ein wenig 
Übung und Verifikation handhabbar. Manchmal empfinde ich die 
Schreibeweise aber auch als die Kürzere (Thema K.I.S.S.), da ich oft 
weniger States benötige (wie bereits erwähnt). Damit sind dann oft auch 
die State-Übergänge einfacher und es entfällt ggf. nötige 
"LookAhead"-Logik, der nötig wäre, um den Moore auf trap zu bringen.

Daher würde ich sagen, jeder sollte den Weg nehmen, der für ihn angenehm 
ist. Manchmal ist die Entscheidung klar, aber meistens ist sie doch eher 
subjektiv und geschmackssache.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.