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 fornecem informações sobre o estado do hardware durante a simulação.
X (Desconhecido) — Para Depuração
O X aparece na simulação para indicar problemas com o seu projeto.
Quando você vê X, isso geralmente significa:
- Registrador não inicializado — você 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 timing — um sinal mudou no momento errado, criando um estado instável
O X não existe no 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 fabricar o chip real.
Sem o 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 torna-se X porque a é XZ (Alta Impedância)
Z representa um estado de alta impedância ou desconectado.
- Um sinal é Z quando não está sendo conduzido 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; // Definido explicitamente como ZEscrevendo X e Z em Verilog
Você pode atribuir valores X e Z assim como 0 e 1:
reg [3:0] data;
data = 4'b10X0; // O bit 1 é desconhecido (indexado em 0 a partir da direita)
data = 4'b01Z1; // O bit 1 é de alta impedância
data = 4'bXXXX; // Todos os bits são desconhecidos
data = 4'bZZZZ; // Todos os bits são de alta impedânciaX 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"
Estes 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 na simulação
Desafio
Complete o código escrevendo os valores corretos contendo X e Z.
O que fazer:
- Defina
acomo um valor de 4 bits onde o bit 1 é desconhecido (outros 0) - Defina
ccom todos os bits desconhecidos (4 bits) - Defina
dcom todos os bits em alta impedância (4 bits)
Folha de consulta
X (Desconhecido) e Z (Alta Impedância) são valores especiais de simulação em Verilog.
X — Estado desconhecido (apenas simulação, não é hardware real):
- Um
regnão inicializado começa como X - Causado por: registradores não inicializados, múltiplos drivers, violações de temporização
- Propaga-se através da lógica (X AND 1 = X, mas X AND 0 = 0)
- Aparece como uma linha vermelha em formas de onda (waveforms)
Z — Estado de alta impedância / desconectado:
- Um
wirenão conduzido começa como Z - Usado para buffers tri-state e barramentos compartilhados
- Aparece como uma linha central em formas de onda (waveforms)
Escrevendo X e Z em Verilog:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown
data = 4'b01Z1; // Bit 1 is high-impedance
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // All bits high-impedance
assign c = 1'bZ; // Explicitly set wire to ZExperimente 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
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo