Шинный мультиплексор (BusMUX)

Входы (Inputs)

ПинТипОписание
Abus8Первая шина
Bbus8Вторая шина
Selbit0→A, 1→B

Выходы (Outputs)

ПинТипОписание
Qbus8Sel=0→A, Sel=1→B

Логика работы

BusMUX — железнодорожная стрелка для байтов. К входам A и B подходят две восьмибитные шины, а на управляющий пин Sel приходит один бит-переключатель: Sel = 0 — на выход идёт шина A целиком, Sel = 1 — шина B целиком. Внутри это восемь обычных однобитных мультиплексоров, работающих синхронно от общего Sel, поэтому выбор происходит для всех битов сразу, без рассинхрона между разрядами.

Главное свойство: выбранная шина проходит на выход без изменений, все 8 битов за раз, а невыбранная игнорируется полностью — байты не смешиваются и не складываются. Пример на байте: A = 00001111 (15), B = 11110000 (240). При Sel = 0 на выходе 00001111, при Sel = 1 — 11110000. Никаких промежуточных значений между ними не бывает.

Тонкость: BusMUX — комбинационная схема, он ничего не запоминает. Сменился Sel — выход мгновенно переключился на другой источник. И ещё: через BusMUX нельзя «увидеть» оба входа одновременно. Чтобы сравнить две шины, их нужно прогонять по очереди или заводить в схему, которая честно читает оба входа — например, через BusXOR.

Примеры (8 бит)

A (bin)B (bin)SelQ (bin)
0000111111110000000001111
0000111111110000111110000
1010101001010101010101010
1010101001010101101010101

Применение

BusMUX — ключевой элемент тракта данных процессора. В АЛУ (уровень 13) он выбирает второй операнд: то ли значение из регистра, то ли константа из команды. На входе регистров стоит свой мультиплексор — он решает, что именно запомнить в следующем такте: результат АЛУ, байт данных из памяти или прежнее значение для перезаписи.

В Harvard-архитектуре (уровни 16 и дальше) шина данных общая, а источников у неё несколько, и BusMUX следит, чтобы на неё попадал ровно один: инструкция из ROM или байт данных из RAM, результат АЛУ или ввод с геймпада. Селектор при этом управляется дешифратором команд по коду операции. Тот же приём экономит железо: вместо дублирования схем ставится один мультиплексор, который по очереди подаёт на общий вход разные источники.

Собери это сам →

Смежные компоненты

Статьи по теме

Частые вопросы

Чем BusMUX отличается от обычного MUX?

Работает с целыми 8-битными шинами, а не с отдельными битами: переключает сразу байт.

Что происходит с невыбранным входом?

Он полностью игнорируется: сигналы B при Sel = 0 не влияют на выход ни на один бит. Даже «мусор» на невыбранном входе не испортит результат.

Как выбрать одну шину из четырёх?

Каскадируй мультиплексоры: два BusMUX выбирают между парами шин, а третий решает, какую пару пропустить дальше. Понадобятся два бита селектора — например, с дешифратора или двух старших битов адреса.