我正在使用 VHDL usingcase
语句实现 UML 状态图。do/
国家活动exit
易于实施。但是,有谁知道如何以entry
有效的方式实施状态活动?
我想添加一个标志只执行一次或添加一个称为状态name_entry
之前的额外name
状态。但我不喜欢这些选项...
我正在使用 VHDL usingcase
语句实现 UML 状态图。do/
国家活动exit
易于实施。但是,有谁知道如何以entry
有效的方式实施状态活动?
我想添加一个标志只执行一次或添加一个称为状态name_entry
之前的额外name
状态。但我不喜欢这些选项...
如果我理解得很好,您只想用 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;
我希望它回答了您的问题,或者至少会有所帮助。