States in VHDL über mehrere Prozesse verteilen?

hallo,

ist es in VHDL möglich eine State-Machine über mehrere Prozesse laufen zu lassen?
Bsp:

process
begin
case kaese is
when state_A => …
when state_B => null;
end case;
end process;

bla : process (clk)
begin
case kaese is
when state_A => null;
when state_B => …
end case;
end process;

Eigentlich schließen sich die Zustände ja gar nicht aus. Bei einem Prozess ist state_A => null und beim anderen state_B.
Ist das nun erlaubt? Mein Compiler läuft ohne Fehlermeldung durch, aber die Simulation lässt ActiveHDL immer abstürzen.

Hi,

im Prinzip steht nichts dagegen den State zum lesen (!) über mehrere Prozesse zu verteilen.
Was zu beachten ist, sind folgende Punkte:

  • Der State darf nur in einem(!) Prozess beschrieben werden, ansonsten hast Du mehrere Treiber was in Simulation zu „interessanten“ Zuständen führen kann und beim Schritt in HW wahrscheinlich zu einer Fehlermeldung über ebendies.
  • Der State sollte als „signal“ deklariert sein in der entsprechenden architecture, dann kannst Du ihn überall sehen.
  • Ansonsten einfach mal durch Synthese durchlaufen lassen oder evtl. in Modelsim checken.

Schönen Gruß,

Martin