Мультиплексор: электронный стрелочник

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

Решение уровня «Перекрёсток»: мультиплексор выбирает один из двух входов
Мультиплексор: авторское решение уровня

Мультиплексор (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:

ABSelQ
0000
0010
0100
0111
1001
1010
1101
1111

Посмотри на первую и четвёртую строки: при 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 ты используешь каскад из таких мультиплексоров, чтобы процессор сам выбирал нужную операцию.

Попробовать в симуляторе →