Altifigence Academy

8 / 36 · Теория

Описание MUX условным выражением

Соедините сигнал выбора и входные данные в RTL.

Цели урока

  • Соедините сигнал выбора и входные данные в RTL.

Ветка true идёт первой

Порядок: condition ? значение_true : значение_false. sel ? b : a выбирает b при 1 и a при 0. Алфавитный порядок входов может случайно перевернуть выбор. assign поддерживает комбинационную связь и пересчитывается при изменении входа, а не выполняется один раз как команда программы.

Фрагмент RTL
assign y = sel ? b : a;

always_ff @(posedge clk)
    sampled_y <= y;

Один драйвер для сигнала

Здесь y управляется только assign, sampled_y — только always_ff. Другое присваивание y в отдельном блоке может создать конфликт. Меняйте по одному: сначала сравните выражение с таблицей, затем регистр наблюдения. Не маскируйте комбинационную ошибку добавлением хранения.

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

Соответствует ли assign y = sel ? a : b; спецификации?

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

Нет: при sel=1 выбирается a. Для a=0,b=1 получится 0 вместо 1.

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