Altifigence Academy

16 / 36 · Теория

Триггеры и разрешение записи

Задайте приоритет сброса, разрешения и удержания.

Цели урока

  • Задайте приоритет сброса, разрешения и удержания.

Удержание тоже поведение

Триггер записывает значение на фронте. Если q<=d выполняется только при en=1, то при en=0 значение держится. Это не то же самое, что произвольно блокировать такт комбинационной логикой. Первое условие if(rst) даёт сбросу приоритет даже при одновременном rst=en=1.

Фрагмент RTL
always_ff @(posedge clk) begin
  if (rst) q <= 1'b0;
  else if (en) q <= d;
end

Регистр и неполная комбинационная логика

Синхронный сброс без фронта не меняет q. В always_ff отсутствие присваивания может намеренно удерживать состояние; в always_comb нужны присваивания на всех путях во избежание защёлок. Отдельно проверьте rst/en=1/1,0/0,0/1: сброс, удержание, запись.

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

При q=1,d=0,rst=0,en=0 что будет после фронта?

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

en=0 удерживает прежнее q=1.

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