Altifigence Academy

2 / 37 · Теория

Сигналы и порты: контракт ширины, направления и времени

Читайте интерфейс и разделяйте критерии проверки комбинационного выхода и выхода состояния.

Читайте список портов как контракт схемы

input logic [7:0] data — порт, передающий 8 бит одновременно, а не восемь значений по очереди. Тип logic сам по себе тоже не создаёт элемент памяти. Аппаратное поведение определяется тем, управляет ли сигналом комбинационное присваивание или последовательностный блок по фронту.

Кроме ширины и направления, выясняйте, когда сигнал действителен, кто им управляет и каково значение после сброса. Без этого даже по отдельности правильные модули могут образовать неверную систему.

У одного MUX могут быть два вида выхода

В практикуме одновременно наблюдаются результат выбора y и сохранённый sampled_y.

y(t)=s(t)‾a(t)+s(t)b(t)y(t)=\overline{s(t)}a(t)+s(t)b(t)
qk+1=y(tk−)q_{k+1}=y(t_k^-)

Первое выражение задаёт комбинационную функцию, второе — идеальную синхронную модель, сохраняющую устойчивый y непосредственно перед фронтом. Безусловное сравнение обоих выходов с текущими входами ошибочно объявит исправный регистрРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала. Подробнее неисправным.

SystemVerilog
assign y = sel ? b : a;
always_ff @(posedge clk) sampled_y <= y;

В симуляторе события упорядочены даже внутри одной временной отметки. У реального компонента есть setupВремя предустановки (setup) — минимальное время, в течение которого входные данные должны быть стабильны до захватывающего фронта такта. При нарушении результат записи не гарантирован. Подробнее/hold и задержка clock-to-Q. Две формулы не устраняют различий, а служат началом явного определения момента наблюдения при функциональной проверке.

Стрелки показывают зависимости данных. После изменения a, b или sel сначала меняется комбинационный y, но sampled_y сохраняет новое значение только на положительном фронтеПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. Подробнее.

Граница комбинационного и сохраняемого выходов
  1. a · b · sel: Одновременно заданные входы
  2. MUX → y: Вычисление по текущему сигналу выбора
  3. DFF → sampled_y: Запись y на положительном фронте

Вопросы для проверки

  • sel — определённый вход 0/1 или внешний асинхронный сигнал?
  • Сравниваете ли вы изменившийся y с sampled_y после следующего допустимого фронта?
  • Начальное значение sampled_y задаётся сбросомСброс возвращает состояние к заданному начальному значению. Нужно определить, синхронен он или асинхронен и имеет ли приоритет над другими управляющими сигналами. Подробнее или настройками инициализации инструмента?

Явные начальные значения практикума обеспечивают воспроизводимую модель 0/1. Не следует считать их гарантией поведения реального чипа при включении питания.

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

Между фронтами такта a меняется с 0 на 1, а sel остаётся 0. Когда меняются y и sampled_y?

Прочитать объяснение

Комбинационный y меняется после вычисления или распространения по комбинационному пути. sampled_y обновляется на следующем положительном фронте, захватывающем значение. Изменение входа около фронта связано с setup/hold реальной схемы, поэтому одной простой модели недостаточно для вывода о безопасности.

Выбор действует в этом браузере. Его можно изменить внизу страницы.