Forever Loop
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 61번째.
forever loop은 코드 블록을 계속해서, forever repeats합니다. 스스로 멈추지 않습니다.
forever 루프는 끝없이 반복해서 실행됩니다. 테스트벤치에서 클록과 기타 연속 신호를 생성하는 데 유용합니다.
구문:
forever begin
// 영원히 반복되는 코드
end간단한 예
forever begin
$display("This prints forever");
end이 코드는 끝없이 출력되어 시뮬레이션을 중단시킵니다. 항상 Add 지연 또는 중지 조건을 추가하세요.
클록 생성(일반적인 사용)
forever의 가장 일반적인 사용은 클록을 생성하는 것입니다:
initial begin
clk = 0;
forever begin
#5 clk = ~clk; // 5 시간 단위마다 토글
end
end이것은 전체 시뮬레이션 동안 실행되는 시계를 만듭니다.
Disable을 사용하는 Forever
disable 문을 사용하여 forever loop를 중지할 수 있습니다:
initial begin : clock_gen // 여기에 이름 추가됨
clk = 0;
forever begin
#5 clk = ~clk;
end
endinitial begin
#100;
disable clock_gen; // 이제 이게 작동합니다
endforever와 다른 loop
| loop | 중지되나요? | 사용할 때 |
|---|---|---|
for | 예 (고정된 반복 횟수 후) | repeats 횟수를 알고 있을 때 |
while | 예 (조건이 false일 때) | 중지 조건을 모를 때 |
repeat | 예 (고정된 반복 횟수 후) | repeats 횟수를 알고 있을 때 |
forever | 아니요 (never) | 연속적인 신호 (clock) |
중요한 규칙
| 규칙 | 설명 |
|---|---|
| 지연을 반드시 포함해야 함 | #10 또는 @(posedge clk) |
| 지연이 없으면 시뮬레이션이 멈춤 | time 진행이 없는 무한 loop |
중지하려면 disable과 함께 사용 | 그렇지 않으면 시뮬레이션이 끝나지 않음 |
| 테스트벤치에서 사용하는 것이 가장 좋음 | 합성할 수 없음 |
챌린지
할 일:
10 time units마다 토글되는 클록을 생성하도록 누락된 forever loop를 추가하세요.
직접 해보기
module forever_challenge;
reg clk;
initial begin
clk = 0;
// TODO: 10 시간 단위마다 clk를 토글하는 forever 루프 추가
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 컴파일러