Мультиплексор: электронный стрелочник
Представь железнодорожную стрелку: по одним путям едет пассажирский поезд, по другим — товарный, а диспетчер одним рычагом решает, кто из них поедет дальше по главному пути.
Мультиплексор (MUX) — это такой же диспетчер, только электронный. У него есть два входа для данных (A и B) и один специальный вход управления — селектор (Sel). Если на селектор подать 0, мультиплексор пропустит на выход данные со входа A. Если подать 1 — пропустит данные со входа B.
Зачем это нужно процессору? Постоянно! Например, чтобы выбрать, откуда брать адрес для чтения памяти: из счётчика команд или из индексного регистра. Мультиплексоры позволяют аппаратуре процессора менять своё поведение на лету, подчиняясь программному коду.
Практический пример. В процессоре мультиплексор постоянно выбирает, откуда взять адрес для следующей операции. Если выполняется команда перехода (JMP), адрес берётся из операнда инструкции. Если команда обычная — адрес приходит со счётчика команд (PC+1). Мультиплексор получает оба этих адреса на входы A и B, а сигнал от дешифратора команды говорит ему, какой из них пропустить дальше в память. Одна микросхема — сотни различных путей для данных.
Знакомьтесь: мультиплексор 2-в-1
Самый простой мультиплексор — 2-в-1: два входа данных, один вход выбора и один выход. Работает он по простейшему правилу:
1. Sel = 0 → Q = A.
2. Sel = 1 → Q = B.
Обрати внимание: селектор — это не данные. Это управляющий провод, который принимает решение. Этим мультиплексор принципиально отличается от вентилей AND или OR, где оба входа — данные.
Таблица истинности мультиплексора
Полное поведение схемы описывает таблица истинности из 8 строк — по одной на каждую комбинацию входов A, B и Sel:
| A | B | Sel | Q |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Посмотри на первую и четвёртую строки: при Sel=0 выход повторяет A, при Sel=1 — повторяет B. Селектор выбирает, какие данные «доедут» до выхода.
Формула: из чего состоит мультиплексор
Вся магия умещается в одну формулу:
Q = (A AND NOT Sel) OR (B AND Sel)
Разберём, как она работает. Когда Sel=0:
1. NOT Sel даёт 1 — линия A «открыта»: A AND 1 = A.
2. B AND 0 = 0 — линия B «закрыта».
3. OR объединяет результат: Q = A OR 0 = A.
Когда Sel=1, всё наоборот: открыта линия B, закрыта A, и на выход проходит B. Идея простая: селектор «открывает» одну дверь и «закрывает» другую.
Числовой пример: переключаем вход
Пусть A = 0, а B = 1. Тогда:
1. Sel = 0 → Q = A = 0.
2. Sel = 1 → Q = B = 1.
Один и тот же мультиплексор, одни и те же входы — а выход меняется, потому что селектор выбрал, чьи данные пропустить. Это и есть «электронный стрелочник»: данные — как поезда, а селектор — диспетчер, который переводит стрелку.
Уровень 1.9 «Перекрёсток»
На уровне 1.9 тебе предстоит собрать мультиплексор из базовых вентилей и получить чип MUX. Схема — ровно по формуле:
1. Пропусти Sel через NOT — получишь NOT Sel.
2. Подай A и NOT Sel на первый AND.
3. Подай B и Sel на второй AND.
4. Объедини выходы обоих AND через OR — это и есть Q.
Проверь себя по таблице истинности: меняй Sel и убеждайся, что выход переключается между A и B. А шины из прошлой статьи тебе тоже пригодятся — на 8-битных шинах работает тот же принцип выбора.
Мультиплексоры внутри процессора
В процессоре мультиплексоров десятки, и работают они на разных уровнях. Уже знакомый пример — выбор источника адреса: при обычной команде адрес берётся со счётчика команд (PC), а при переходе — из операнда инструкции. Один MUX, два входа-адреса, а селектором управляет дешифратор команд.
Дальше — больше. На уровне 1.13 «Выбор операции» каскад из двух 8-битных мультиплексоров (BusMUX) выбирает, какой результат выдать наружу: ADD, AND или OR — в зависимости от сигнала OpSelect. Так процессор «решает», какую операцию выполнить, а вся маршрутизация — заслуга мультиплексоров. А как выбор превращается в настоящую математику, разберём в статье про АЛУ.
Частые ошибки
1. Путать селектор с данными. Sel не передаёт значение — он выбирает, какой вход пропустить на выход.
2. Забывать NOT на селекторе. Без инверсии обе линии будут открыты одновременно, и OR «смешает» входы.
Резюме
1. Мультиплексор 2-в-1 имеет два входа данных (A и B), селектор (Sel) и один выход Q.
2. Правило работы: Sel = 0 → Q = A; Sel = 1 → Q = B.
3. Формула: Q = (A AND NOT Sel) OR (B AND Sel) — селектор открывает одну линию и закрывает другую.
4. Собирается из NOT, двух AND и одного OR.
5. В процессоре мультиплексоры выбирают источник адреса, результат операции и многое другое.
На уровне 1.9 тебе предстоит собрать свой первый мультиплексор — «электронный стрелочник» на перекрёстке двух потоков битов — и получить чип MUX. А на уровне 1.13 ты используешь каскад из таких мультиплексоров, чтобы процессор сам выбирал нужную операцию.