Menu
Coddy logo textTech

Специальные значения X и Z

Часть раздела Основы путешествия по Verilog на Coddy — урок 17 из 90.

X и Z — это специальные значения, которые предоставляют нам информацию о состоянии оборудования во время симуляции.

X (Неизвестно) — Для отладки

X появляется в симуляции, чтобы указать на проблемы в вашем проекте.

Когда вы видите X, это часто означает:

  • Неинициализированный регистр — вы забыли установить значение перед его использованием
  • Несколько драйверов — два разных компонента пытаются управлять одним и тем же проводником одновременно
  • Нарушение временных характеристик — сигнал изменился в неподходящее время, создав нестабильное состояние

X не существует в реальном оборудовании. Это инструмент моделирования, который сообщает вам, что в вашем проекте что-то не так, чтобы вы могли исправить это до создания реального чипа.

Без X вы можете увидеть случайные 0 или 1 и не осознать, что возникла проблема. X делает ошибки заметными.

Распространенные причины:

reg a;           // Изначально X (неизвестно)
reg b;
assign b = a;    // b становится X, так как a равно X

Z (Высокоимпедансное состояние)

Z представляет собой высокоимпедансное или разомкнутое состояние.

  • Сигнал имеет состояние Z, когда он ничем не управляется
  • Z означает «этот провод отсоединен»
  • Используется для буферов с тремя состояниями и общих шин

Распространенные причины:

wire c;          // Изначально Z (не подключено)
assign c = 1'bZ; // Явно установлено в Z

Запись X и Z в Verilog

Вы можете присваивать значения X и Z точно так же, как 0 и 1:

reg [3:0] data;

data = 4'b10X0;    // Бит 1 неизвестен (индексация от 0 справа)
data = 4'b01Z1;    // Бит 1 находится в состоянии высокого импеданса
data = 4'bXXXX;    // Все биты неизвестны
data = 4'bZZZZ;    // Все биты в состоянии высокого импеданса

X и Z на временных диаграммах

На временных диаграммах моделирования:

  • X отображается в виде красной линии или «X»
  • Z отображается в виде линии посередине или «Z»

Они помогают вам отлаживать ваш проект, показывая, где сигналы не определены или не подключены.

Важные примечания

  • X распространяется через логику (X AND 0 = 0, но X AND 1 = X)
  • Z обычно используется для шин с тремя состояниями
  • При синтезе X и Z могут обрабатываться по-разному
  • Всегда инициализируйте сигналы reg, чтобы избежать X при моделировании
challenge icon

Задание

Дополните код, записав правильные значения, содержащие X и Z.

Что нужно сделать:

  1. Установите a в 4-битное значение, где бит 1 неизвестен (остальные 0)
  2. Установите c так, чтобы все биты были неизвестны (4 бита)
  3. Установите d так, чтобы все биты были в состоянии высокого импеданса (4 бита)

Шпаргалка

X (Unknown) и Z (High-Impedance) — это специальные значения симуляции в Verilog.

X — неизвестное состояние (только для симуляции, не существует в реальном железе):

  • Неинициализированный reg начинается с X
  • Причины: неинициализированные регистры, несколько драйверов (конфликт сигналов), нарушения временных характеристик
  • Распространяется через логику (X AND 1 = X, но X AND 0 = 0)
  • Отображается в виде красной линии на временных диаграммах

Z — высокоимпедансное / отключенное состояние:

  • wire без драйвера начинается с Z
  • Используется для буферов с тремя состояниями и общих шин
  • Отображается в виде средней линии на временных диаграммах

Запись X и Z в Verilog:

reg [3:0] data;

data = 4'b10X0;    // Бит 1 неизвестен
data = 4'b01Z1;    // Бит 1 в состоянии высокого импеданса
data = 4'bXXXX;    // Все биты неизвестны
data = 4'bZZZZ;    // Все биты в состоянии высокого импеданса

assign c = 1'bZ;   // Явное присвоение проводу значения Z

Попробуйте сами

module xz_challenge;
  wire [3:0] a, c, d;
  
  assign a = 4'b______;   // Bit 1 is X (others 0)
  assign c = 4'b______;   // Все биты 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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы