이전 튜토리얼에서는 wait for 문을 사용한 타이밍 지연과 프로세스 루프를 다뤘습니다. 이제 코드를 한 번 실행한 다음 특정 조건이 충족될 때까지 블록을 반복하는 핵심 VHDL 구조인 loop 문에 초점을 맞춥니다.
프로세스는 무한히 실행될 수 있지만, 종종 우아하게 빠져나올 수 있는 제어된 루프가 필요합니다. VHDL의 loop 문은 이러한 구조의 가장 단순한 형태이며, exit가 발생할 때만 종료됩니다.
단순 루프의 구문
loop -- 문장들 end loop;
각 exit는 자신이 속한 가장 안쪽 루프를 빠져나오며, 어떤 루프 유형에서든 나타날 수 있습니다.
실습
이 튜토리얼은 기본 루프를 구성하고 단일 반복 후 빠져나오는 방법을 보여줍니다.
예제 코드
entity T03_LoopTb is end entity;
architecture sim of T03_LoopTb is
begin
process is
begin
report "Hello!";
loop
report "Peekaboo!";
exit; -- 첫 반복 후 빠져나오기
end loop;
report "Goodbye!";
wait; -- 프로세스를 무한히 일시 중단
end process;
end architecture;
콘솔은 모든 메시지가 0ns에 발생함을 보여주며, wait 외의 문장은 시뮬레이션 시간을 소비하지 않음을 확인시켜 줍니다. exit 문은 한 번 반복 후 루프를 멈추고, 프로세스는 최종 wait에 도달하여 유휴 상태가 됩니다.
분석
타임스탬프를 보면 정확한 실행 순서를 알 수 있습니다: report "Hello!" → report "Peekaboo!" → exit → report "Goodbye!". 이 예제는 복잡한 상태 머신에 의존하지 않고 loop와 exit로 흐름을 제어하는 방법을 보여줍니다.