Menu
CoddyTech

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 X

Z (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édance

X 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
challenge icon

Défi

Complète le code en écrivant les valeurs correctes contenant X et Z.

À faire :

  1. Définis a comme une valeur de 4 bits où le bit 1 est inconnu (les autres sont à 0)
  2. Définis c avec tous les bits inconnus (4 bits)
  3. Définis d avec 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
  
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne