8 / 36 · Теория
Описание MUX условным выражением
Соедините сигнал выбора и входные данные в RTL.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Цели урока
- Соедините сигнал выбора и входные данные в RTL.
Ветка true идёт первой
Порядок: condition ? значение_true : значение_false. sel ? b : a выбирает b при 1 и a при 0. Алфавитный порядок входов может случайно перевернуть выбор. assign поддерживает комбинационную связь и пересчитывается при изменении входа, а не выполняется один раз как команда программы.
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.