CPU MUX
Тут будут всякие мультиплексоры.
Contents |
Обычный мультиплексор (MUX)
Мультиплексор реализует конструкцию if-else в железном варианте. Если a = 0, то выход будет b, иначе с.
Для упрощения обозначения мультиплексор 2-в-1 на схемах будет обозначаться просто MUX (мультиплексоры большей разрядности достаточно редки).
abc | x 000 | 0 001 | 1 010 | 0 011 | 1 100 | 0 101 | 0 110 | 1 111 | 1
Функция : x = a ? b : c
В классическом варианте вход a называется s (select), а входы c и b - i0 и i1 соответственно. То есть если select = 0, то выбираем 0й вход (i0), а значение select = 1 выбирает 1й вход (i1). Поэтому классическая таблица истинности выглядит немного по другому. Мы ещё не решили какой вариант обозначения входов использовать, но скорее всего это будет классический вариант :
x = (s == 0) ? i0 : i1
Скачать исходники стандартной ячейки со схемой : File:21-mux circuit.tif
Flow
Все транзитные состояния схемы предлагаем рассмотреть читателю самостоятельно ололо
Заметки по топологии
На картинке видно, что сбоку идёт какой-то левый провод, который ни к чему не присоединен. Дело в том, что он используется для альтернативного роутинга :
- Вход a / s (select) может приходить как с M2, так и через М1 по этому альтернативному маршруту
- Этот маршрут может использоваться просто для прокладки другого роутинга, то есть М1 проходит по всей ячейке, никак на неё не влияя.
Выход с мультиплексора дополнительно нагружается спаренным push/pull инвертором, то есть эта ячейка даёт дополнительный запас по мощности на выходе, чтобы к ней можно было подключать длинные шланги.
Существует также "усиленная" версия мультиплексора:
Инвертирующий мультиплексор (IMUX)
Отличается от обычного тем, что инвертирует входы.
Также есть более мощная версия, с усиленным инвертором на выходе :
Таблица истинности:
abc | out 000 | 1 001 | 1 010 | 0 011 | 0 100 | 1 101 | 0 110 | 1 111 | 0
Заметки по топологии
Нижний контакт c имеет специальную площадку, чтобы альтернативно приходить с M2. Но чаще вход приходит по М1 сверху или снизу.
Вход b всегда приходит с M2.
Кстати входы b и c идут на диффузию.
Мультиплексор 3 в 1
Если вход s1 == 1, то на выход идёт in2.
Иначе (s1 == 0) проверяется следующее условие:
- Если s0 == 0 на выход идёт in0.
- Если s0 == 1 на выход идёт in1.
Или короче:
sel: 00: out = in0 01: out = in1 1X: out = in2
Мультиплексор 4 в 1
Выбирает один провод из 4-х.
s1 s0 | какой входной контакт подать на выход 0 0 | 0 0 1 | 1 1 0 | 2 1 1 | 3
Заметки по топологии
- Иногда входные контакты 0-3 прикрепляются к земле/питанию (то есть хардкорно устанавливаются в 0/1).
- Слева и справа есть место для транзитного прохода по М1
Редуцированный инвертирующий мультиплексор (IMUXR)
Иногда встречаются особенные мультиплескоры, у которых вход SEL реализован двумя контактами:
Предполагается что sel1 != sel2 (иначе схема будет работать непредсказуемо)
Такая компоновка называется Dual-Pass Logic:
Как указано, такой MUX не может выдавать сигнал на большую нагрузку, поэтому его использование ограничено локальным доменом ячеек.