Шинный мультиплексор (BusMUX)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| A | bus8 | Первая шина |
| B | bus8 | Вторая шина |
| Sel | bit | 0→A, 1→B |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Q | bus8 | Sel=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) | Sel | Q (bin) |
|---|---|---|---|
| 00001111 | 11110000 | 0 | 00001111 |
| 00001111 | 11110000 | 1 | 11110000 |
| 10101010 | 01010101 | 0 | 10101010 |
| 10101010 | 01010101 | 1 | 01010101 |
Применение
BusMUX — ключевой элемент тракта данных процессора. В АЛУ (уровень 13) он выбирает второй операнд: то ли значение из регистра, то ли константа из команды. На входе регистров стоит свой мультиплексор — он решает, что именно запомнить в следующем такте: результат АЛУ, байт данных из памяти или прежнее значение для перезаписи.
В Harvard-архитектуре (уровни 16 и дальше) шина данных общая, а источников у неё несколько, и BusMUX следит, чтобы на неё попадал ровно один: инструкция из ROM или байт данных из RAM, результат АЛУ или ввод с геймпада. Селектор при этом управляется дешифратором команд по коду операции. Тот же приём экономит железо: вместо дублирования схем ставится один мультиплексор, который по очереди подаёт на общий вход разные источники.
Смежные компоненты
Статьи по теме
Частые вопросы
Чем BusMUX отличается от обычного MUX?
Работает с целыми 8-битными шинами, а не с отдельными битами: переключает сразу байт.
Что происходит с невыбранным входом?
Он полностью игнорируется: сигналы B при Sel = 0 не влияют на выход ни на один бит. Даже «мусор» на невыбранном входе не испортит результат.
Как выбрать одну шину из четырёх?
Каскадируй мультиплексоры: два BusMUX выбирают между парами шин, а третий решает, какую пару пропустить дальше. Понадобятся два бита селектора — например, с дешифратора или двух старших битов адреса.