What Are Delays
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 67번째.
Verilog에서 지연은 문이 실행되는 시점 또는 신호가 변경되는 시점을 제어합니다. 지연은 실제 하드웨어의 타이밍 동작을 모델링하는 데 사용됩니다.
지연이 필요한 이유
실제 하드웨어에서는 신호가 전선과 게이트를 통과하는 데 시간이 걸립니다. 지연을 사용하면 이러한 타이밍 동작을 시뮬레이션할 수 있습니다.
- 시뮬레이션에서는 지연이 없으면 모든 일이 time 0에 발생합니다
- 지연을 사용하면 시간에 따라 이벤트의 간격을 둘 수 있습니다
- 지연은 clock 및 상태 머신과 같이 타이밍에 민감한 설계를 테스트하는 데 도움이 됩니다
지연 유형
| 지연 유형 | 목적 |
|---|---|
| 게이트 지연 | 논리 게이트를 통과하는 지연 |
| 할당 지연 | 값을 할당할 때의 지연 |
| Timescale 지시문 | 시뮬레이션의 시간 단위를 설정 |
기본 구문
delay는 숫자 앞에 #을 붙여 작성합니다:
#10 clk = ~clk; // 10 시간 단위를 기다린 다음 클록을 토글
#5 a = b; // 5 시간 단위를 기다린 다음 a = b를 할당# 뒤의 숫자는 기다릴 time units의 수입니다.
간단한 예제
initial begin
a = 0;
#10 a = 1; // 10 시간 단위 후에 a가 1이 됩니다
#5 a = 0; // 또 다른 5 시간 단위 후에 a가 0이 됩니다
end타이밍:
- Time 0:
a = 0 - Time 10:
a = 1 - Time 15:
a = 0
Always 블록의 지연
always #5 clk = ~clk; // 5 시간 단위마다 클록을 토글이는 연속적인 클록 신호를 생성합니다(clk가 initial 블록에서 first 0으로 초기화되었다고 가정합니다. 그렇지 않으면 ~x는 x로 유지됩니다).
중요 규칙
| 규칙 | 설명 |
|---|---|
# 기호 | delay를 나타냅니다 |
# 뒤의 숫자 | 기다릴 time units의 수 |
| delay는 누적됩니다 | #10 다음 #20은 총 30만큼 기다립니다 |
| 합성할 수 없음 | delay는 simulation 전용입니다 |
챌린지
할 일:
이 코드가 시간 0, 10, 25, 40에 메시지를 출력하도록 누락된 delay를 Add하세요.
직접 해보기
module delay_challenge;
initial begin
$display("Time %0t: Start", $time);
// TODO: 시간 10에 도달하도록 지연 추가
$display("Time %0t: After first delay", $time);
// TODO: 시간 25에 도달하도록 지연 추가
$display("Time %0t: After second delay", $time);
// TODO: 시간 40에 도달하도록 지연 추가
$display("Time %0t: End", $time);
$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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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 컴파일러