Menu
CoddyTech

For 반복문

Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 58번째.

Verilog의 루프를 사용하면 코드 블록을 여러 번 실행할 수 있습니다. 루프는 반복적인 테스트 패턴을 생성하고, 메모리를 초기화하며, 배열을 순회하는 테스트벤치에서 특히 유용합니다. 병렬로 실행되는 하드웨어 설명과 달리 루프는 순차적으로 실행되므로 시뮬레이션과 테스트에 적합합니다.

가장 흔히 사용하는 루프는 for 루프로, 정해진 횟수만큼 반복합니다. for 루프는 반복할 때마다 값이 바뀌는 루프 변수를 사용해 코드 블록을 반복 실행합니다. 몇 번 실행할지 정확히 제어할 수 있습니다.

구문:

for (initialization; condition; increment) begin
  // 반복할 코드
end
부분기능예시
initialization시작 값을 설정합니다i = 0
condition중단할 시점을 정합니다i < 10
increment반복할 때마다 값을 변경합니다i = i + 1

간단한 예제

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

출력:

i = 0
i = 1
i = 2
i = 3
i = 4

루프는 5회 실행됩니다(i = 0, 1, 2, 3, 4).

테스트벤치의 For 루프

For 루프는 모든 입력 조합을 테스트하는 데 자주 사용됩니다.

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

이 코드는 4비트 신호의 가능한 값 16개를 모두 테스트합니다.

배열을 사용하는 For 루프

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

메모리 위치 10개를 초기화합니다.

중요한 규칙

규칙설명
반복 변수는 integer 또는 reg여야 합니다 wire는 사용할 수 없습니다
여러 문장에는 begin/end를 사용하세요두 줄 이상일 때 필요합니다
무한 반복문은 피하세요조건이 결국 거짓이 되는지 확인하세요
합성 가능한 코드에는 상수 경계값을 사용하세요합성 과정에서 반복마다 논리 복사본 하나씩 생성되도록 반복문이 펼쳐집니다
challenge icon

챌린지

해야 할 일:

0부터 3까지의 숫자를 출력하도록 누락된 for 루프를 추가하세요.

직접 해보기

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: for 루프 추가
    // i = 0으로 초기화
    // i < 4인 동안 반복
    // i = i + 1로 증가
    // 루프 안에서 $display("i = %d", i);로 출력
    
    $finish;
  end
endmodule
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러