Menu
Coddy logo textTech

For 반복문

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

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

가장 흔히 사용되는 루프는 <strong>for</strong> 루프이며, 이는 정해진 횟수만큼 반복됩니다. 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 루프는 일반적으로 모든 입력 조합을 테스트하는 데 사용됩니다:

reg [3:0] 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를 사용하세요두 줄 이상인 경우 필수입니다
무한 루프를 피하세요조건이 결국 거짓(false)이 되도록 하세요
테스트벤치에서 사용하는 것이 가장 좋습니다대부분의 루프는 합성 가능하지 않습니다
challenge icon

챌린지

할 일:

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

치트 시트

Verilog의 for 루프는 특정 횟수만큼 코드 블록을 반복합니다:

for (initialization; condition; increment) begin
  // Code to repeat
end

0부터 4까지 출력하는 예제:

integer i;

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

주요 규칙:

  • 루프 변수는 integer 또는 reg여야 합니다 (wire는 불가)
  • 여러 문장을 사용할 때는 begin/end를 사용하세요
  • 무한 루프를 방지하기 위해 조건이 결국 거짓(false)이 되도록 하세요
  • 루프는 주로 테스트벤치에서 사용됩니다 (대부분 합성 가능하지 않음)

직접 해보기

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

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

기초의 모든 레슨