Menu
Coddy logo textTech

Valores Especiais X e Z

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 17 de 90.

X e Z são valores especiais que nos dão informações sobre o estado do hardware durante a simulação.

X (Unknown) — Para Depuração

X aparece na simulação para indicar problemas com o seu projeto.

Quando você vê X, geralmente significa:

  • Registrador não inicializado — você se esqueceu de definir um valor antes de usá-lo
  • Múltiplos drivers — duas coisas diferentes estão tentando controlar o mesmo fio ao mesmo tempo
  • Violação de temporização (timing) — um sinal mudou no momento errado, criando um estado instável

X não existe em hardware real. É uma ferramenta de simulação que informa que algo está errado com o seu projeto para que você possa corrigi-lo antes de construir o chip real.

Sem X, você pode ver 0s ou 1s aleatórios e não perceber que há um problema. O X torna os bugs visíveis.

Causas comuns:

reg a;           // Inicialmente X (desconhecido)
reg b;
assign b = a;    // b se torna X porque a é X

Z (High Impedance)

Z representa um estado de alta impedância (high-impedance) ou desconectado (disconnected).

  • Um sinal é Z quando não está sendo acionado por nada
  • Z significa "este fio está desconectado"
  • Usado para buffers tri-state e barramentos compartilhados

Causas comuns:

wire c;          // Inicialmente Z (não conectado)
assign c = 1'bZ; // Explicitly set to Z

Escrevendo X e Z em Verilog

Você pode atribuir valores X e Z assim como 0 e 1:

reg [3:0] data;

data = 4'b10X0;    // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1;    // Bit 1 está em alta impedância
data = 4'bXXXX;    // All bits unknown
data = 4'bZZZZ;    // Todos os bits em alta impedância

X e Z em Formas de Onda

Em formas de onda de simulação:

  • X aparece como uma linha vermelha ou "X"
  • Z aparece como uma linha no meio ou "Z"

Eles ajudam você a depurar seu projeto mostrando onde os sinais estão desconhecidos ou desconectados.

Notas Importantes

  • X se propaga através da lógica (X AND 0 = 0, mas X AND 1 = X)
  • Z é geralmente usado para barramentos tri-state
  • Na síntese, X e Z podem ser tratados de forma diferente
  • Sempre inicialize sinais reg para evitar X em simulação
challenge icon

Desafio

Complete o código escrevendo os valores corretos contendo X e Z.

O que fazer:

  1. Defina a como um valor de 4 bits onde o bit 1 é unknown (outros 0)
  2. Defina c como todos os bits unknown (4 bits)
  3. Defina d como todos os bits high impedance (4 bits)

Experimente você mesmo

module xz_challenge;
  wire [3:0] a, c, d;
  
  assign a = 4'b______;   // Bit 1 is X (others 0)
  assign c = 4'b______;   // Todos os 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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos