Valeurs spéciales X et 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 dans la simulation pour indiquer des problèmes dans votre conception.
Lorsque tu vois X, cela signifie souvent :
- Registre non initialisé : tu as oublié de définir une valeur avant de l’utiliser
- Plusieurs pilotes : deux éléments différents essaient de contrôler le même fil en même temps
- Violation de timing : un signal a changé au mauvais moment, créant un état instable
X n’existe pas dans le matériel réel. C’est un outil de simulation qui vous indique qu’il y a un problème dans 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 bogues visibles.
Causes courantes :
reg a; // Initialement X (inconnu)
wire 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 vaut Z lorsqu’il n’est piloté par rien
- Z signifie « ce fil est déconnecté »
- Utilisé pour les tampons à trois états et les bus partagés
Causes fréquentes :
wire c; // Initialement Z (non connecté)
assign c = 1'bZ; // Explicitly set to ZÉcrire X et Z en Verilog
Tu peux attribuer les valeurs X et Z comme les valeurs 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 sont en haute impédanceX et Z dans les formes d’onde
Dans les formes d’onde de simulation :
- X apparaît sous la forme d’une ligne rouge ou d’un « X »
- Z apparaît sous la forme d’une ligne au milieu ou d’un « Z »
Ces éléments 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 les X en simulation
Défi
Complète le code en écrivant les valeurs correctes contenant X et Z.
À faire :
- Définis
acomme une valeur de 4 bits où le bit 1 est inconnu (les autres sont à 0) - Définis
cavec tous les bits inconnus (4 bits) - Définis
davec tous les bits en haute impédance (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 sont 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 conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une ALU2Types de données
Type wireType regEntiers et réelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne