VHDL
이전 자습서에서 loop
을 사용하여 무한 루프를 만드는 방법을 배웠습니다. 성명. 또한 exit
을 사용하여 루프에서 벗어나는 방법도 배웠습니다. 성명. 그러나 루프가 특정 횟수만큼 반복되도록 하려면 어떻게 해야 할까요? For-Loop는 이를 수행하는 가장 쉬운 방법입니다.
For-Loop를 사용하면 고정된 범위의 정수 또는 열거된 항목을 반복할 수 있습니다. 현재 반복에 속하는 항목은 암시적으로 선언된 상수를 통해 루프 내에서 사용할 수 있습니다.
이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다.
For 루프의 구문은 다음과 같습니다.
for <c> in <r> loop
end loop;
<c>
루프 내부에서 사용할 수 있는 상수의 임의 이름입니다. <r>
루프가 반복할 정수 또는 열거된 값의 범위입니다. 정수 범위는 증가하거나 감소할 수 있습니다.
0에서 9까지의 모든 10개 숫자를 포함하는 증가하는 범위에 대한 VHDL 코드:
0 to 9
9에서 0까지 10개의 숫자를 모두 포함하는 감소하는 범위에 대한 VHDL 코드:
9 downto 0
숫자 0만 포함하는 범위에 대한 VHDL 코드:
0 to 0
숫자가 전혀 없는 빈 범위에 대한 VHDL 코드:
0 to -1
이 튜토리얼에서 만든 최종 코드:
entity T04_ForLoopTb is end entity; architecture sim of T04_ForLoopTb is begin process is begin for i in 1 to 10 loop report "i=" & integer'image(i); end loop; wait; end process; end architecture;
ModelSim에서 실행 버튼을 눌렀을 때 시뮬레이터 콘솔에 대한 출력:
VSIM 2> run # ** Note: i=1 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=2 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=3 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=4 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=5 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=6 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=7 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=8 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=9 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=10 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
전혀 예상치 못한 것은 아니지만 For-Loop는 종료되기 전에 10번 반복되었습니다. i
의 값 시뮬레이션 시간 0에 시뮬레이터 콘솔에 10번 인쇄됩니다. 루프 내부에는 wait 문이 없으므로 루프를 완료하는 데 0시간이 걸립니다. 마지막으로 프로그램은 wait;
에서 무한 일시 중지됩니다. .
integer'image()
를 사용하여 정수를 문자열로 변환하는 방법을 배웠습니다. , 그리고 &
을 사용했습니다. 두 문자열을 결합하는 문자입니다.
to
로 표시됩니다. 및 downto
만큼 감소하는 범위 integer'image()
를 사용하여 정수를 문자열로 변환할 수 있습니다. &
을 사용하여 두 개의 문자열을 결합할 수 있습니다. 다음 튜토리얼로 이동 »
VHDL
이전 자습서에서 For-Loop를 사용하여 정수 범위를 반복하는 방법을 배웠습니다. 그러나 고정된 정수 범위보다 루프를 더 자세히 제어하려면 어떻게 해야 할까요? 이를 위해 While 루프를 사용할 수 있습니다. While 루프는 테스트하는 표현식이 true로 평가되는 한 계속해서 동봉된 코드를 반복합니다. . 따라서 While-Loop는 얼마나 많은 반복이 필요한지 미리 알 수 없는 상황에 적합합니다. 이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다. While 루프의 구문은 다음과 같습니다. while <
이전 튜토리얼에서 wait for를 사용하여 시간을 지연시키는 방법을 배웠습니다. 성명. 프로세스 루프에 대해서도 배웠습니다. 이제 허용하면 프로세스 스레드가 프로세스 내에서 영원히 반복된다는 것을 알고 있습니다. 그러나 프로세스의 시작 부분에서 한 번만 무언가를 하고 싶다면 어떻게 해야 할까요? 그런 다음 끝에 다른 코드를 반복합니까? VHDL에서 가장 단순한 종류의 루프는 loop을 사용하여 생성할 수 있습니다. 성명서. 이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다. 단순 루프의 구문은 다음과 같습니다.