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 반복문과 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여야 함 | wire일 수 없음 |
여러 문장에는 begin/end 사용 | 한 줄보다 많은 경우 필요함 |
챌린지
해야 할 일:
0부터 2까지의 숫자를 출력하도록 빠진 while 루프를 추가하세요.
직접 해보기
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: while 루프를 추가하세요
// i < 3인 동안 반복하세요
// 루프 안에서 i를 출력하세요
// i를 1만큼 증가시키세요
$finish;
end
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러