Der Unterschied ist, daß du im ersten Beispiel die Statemachine-Variable
unbedingt erhöhst und im zweiten Beispiel nur innerhalb des States.
Daher würde ich mal vermuten, daß das erste Beispiel nicht läuft. Ist
sowieso keine gute Idee, das so zu schreiben, da z.B. manche Simulatoren
einen Overflow-Error ausgeben würden und ich bin mir nicht sicher, ob
das in VHDL definiert ist, daß es ein Wraparound geben muß bei
interger-Variablen. Ich mache das immer so, daß ich Überläufe abfange
bzw. so wie du im zweiten Beispiel, daß die gar nicht erst auftreten
können.
Noch zwei Tipps: Verwende besser sowas wie "type STATE_TYPE is
(aussagekraefteriger_name, nochwas);" für die Codierung von
Statemachines. Für binäre Statemachinen kannst du aber auch eine
Variable vom Typ "boolean" nehmen. Und "variable" brauchst du an der
Stelle nicht, nimm besser ein "signal" und dann den becomes-Operator
("<="). Zu beachten dabei: signale haben während des gesamten Prozesses
den Wert bei Eintritt des Prozesses, unabhängig davon, was du denen im
Laufe des Prozesses zuweist und der letzte zugewiesene Wert wird bei
Verlassen des Prozesses übernommen. Ist nicht schwierig, wenn man sich
mal dran gewöhnt hat, kann aber manchmal ein paar Gatter sparen
gegenüber der Programmierung per variable.