Menu
Coddy logo textTech

Special Values X And 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 обозначает состояние high-impedance или отключения.

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

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

wire c;          // Изначально Z (не подключен)
assign c = 1'bZ; // Explicitly set to Z

Запись X и Z в Verilog

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

reg [3:0] data;

data = 4'b10X0;    // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1;    // Бит 1 находится в состоянии высокого импеданса
data = 4'bXXXX;    // All bits unknown
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-битное значение, в котором bit 1 имеет значение unknown (остальные — 0)
  2. Задайте c значение, в котором все bits имеют значение unknown (4 бита)
  3. Задайте d значение, в котором все bits имеют значение high-impedance (4 бита)

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

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Проверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog