case
문을 사용하여 VHDL로 UML 상태 다이어그램을 구현 중입니다. do/
및 exit
상태 활동은 쉽게 구현할 수 있습니다. 그러나 효과적인 방법으로 entry
상태 활동을 구현하는 방법을 아는 사람이 있습니까?/VHDL로 UML 상태 다이어그램에 입력
name
상태 이전에 name_entry
이라는 추가 상태를 추가하거나 한 번만 실행하는 플래그를 추가 할 것을 고려했습니다. 그러나 나는이 옵션들을 싫어합니다 ...
case
문을 사용하여 VHDL로 UML 상태 다이어그램을 구현 중입니다. do/
및 exit
상태 활동은 쉽게 구현할 수 있습니다. 그러나 효과적인 방법으로 entry
상태 활동을 구현하는 방법을 아는 사람이 있습니까?/VHDL로 UML 상태 다이어그램에 입력
name
상태 이전에 name_entry
이라는 추가 상태를 추가하거나 한 번만 실행하는 플래그를 추가 할 것을 고려했습니다. 그러나 나는이 옵션들을 싫어합니다 ...
만약 내가 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;
나는 그것이 귀하의 질문에 답변하거나 적어도 도움이되기를 바랍니다.
상태 변수가 열거 형인 경우'when others' 절이 필요하지 않습니다. –
실제로, 경우에 대비해 '기타 (OTHERS)'사례를 지정하는 것이 일상적이었습니다 –
좋습니다! UML 상태 차트에서 _do/_를'output <= '1'이라고 쓰면,'_exit/_ '는's0'의 if 문에서 구현 될 수 있습니다. 그러나 _/entry_는 어디에 있습니까? ?? VHDL에 일반적인 FSM을 구현하는 방법이 아니라 [that] (http://www.barrgroup.com/images/articles/IntroHierarchicalStateMachines02UmlStateDiagram.gif)을 찾고 있습니다. 감사! – ferdepe
당신이 말한 것으로부터 당신이하고 싶은 것을보기가 어렵습니다. UML은 상태 머신을 표현하기위한 것일 뿐이므로 개발하려고하는 것에 대해서는 힌트를 제공하지 않습니다 (기능적으로 말하면). –
@ A.Kieffer/Entry는 해당 상태로 전환이 발생했을 때 한 번만 실행됩니다 (작업과 유사)./Do는 구현하기 쉽습니다. 상태 시스템이 프로세스 내부에 있고 전환이 발생할 때까지 코드가 실행되기 때문에/exit를 구현할 수 있습니다. 그러나, 나는 한 번 실행될 코드를 구현하는 방법을 여전히 모른다 ... 효율적인 방법으로 – ferdepe