Special Values X And Z
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 17번째.
X와 Z는 시뮬레이션 중 하드웨어 상태에 대한 정보를 제공하는 특수 값입니다.
X(알 수 없음), 디버깅용
X는 설계에 문제가 있음을 나타내기 위해 시뮬레이션에 나타납니다.
X를 보면, 다음을 의미하는 경우가 많습니다:
- 초기화되지 않은 레지스터: 사용하기 전에 값을 설정하는 것을 잊었습니다
- 다중 드라이버: 서로 다른 두 가지가 동시에 같은 wire를 제어하려고 합니다
- 타이밍 위반: 신호가 잘못된 시간에 변경되어 불안정한 상태가 생성되었습니다
X는 실제 하드웨어에는 존재하지 않습니다. X는 설계에 문제가 있다는 것을 알려 주어 실제 칩을 제작하기 전에 문제를 수정할 수 있도록 하는 시뮬레이션 도구입니다.
X가 없다면 무작위로 0이나 1이 표시되어 문제가 있다는 사실을 알아차리지 못할 수 있습니다. X는 버그를 눈에 보이게 만듭니다.
일반적인 원인:
reg a; // 초기에 X (알 수 없음)
reg b;
assign b = a; // a가 X이므로 b는 X가 됨Z (High Impedance)
Z는 high-impedance 또는 disconnected 상태를 나타냅니다.
- 신호가 어떤 것에 의해서도 구동되지 않을 때 Z입니다
- Z는 "이 wire는 연결되어 있지 않음"을 의미합니다
- tri-state 버퍼와 공유 버스에 사용됩니다
일반적인 원인:
wire c; // 초기에 Z (연결되지 않음)
assign c = 1'bZ; // Explicitly set to ZVerilog에서 X와 Z 쓰기
0과 1처럼 X와 Z 값도 할당할 수 있습니다:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // 비트 1은 고임피던스입니다
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // 모든 비트가 고임피던스입니다파형에서의 X와 Z
시뮬레이션 파형에서:
- X는 빨간색 선 또는 "X"로 나타납니다.
- Z는 가운데 선 또는 "Z"로 나타납니다.
이 도구는 신호가 unknown이거나 연결되지 않은 위치를 표시하여 설계를 디버깅하는 데 도움을 줍니다.
중요한 참고 사항
- X는 논리를 통해 전파됩니다(X AND 0 = 0이지만, X AND 1 = X)
- Z는 일반적으로 3상태 버스에 사용됩니다
- 합성 과정에서는 X와 Z가 다르게 처리될 수 있습니다
- 시뮬레이션에서 X를 방지하려면 reg 신호를 항상 초기화하세요
챌린지
X와 Z를 포함하는 올바른 값을 작성하여 코드를 완성하세요.
해야 할 일:
a를 bit 1이 unknown이고 나머지는 0인 4비트 값으로 설정하세요.- 모든 bits가 unknown인 4비트 값으로
c를 설정하세요. - 모든 bits가 high-impedance인 4비트 값으로
d를 설정하세요.
직접 해보기
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // 모든 비트가 X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$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 컴파일러