/使用VHDL输入UML状态图

时间:2016-11-15 15:37:58

标签: uml vhdl statechart

我使用case语句使用VHDL实现UML状态图。 do/exit州活动很容易实施。但是,是否有人知道如何以有效的方式实施entry州活动?

我想添加一个标志只执行一次或在name_entry状态之前添加一个名为name的额外状态。但我不喜欢这些选择......

1 个答案:

答案 0 :(得分:0)

如果我理解得很清楚你只想用VHDL描述一个FSM? 为此,首先需要在TYPE

中声明所有可能的状态
TYPE my_state_type IS (s0, s1, s2);

然后你必须创建一个以my_state_type为类型的信号。

SIGNAL my_state : my_state_type := s0; -- for initialisation

然后,在您的过程中,您确实需要为您的每个州提供CASE

fsm : PROCESS (clk, rst)
BEGIN
    IF (rst = '1') THEN
      my_state <= s0 ;  -- reset value
    ELSIF (rising_edge(clk)) THEN
      CASE my_state IS

          WHEN s0  => output <= '1'; -- do 
                      IF (input = '1') THEN -- condition to enter s1
                         my_state <= s1; 
                      ELSE                  -- condition to stay in s0
                         my_state <= s0; 
                      END IF;

          WHEN s1  => my_state <= s2; -- stay in s1 for only one clk cycle

          WHEN s2  => my_state <= s0; -- stay in s2 for only one clk cycle

          WHEN OTHERS => my_state <= s0;

      END CASE;
    END IF;
END PROCESS;

我希望它能回答你的问题或者至少会有所帮助。