Sensitivity List
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 48번째.
감도 목록은 always 블록에 언제 실행할지 알려 줍니다. 이는 @ 기호 뒤의 괄호 안에 작성합니다.
감도 리스트는 always 블록을 트리거하는 signals 또는 이벤트의 집합입니다. 리스트의 어떤 signals라도 changes하면 블록이 executes합니다.
구문:
always @(sensitivity_list) begin
// 리스트의 신호가 변경될 때 코드가 실행됩니다
endSensitivity list의 유형
| 유형 | 구문 | When 블록 Executes |
|---|---|---|
| 모든 signals (조합 논리) | always @(*) | 내부의 어떤 signal이 changes할 때 |
| 특정 signals | always @(a or b) | a 또는 b가 changes할 때 |
| Edge 트리거 (순차 논리) | always @(posedge clk) | clock의 rising edge에서 |
| 여러 edge | always @(posedge clk or posedge reset) | clock edge 또는 reset edge에서 |
옵션 1: 모든 신호 (*)
조합 논리에 가장 안전하고 일반적으로 사용됩니다.
always @(*) begin
out = a & b; // a 또는 b가 변경될 때 실행됩니다
end*는 블록에서 읽은 모든 signals를 자동으로 포함합니다.
옵션 2: 특정 신호
always @(a or b) begin
out = a & b; // a 또는 b가 변경될 때 실행됩니다
end신호를 잊으면 해당 신호가 변경될 때 시뮬레이션에서 output이 업데이트되지 않으므로, 시뮬레이션이 더 이상 합성된 하드웨어와 일치하지 않습니다.
옵션 3: 에지 트리거 (posedge)
always @(posedge clk) begin
q <= d; // 클럭의 상승 에지에서 실행됩니다
end상승 에지에는 posedge를, 하강 에지에는 negedge를 사용하세요.
옵션 4: 여러 에지
always @(posedge clk or posedge reset) begin
if (reset)
q <= 0;
else
q <= d;
endRuns는 clock edge 또는 reset edge에서 실행됩니다.
일반적인 실수
| 실수 | 잘못된 이유 |
|---|---|
always @(a or b or c)이지만 d를 사용함 | d가 누락됨 → 시뮬레이션에서 output이 오래된 상태로 남음 (sim/synth 불일치) |
always @(posedge clk or reset) | reset에 posedge가 누락됨 |
always @(clk) | flip-flop에는 posedge clk를 사용해야 함 |
챌린지
수행할 작업:
- 이 플립플롭이 작동하도록 올바른 sensitivity list를 추가하세요. 블록은
clk의 rising edge에서 실행되어야 합니다.
직접 해보기
module flipflop (
input clk,
input d,
output reg q
);
always @(______) begin
q <= d;
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 컴파일러