Initial Block
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 47번째.
Verilog에는 두 가지 프로시저 블록이 있습니다. initial(한 번 실행)과 always(계속 실행)입니다. 이제 initial 블록을 살펴보겠습니다.
Initial 블록이란?
initial 블록은 시뮬레이션 시작 시점(time 0)에 단 한 번만 실행됩니다. 실행이 완료되면 다시 실행되지 않습니다.
주로 다음과 같은 테스트벤치에서 사용됩니다:
- 초기값 설정
- 테스트 신호 생성
- 메시지 표시
- simulation 시작
구문
initial begin
// 문장들은 한 번, 순서대로 실행됩니다
end기본 예제
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
end출력:
Simulation started
This runs once테스트 신호에 Initial Block 사용하기
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
end이는 시간 0, 10, 20에서 a를 변경합니다.
initial과 Always
initial | always | |
|---|---|---|
| 실행 | Once | 계속해서 (영원히) |
| 용도 | 테스트벤치, 초기화 | 하드웨어 (플립플롭, 카운터) |
| 합성 가능 여부? | 아니요 (simulation 전용) | 예 (감도 목록과 함께) |
중요 참고 사항
initial블록은 합성할 수 없습니다. 하드웨어로 변환할 수 없습니다initial은 테스트벤치에서만 사용하세요- 테스트벤치에 자유 실행 클록(예:
always #5 clk = ~clk;)이 포함되어 있으면$finish를 호출하지 않는 한 simulation은 영원히 실행됩니다.initial블록만 있는 경우에는 남아 있는 이벤트가 없을 때 시뮬레이터가 스스로 중지하지만, 그래도$finish를 추가하는 것이 좋은 습관입니다
챌린지
누락된 initial block을 Add하여 a를 0으로 설정한 다음, 10 time units 후에 a를 1로 설정하세요.
수행할 작업:
- Add
initial begin및end a = 0으로 설정- Wait
#10 a = 1로 설정- $finish를 Add하여 simulation 종료
직접 해보기
module test;
reg a;
// TODO: 여기에 initial 블록 추가
// a = 0으로 설정
// #10 대기
// a = 1로 설정
// 시뮬레이션을 종료하려면 $finish; 추가
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 컴파일러