Reto B. schrieb:
> Aber was hindert mich denn daran, ein Signal nicht explizit in jedem
> State, sondern einfach per concurrent Statement ausserhalb der State
> Maschine zu definieren, also so:
> o_pwrready <= '1' when pr_state = pwrready else '0';
Was Dich daran hindert ist, dass ein Signal nur von einem einzigen
Prozess getrieben werden kann, und das concurrent statement eine
getrennter Prozozess ist.
Du kannst die Signale aber am Anfang deiner FSM zuweisen.
1 | process(clk)
|
2 | begin
|
3 | if rising_edge(clk) then
|
4 | o_pwrready <= '0'; -- default, wird bei Bedarf weiter unten überschrieben
|
5 | case pr_state is
|
6 | when pwrready =>
|
7 | o_pwrready <= '1';
|
8 | when .... =>
|
9 | when .... =>
|
10 | end case;
|
11 | end if;
|
12 | end process;
|