VHDL中的FSM机器,每个州执行某些操作

时间:2013-05-15 19:48:13

标签: vhdl fsm

我有一个有五种状态的FSM(s1,s2,s3,s4,s5)。

但是,对于每个州,应该进行一系列操作。例如,在s2中,计数器应该从1到10计数。

我的问题出现了:FSM怎么知道“我应该从s2改为s3”?或者以另一种方式说话,s2如何通知FSM“我已经完成”,并且应该根据LookUpTable启动新状态?

1 个答案:

答案 0 :(得分:5)

如果您以合适的方式编写FSM,这实际上不是问题。例如:

architecture RTL of dut is
    type state_t is (s1, s2, s3, s4, s5);
    signal state     : state_t;
    signal counter   : integer;
    signal condition : boolean;
begin
    fsm : process is
    begin
        if rising_edge(clk) then
            case state is
                when s1 =>
                -- do stuff
                when s2 =>
                    if condition then
                        counter <= 0;
                        state   <= s3;
                    end if;
                when s3 =>
                    if counter = 10 then
                        state <= s4;
                    else
                        counter <= counter + 1;
                    end if;
                when s4 =>
                    null;
                when s5 =>
                    null;
            end case;
        end if;
    end process fsm;

end architecture RTL;