For Loop
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 58번째.
Verilog의 loop는 코드 블록을 여러 번 실행할 수 있게 해 줍니다. 특히 테스트벤치에서 반복적인 테스트 패턴을 생성하고, memory를 초기화하며, 배열을 순회하는 데 유용합니다. 병렬로 실행되는 하드웨어 설명과 달리 loop는 순차적으로 실행되므로 시뮬레이션과 테스트에 이상적입니다.
가장 일반적으로 사용되는 루프는 특정 횟수만큼 반복하는 <strong>for</strong> 루프입니다. for 루프는 각 반복마다 변경되는 루프 변수를 사용하여 코드 블록을 반복적으로 실행합니다. 실행 횟수를 정확히 제어할 수 있습니다.
구문:
for (initialization; condition; increment) begin
// 반복할 코드
end| 구성 요소 | 기능 | 예시 |
|---|---|---|
initialization | 시작 값을 설정 | i = 0 |
condition | 중지할 시점 | i < 10 |
increment | 각 loop마다 변경 | 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 = 4loop는 5번 실행됩니다 (i = 0, 1, 2, 3, 4).
테스트벤치에서의 For Loop
For loop는 모든 입력 조합을 테스트하는 데 흔히 사용됩니다:
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 Loop
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개의 memory 위치를 초기화합니다.
중요 규칙
| 규칙 | 설명 |
|---|---|
Loop 변수는 integer 또는 reg여야 함 | wire일 수 없음 |
여러 문장에는 begin/end 사용 | 두 줄보다 많은 경우 필수 |
| 무한 Loop 피하기 | condition이 결국 false가 되는지 확인 |
| 테스트벤치에서 사용하는 것이 가장 좋음 | 대부분의 Loop는 합성할 수 없음 |
챌린지
할 일:
0부터 3까지의 숫자를 출력하도록 누락된 for loop를 Add하세요.
직접 해보기
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이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러