Special Values X And Z
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 17/90。
X と Z は、シミュレーション中のハードウェアの状態に関する情報を与えてくれる特殊な値です。
X(不明)、デバッグ用
X は、設計に問題があることを示すためにシミュレーションに現れます。
X を見たとき、それは多くの場合、次のことを意味します:
- 未初期化のレジスタ: 使用する前に値を設定し忘れています
- 複数のドライバー: 2 つの異なるものが、同時に同じ wire を制御しようとしています
- タイミング違反: 信号が誤ったタイミングで変化し、不安定な状態を作り出しています
X は実際のハードウェアには存在しません。これは、設計に問題があることを知らせるシミュレーションツールです。実際のチップを製造する前に問題を修正できます。
X がなければ、ランダムな 0 や 1 が表示されても、問題があることに気付かないかもしれません。X によってバグが見えるようになります。
一般的な原因:
reg a; // 最初は X(不明)
reg b;
assign b = a; // b は a が X なので X になるZ(高インピーダンス)
Zは高インピーダンスまたは切断状態を表します。
- 信号が何からも駆動されていないとき、その信号は Z です
- Z は「この wire は切断されています」を意味します
- トライステートバッファーと共有バスに使用されます
一般的な原因:
wire c; // 初期状態は Z(未接続)
assign c = 1'bZ; // Explicitly set to ZVerilogでXとZを書く
XとZの値は、0や1と同じように代入できます。
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」として表示されます
これらは、信号が不明または接続されていない箇所を示すことで、設計のデバッグに役立ちます。
重要な注意事項
- X は論理回路を通じて伝播します(X AND 0 = 0 ですが、X AND 1 = X)
- Z は通常、三状態バスに使用されます
- 合成では、X と Z は異なる扱いを受ける場合があります
- シミュレーションで X が発生しないよう、reg 信号は必ず初期化する
チャレンジ
X と Z を含む正しい値を記述して、コードを完成させてください。
行うこと:
aを、ビット 1 が unknown(その他は 0)である 4 ビット値に設定しますcを、すべてのビットが unknown(4 ビット)になるように設定しますdを、すべてのビットが high-impedance(4 ビット)になるように設定します
自分で試してみよう
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オンラインコンパイラ