Special Values X And Z
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 17 sur 90.
X et Z sont des valeurs spéciales qui nous donnent des informations sur l’état du matériel pendant la simulation.
X (Inconnu), pour le débogage
X apparaît lors de la simulation pour indiquer des problèmes dans votre conception.
Lorsque vous voyez X, cela signifie souvent :
- Registre non initialisé : vous avez oublié de définir une valeur avant de l'utiliser
- Pilotes multiples : deux éléments différents essaient de contrôler le même wire en même temps
- Violation de synchronisation : un signal a changé au mauvais moment, créant un état instable
X n’existe pas dans le matériel réel. Il s’agit d’un outil de simulation qui vous indique qu’un problème affecte votre conception afin que vous puissiez le corriger avant de fabriquer la puce réelle.
Sans X, tu pourrais voir des 0 ou des 1 aléatoires sans te rendre compte qu’il y a un problème. X rend les bugs visibles.
Causes courantes :
reg a; // Initialement X (inconnu)
reg b;
assign b = a; // b devient X parce que a est XZ (haute impédance)
Z représente un état de haute impédance ou déconnecté.
- Un signal est Z lorsqu'il n'est piloté par rien
- Z signifie « ce wire est déconnecté »
- Utilisé pour les buffers à trois états et les bus partagés
Causes courantes :
wire c; // Initialement Z (non connecté)
assign c = 1'bZ; // Explicitly set to ZÉcrire X et Z en Verilog
Vous pouvez affecter des valeurs X et Z tout comme 0 et 1 :
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // Le bit 1 est en haute impédance
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // Tous les bits en haute impédanceX et Z dans les chronogrammes
Dans les chronogrammes de simulation :
- X apparaît sous la forme d’une ligne rouge ou de « X »
- Z apparaît sous la forme d’une ligne au milieu ou de « Z »
Ils vous aident à déboguer votre conception en indiquant où les signaux sont inconnus ou déconnectés.
Remarques importantes
- X se propage à travers la logique (X AND 0 = 0, mais X AND 1 = X)
- Z est généralement utilisé pour les bus à trois états
- Lors de la synthèse, X et Z peuvent être traités différemment
- Initialisez toujours les signaux reg pour éviter X lors de la simulation
Défi
Complétez le code en écrivant les valeurs correctes contenant X et Z.
À faire :
- Définissez
asur une valeur de 4 bits où le bit 1 est unknown (les others valent 0) - Définissez
cavec tous les bits unknown (4 bits) - Définissez
davec tous les bits high-impedance (4 bits)
Essayez vous-même
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // Tous les bits X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$finish;
end
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators 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 LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne