While 반복문
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 59번째.
while 루프는 조건이 참인 동안 코드 블록을 반복합니다. for 루프와 달리 내장된 카운터가 없으므로 루프 변수를 직접 업데이트해야 합니다.
while 루프는 각 반복 전에 조건을 확인합니다. 조건이 참이면 루프가 실행되고, 거짓이면 루프가 중단됩니다.
구문:
while (condition) begin
// 반복할 코드
end간단한 예제
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
end출력:
i = 0
i = 1
i = 2
i = 3
i = 4루프는 i < 5인 동안 실행됩니다.
While vs For 루프
| For 루프 | While 루프 | |
|---|---|---|
| 카운터 | 내장됨 | 직접 관리함 |
| 사용 시기 | 반복 횟수를 알고 있을 때 | 루프가 언제 멈출지 모를 때 |
| 구문 | for (i=0; i<5; i=i+1) | while (i < 5) |
테스트벤치에서의 While 루프
While 루프는 필요한 반복 횟수를 정확히 알 수 없을 때 유용합니다:
integer i = 0;
while (i < 16) begin
$display("Testing value %d", i);
i = i + 1;
end특정 값 찾기
integer i = 0;
reg [7:0] data;
while (data[i] != 1) begin
i = i + 1;
end
$display("First 1 found at position %d", i);중요 규칙
| 규칙 | 설명 |
|---|---|
| 조건은 반드시 거짓(false)이 되어야 함 | 그렇지 않으면 무한 루프가 발생함 |
| 내부에서 루프 변수를 업데이트해야 함 | 그렇지 않으면 루프가 끝나지 않음 |
루프 변수는 반드시 integer여야 함 | reg일 수 없음 |
여러 문장을 사용할 경우 begin/end를 사용함 | 두 줄 이상의 문장에 필요함 |
챌린지
수행할 작업:
0에서 2까지의 숫자를 출력하기 위해 누락된 while 루프를 추가하세요.
치트 시트
while 루프는 조건이 참인 동안 코드 블록을 반복합니다. 루프 변수를 수동으로 업데이트해야 합니다.
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
end주요 규칙:
- 루프 변수는
integer여야 합니다 (reg가 아님) - 무한 루프를 방지하기 위해 항상 루프 내부에서 루프 변수를 업데이트하세요
- 여러 문장을 사용할 때는
begin/end를 사용하세요
While vs For: 반복 횟수를 알고 있을 때는 for를 사용하고, 중지 조건이 동적일 때(예: 값 검색)는 while을 사용하세요.
// 첫 번째로 설정된 비트 찾기
while (data[i] != 1) begin
i = i + 1;
end직접 해보기
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: while 루프 추가
// i < 3인 동안 루프 실행
// 내부에서 i를 출력
// i를 1씩 증가
$finish;
end
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.