Hallo, ich habe folgendes Problem: Ich habe eine FSM die nicht in den nächsten Status springt:
1 | state_switcher : process (CLK) |
2 | begin
|
3 | if rising_edge(CLK) then |
4 | if Reset = '1' then |
5 | State <= Power_Up; |
6 | else
|
7 | State <= Next_State; |
8 | end if; |
9 | end if; |
10 | end process state_switcher; |
11 | |
12 | stateMachine : process (State) |
13 | begin
|
14 | |
15 | case (State) is |
16 | when Power_Up => |
17 | Next_State <= Power_Up_Delay; |
18 | |
19 | when Power_Up_Delay => |
20 | if (Delay_45ms = "1000100101010100010000") then |
21 | Next_State <= Off_Power_Up_Delay; |
22 | else
|
23 | Next_State <= Power_Up_Delay; |
24 | end if; |
25 | |
26 | when Off_Power_Up_Delay => |
27 | Next_State <= Write_Data; |
Er bleibt immer im Power_Up_Delay Status. Das ist hier der Delay Process:
1 | ---------------------------------------------------------------------------------------------
|
2 | -- Power Up Delay.
|
3 | ---------------------------------------------------------------------------------------------
|
4 | -- Power Up Delay Switch.
|
5 | process (State) |
6 | begin
|
7 | if ((State = Power_Up) or (State = Power_Up_Delay)) then |
8 | Delay_45ms_E <= '1'; |
9 | else
|
10 | Delay_45ms_E <= '0'; |
11 | end if; |
12 | end process; |
13 | |
14 | -- 45ms Delay Element.
|
15 | process (Clk) |
16 | begin
|
17 | if (Clk'event and Clk = '1') then |
18 | if Reset = '1' then |
19 | Delay_45ms <= "0000000000000000000000"; |
20 | else
|
21 | if (Delay_45ms_E = '1') then |
22 | Delay_45ms <= Delay_45ms + 1; |
23 | end if; |
24 | end if; |
25 | end if; |
26 | end process; |
Was ist das Problem? Anbei ein Auszug auf dem ModelSim. Danke.