Menu
Coddy logo textTech

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 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 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 que quelque chose ne va pas dans votre conception afin que vous puissiez le corriger avant de fabriquer la puce réelle.

Sans X, vous pourriez voir des 0 ou des 1 aléatoires sans vous 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 X

Z (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 fil 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 attribuer 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 sont en haute impédance

X et Z dans les chronogrammes

Dans les chronogrammes de simulation :

  • X apparaît sous la forme d'une ligne rouge ou « X »
  • Z apparaît sous la forme d'une ligne au milieu ou « Z »

Ceux-ci vous aident à déboguer votre conception en montrant où les signaux sont inconnus ou déconnectés.

Remarques importantes

  • X se propage à travers la logique (X ET 0 = 0, mais X ET 1 = X)
  • Z est généralement utilisé pour les bus trois états (tri-state)
  • En synthèse, X et Z peuvent être traités différemment
  • Toujours initialiser les signaux reg pour éviter X en simulation
challenge icon

Défi

Complétez le code en écrivant les bonnes valeurs contenant X et Z.

À faire :

  1. Définissez a avec une valeur de 4 bits où le bit 1 est unknown (les others à 0)
  2. Définissez c avec tous les bits unknown (4 bits)
  3. Définissez d avec tous les bits en 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
  
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