13 / 63 · Теория
DEMUX и дешифратор: передача данных по выбранному пути
Сравните направления и роли MUX, DEMUX и дешифратора, проверьте условия one-hot и one-hot-or-zero.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
MUX собирает, DEMUX распределяет
MUXМультиплексор — комбинационная схема, соединяющая один из нескольких входов с выходом по сигналу выбора. Соответствие битов выбора и номеров входов должно быть задано явно. Подробнее передаёт один из нескольких входов данных на выход. DEMUXДемультиплексор (DEMUX) направляет один вход данных на выход, указанный сигналом выбора. Значения невыбранных выходов также входят в спецификацию. передаёт единственный вход d на выбранный выход, оставляя остальные равными 0. Если адрес выбора DEMUX 1-to-4 равен , то:
Та же функция через дешифратор с enable
Считайте a1, a0 на рисунке адресом выбора, а enable — данными d. Выходы d0–d3 соответствуют y0–y3 в формуле. Одна комбинационная функция может называться по-разному в разных применениях.
d[i] = enable AND (2 × a1 + a0 = i)
При адресе 10 и данных 1 только y2 равен 1. При данных 0 нулевыми становятся все выходы, включая выбранный. Поэтому условие one-hotOne-hot — представление, в котором ровно один бит равен 1. Если допускаются также все нули, это отдельно называют one-hot-or-zero. Подробнее «всегда ровно одна единица» неверно; для всей функции подходит one-hot-or-zero — «не более одной единицы».
Различайте линию выбора и событие записи
Для записи в один из четырёх регистровРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала. Подробнее можно подать write_en на d, а адрес использовать для выбора. Однако сам дешифраторДешифратор активирует выходную линию, соответствующую двоичному коду. При наличии enable неактивное разрешение может устанавливать все выходы в 0. Подробнее ничего не хранит. Регистр захватывает данные при соответствующем write enable на фронте такта. Изменение комбинационной линии выбора не меняет сохранённое значение немедленно.
- Адрес + write_en: Определите, куда писать и нужна ли запись
- Дешифратор: Сформируйте enable одного выбранного регистра
- Фронт такта: Выбранный регистр сохраняет данные
Проверяйте не только выбранный выход, но и нули на остальных. Четыре комбинации при d=0 и четыре при d=1 дают восемь. Такая функциональная проверка не гарантирует отсутствия выбросов при смене адреса.
Попробуйте сами
Найдите y3y2y1y0 при s1s0=01 для d=1 и d=0. Когда проверка «ровно одно разрешение из четырёх регистров обязательно активно» даст ошибку?
Прочитать объяснение
Получаются 0010 и 0000. При d или write_en, равном 0, нормально, что ни один выход не включён. Условие «ровно один» применимо только при d=1.