8.3. Комбинационные схемы
Логические тождества и теорема де Моргана; минимизация и карты Карно; комбинационные функции на стандартных ИМС (селекторы, передающие вентили, мультиплексоры, дешифраторы, шифраторы, сумматоры, компараторы, схемы чётности); реализация произвольных таблиц истинности на мультиплексорах, дешифраторах, ПЗУ и программируемой логике.
Представьте кнопку звонка у калитки и кнопку у входной двери: звонок должен звенеть, если нажата любая из них, — сколько бы раз и в каком порядке их ни нажимали раньше. Такой схеме память не нужна: ответ целиком задан тем, что происходит на входах сейчас. Это комбинационнаяКомбинационная схема: выход в каждый момент определяется только текущими входами — памяти нет. Строится из одних вентилей. логика. А вот счётчик гостей, которые позвонили за день, без памяти не обойдётся: его выход зависит не только от текущего нажатия, но и от всей предыстории. Это последовательностнаяПоследовательностная схема: выход зависит и от входов, и от предыдущего состояния — в ней есть память (триггеры). логика (деление на два класса мы уже вводили в разделе 8.1).
Комбинационную схему собирают из одних вентилей — достаточно правила «такие входы → такой выход». Последовательностной нужны элементы, хранящие состояние, — триггерыЭлемент памяти на один бит с двумя устойчивыми состояниями (бистабильный мультивибратор).. В этом разделе мы научимся строить, упрощать и покупать готовой именно комбинационную логику; триггерам и автоматам посвящён раздел 8.4.
8.3.1Логические тождества
- Тождества булевой алгебрыБулева алгебра — логика переменных со значениями 1 и 0: операции И, ИЛИ, НЕ. упрощают схемы; самое важное — теорема де Моргана: , .
- Необычные для школьной алгебры: , , .
- Исключающее ИЛИ: .
Логическое выражение — это и есть схема: каждый знак умножения означает вентиль И, каждый плюс — ИЛИ, каждая черта — инвертор. Значит, любое преобразование выражения, сохраняющее его смысл, даёт другую схему с тем же поведением, а часто — с меньшим числом корпусов и проводов. Правила таких преобразований собраны в таблице ниже. Почти все они проверяются в уме перебором двух значений; но среди них есть и такие, которых в школьной алгебре нет.
Начнём с самого полезного для схемотехника — пары тождеств, носящих имя де Моргана.
Проверить первое равенство легко: равно нулю лишь тогда, когда обе переменные — единицы; равно нулю тоже лишь тогда, когда обе инверсии — нули, то есть . Смысл для схем такой: один и тот же физический вентиль И-НЕВентиль И-НЕ: на выходе низкий уровень, только когда все входы высокие. В КМОП — n-канальные ключи последовательно, p-канальные параллельно. можно рисовать двумя способами — и как И с кружком на выходе, и как ИЛИ с кружками на входах. Это то самое правило изображения вентилей по выполняемой функции, которое мы применяли к сигналам с активным НИЗКИМ уровнем в разделе 8.1.
| Для И | Для ИЛИ | Смешанные |
|---|---|---|
| ← теорема де Моргана, : И можно заменить на ИЛИ (и наоборот), проинвертировав все входы и выход. |
Почему ? Если , обе части равны 1; если , слагаемое тоже нуль. Слагаемое «поглощается»: оно ничего не добавляет к . Похоже рассуждаем и о : когда , ответ 1, а когда , выражение сводится к — вместе получается . На схеме это означает, что инвертор и вентиль И можно выбросить.
Пример: собираем Исключающее ИЛИ
Исключающее ИЛИ (таблица ниже) выдаёт 1, когда входы различны. Отдельный вентиль такой есть в каждом семействе, но полезно уметь получить его из И, ИЛИ и НЕ — и заодно увидеть, что вариантов несколько. Самый прямой путь — выписать строки таблицы, где выход равен 1, и сложить соответствующие произведения: строка даёт , строка даёт .
| A | B | |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Первая форма требует двух инверторов, двух И и одного ИЛИ. Вторую можно прочитать прямо словами — «хотя бы один вход единица, но не оба сразу», — а получить её нетрудно и формально, одними тождествами из таблицы.
переход ко второй форме
Обе реализации показаны ниже. Можно придумать и третью, и четвёртую — например, из четырёх вентилей И-НЕ, — так что выбор определяется тем, какие вентили уже есть в корпусах на плате.
Светодиод «синхронно» на пульте горит, когда два концевых датчика и находятся в одинаковом состоянии, — это функция «эквивалентность», инверсия Исключающего ИЛИ. Докажите алгебраически, что
Решение
Возьмём первую форму Исключающего ИЛИ и применим де Моргана дважды — к сумме и к каждому произведению:
По таблице: даёт единицу в строке , — в строке ; в строках с разными входами оба слагаемых нулевые. Это и есть «входы совпадают», то есть .
Вычислите в булевой алгебре (ответ — 0 или 1): а) ; б) ; в) ; г) .
Решение
а) Знак «+» здесь — ИЛИ: результат 1, если есть хоть одна единица. Не 2 и не 0 — привычка к арифметике тут подводит чаще всего. б) И требует единиц на всех входах: . в) , после инверсии — 0. г) Исключающее ИЛИ нескольких битов — это сумма по модулю 2: три единицы — нечётное количество, ответ 1 (сначала , затем ).
Упростите выражения: а) ; б) ; в) ; г) ; д) ; е) .
Решение
а) По распределительному закону «наоборот»: (это поглощение при ).
б) .
в) Одинаковые входы Исключающего ИЛИ всегда дают 0: .
г) : при нуле на втором входе Исключающее ИЛИ просто пропускает сигнал (а при единице — инвертирует; это «управляемый инвертор»).
д) .
е) .
8.3.2Минимизация и карты Карно
- При числе входов до четырёх лучший ручной метод минимизации — карта КарноТаблица истинности, разложенная по двум осям в порядке кода Грея (00, 01, 11, 10): соседние клетки отличаются одной переменной, и группы единиц дают простые произведения..
- Оси карты идут в коде ГреяКод, в котором соседние числа отличаются ровно одним разрядом: 000, 001, 011, 010, 110… Исключает ложные промежуточные коды в датчиках угла и счётчиках. (00, 01, 11, 10): соседние клетки отличаются одной переменной, края «склеены».
- Группа из соседних единиц — произведение без меняющихся переменных; X ставят так, как удобнее.
- Мажоритарная схема: .
Задача: три датчика давления в системе безопасности дублируют друг друга, и один из них может «врать». Решение принимаем большинством: тревога, если сработали хотя бы два датчика из трёх. Входы , , (1 — сработал), выход . Таблицу истинности написать нетрудно, а вот как получить из неё простую схему?
Мы только что видели, что одну функцию можно реализовать по-разному. Поиск самой экономной реализации — задача минимизации; для неё придуманы и алгебраические алгоритмы, которые выполняет компьютер (метод Квайна — Мак-Класки и его развитие). Но когда переменных не больше четырёх, удобнее всего графический приём — карта Карно. Она вдобавок помогает, если формулы вообще нет, а есть лишь таблица «вход → выход».
- Таблица истинностивсе комбинации входов и выход; X — если вход не влияет или комбинация не встречается
- Карта Карнота же таблица, переменные по двум осям в порядке 00, 01, 11, 10
- Группыобводим соседние единицы (или нули) группами по 2, 4, 8 клеток
- Выражениекаждая группа — произведение; функция — их сумма
Таблица. Выписываем все восемь комбинаций и для каждой — выход. Если бы какая-то комбинация в системе была невозможна (например, два взаимоисключающих концевика замкнуты сразу) или выход от неё не зависел, мы поставили бы в этой строке X — «всё равно».
| A | B | C | Q |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Карта. Раскладываем ту же таблицу на плоскость: по горизонтали — пары значений , по вертикали — значение . Главная тонкость — порядок столбцов: не 00, 01, 10, 11, как при счёте, а 00, 01, 11, 10. В такой последовательности (это код Грея) соседние столбцы отличаются одним битом. Поэтому любые две клетки, стоящие рядом, описываются произведениями, различающимися ровно одной переменной, — и сумма таких произведений эту переменную теряет: .
Группы. Обводим единицы прямоугольниками по 2, 4, 8 клеток. Внутри группы из клеток меняются переменных — они из произведения выпадают, остаются только постоянные. На карте мажоритарной функции хватает трёх пар: , и . Пары перекрываются в клетке 111, и это нормально: одну и ту же единицу можно накрывать сколько угодно раз.
Ответ выглядит самоочевидным: «тревога, если согласны первый и второй, или первый и третий, или второй и третий». Но это часто так — после того как ответ найден. Схема на трёх И и одном ИЛИ показана рядом с картой. Сгруппировав не единицы, а нули, мы получили бы выражение для инверсного выхода: — оно выгодно, если на плате уже есть сигналы , , или нужен активный НИЗКИЙ выход «тревога».
Что здесь что (4)
- Порядок столбцов 00, 01, 11, 10. код Грея: соседние столбцы отличаются одной переменной — потому их и можно объединять
- Группа AB. A = B = 1 при любом C: переменная C в паре меняется и выпадает
- Группа BC. B = C = 1 при любом A — две соседние клетки нижней строки
- Группа AC. клетки 111 и 101 тоже соседние: отличаются только битом B
Приёмы работы с картой
- Только степени двойки. Группа должна состоять из 1, 2, 4, 8… клеток и быть прямоугольником — иначе ей не соответствует одно произведение.
- Чем крупнее, тем лучше. Группа из восьми клеток на карте четырёх переменных — это одна буква; из четырёх — две буквы; пара — три. Поэтому сначала ищите самые большие группы, а мелкие добавляйте лишь для оставшихся единиц.
- Края карты соприкасаются. Карта на самом деле свёрнута в бублик: верхняя строка — соседка нижней, левый столбец — соседка правого. На карте ниже единицы стоят в верхней и нижней строках ( и , то есть ) в столбцах с ; это одна группа из четырёх клеток, .
- Блок с дыркой. Если почти сплошной блок единиц испорчен одной-двумя нулевыми клетками, выгоднее описать его как «блок минус дырка». На второй карте ниже единицы заполняют оба столбца с , кроме клетки . Отсюда : один 3-входовый И-НЕ и один 2-входовый И. Честная минимальная сумма произведений — — потребует трёх вентилей И, 3-входового ИЛИ и инверторов (а вынеся за скобку и применив де Моргана, мы вернёмся к той же «дырке»).
- X — в нашу пользу. Клетку с безразличным значением считаем единицей, если это укрупняет группу, и нулём, если не помогает. Обводить все X не нужно.
- Минимум на карте — ещё не лучшая схема. Иногда более длинное выражение дешевле, потому что его куски уже есть на плате в виде готовых сигналов. Функции, построенные на Исключающем ИЛИ, карта вообще не видит: их единицы стоят шахматным узором и не сливаются в группы. И наконец, решение диктует элементная база — в корпусе четыре 2-входовых вентиля, а в программируемой матричной логике доступна лишь сумма произведений с ограниченным числом слагаемых; оптимальным окажется то, что ложится на эту структуру.
Кассовый аппарат округляет сумму до десятков, и для этого ему нужен признак «цифра единиц не меньше 5». Цифра приходит в двоично-десятичном кодеBCD: каждая десятичная цифра кодируется отдельно четырьмя битами; . ( — старший разряд); коды 1010–1111 не встречаются. Составьте карту Карно, найдите минимальное выражение и предложите реализацию на 2-входовых вентилях.
Решение
Единицы — в клетках 5, 6, 7, 8, 9; клетки 10–15 — X. Карта (строки , столбцы ):
Синяя группа — два правых столбца целиком (): в них настоящие единицы 8 и 9, остальное — X. Оранжевая — , (клетки 5, 7, 13, 15). Пунктирная — , (6, 7, 14, 15). Итого
В микроконтроллерной игрушке нужно перемножать два 2-битных числа (от 0 до 3) и получать 4-битное произведение , но без умножителя — на вентилях. Найдите выражения для каждого бита, для постройте карту Карно.
Решение
Самые простые биты видны сразу. (произведение нечётно, только если оба сомножителя нечётные). только для : .
(произведения 4 и 6: , , ). Карта (строки , столбцы ):
Единицы образуют квадрат без угла (там , бит 2 равен нулю). Две пары:
на карте даёт четыре разрозненных пары (минимальная сумма — четыре произведения по три буквы). Но если вспомнить, как умножают столбиком, получится короче: . Проверка на : оба слагаемых равны 1, сумма по модулю 2 — 0, и действительно . Знание структуры задачи опять дало схему проще формального минимума — функции с Исключающим ИЛИ на карте не видны.
8.3.3Готовые комбинационные функции в микросхемах
- Ходовые комбинационные функции выпускаются готовыми микросхемами средней степени интеграции (СИС).
- Схема выборки и мультиплексорМультиплексор — набор ключей с дешифратором: по двоичному адресу соединяет с выходом один из нескольких входов. выбирают вход по адресу; дешифратор возбуждает один выход из .
- Передающий вентиль КМОПКМОП — комплементарные МОП-транзисторы: n- и p-канальные приборы на одном кристалле. Основа почти всей цифровой логики и аналоговых ключей. — двунаправленный ключ, пропускает и аналоговый сигнал, но не усиливает.
- Сумматоры, компараторыКомпаратор — схема, которая сравнивает два напряжения и выдаёт логический ответ, какое больше., схемы чётности, приоритетные шифраторы наращиваются до любой разрядности.
Карта Карно справится и с серьёзными задачами: сложить два числа, сравнить их, подсчитать чётность, выбрать один сигнал из нескольких по номеру. Но именно эти задачи встречаются в каждом втором проекте, и изобретать их заново незачем: они давно продаются готовыми, в корпусах средней степени интеграции (СИС — до сотни вентилей на кристалле). Некоторые СИС содержат и триггеры, но большая часть — чистая комбинационная логика.
Ниже — справочная «витрина» таких микросхем; наведите указатель на карточку, чтобы увидеть, что делает каждая. Затем разберём их по очереди.
Что здесь что (8)
- Схема выборки. четыре канала сразу: уровень SEL решает, идёт на выходы четвёрка A или четвёрка B
- Мультиплексор. трёхбитный адрес CBA указывает, какой из 8 входов попадёт на выход
- ДемультиплексорДемультиплексор — распределяет один вход на выбранный по адресу выход; аналоговый мультиплексор двунаправлен и работает так же.. один вход отправляется на тот выход, номер которого задан адресом
- ДешифраторПо -разрядному коду возбуждает один из выходов (у '138 — выбранный выход НИЗКИЙ).. по 3-битному коду один из 8 выходов становится НИЗКИМ, остальные ВЫСОКИЕ
- Приор. шифратор. сообщает номер самого старшего из поданных запросов
- СумматорСумматор — инвертирующий усилитель с несколькими входными резисторами в одну мнимую землю: .. суммирует два 4-битных числа с учётом входного переноса
- Компаратор. отвечает, какое из двух чисел больше или они равны
- Схема чётности. считает бит чётности 9-битного слова — внутри дерево Исключающих ИЛИ
Счетверённая 2-входовая схема выборки
Представьте четырёхполюсный тумблер на два положения, только электронный: '157 содержит четыре канала с общим управлением. Пока вход ВЫБОР (SEL) НИЗКИЙ, на выходы – проходят сигналы с входов –; при ВЫСОКОМ SEL — с входов –. Есть и вход разрешения : если подать на него ВЫСОКИЙ уровень, все выходы принудительно станут НИЗКИМИ независимо от остального. Идея входа разрешения встретится нам ещё многократно — у мультиплексоров, дешифраторов, памяти.
| SEL | ||||
|---|---|---|---|---|
| В | X | X | X | Н |
| Н | Н | Н | X | Н |
| Н | Н | В | X | В |
| Н | В | X | Н | Н |
| Н | В | X | В | В |
У той же функции есть родственники: '158 — с инверсными выходами, '257 и '258 — с выходами на три состояния (прямыми и инверсными соответственно); последние удобны, когда выходы селектора сидят на общей шине.
Arduino должна читать один из двух датчиков — или — по одной управляющей линии ( при , при ), а под рукой только микросхема '00 с четырьмя 2-входовыми И-НЕ. Хватит ли её? Нарисуйте схему и оцените задержки.
Решение
Нужная функция — . Любая сумма произведений ложится на два яруса И-НЕ, потому что по де Моргану :
Путь от или до выхода — две задержки вентиля, от — до трёх (через инвертор). Из-за этой разницы при переключении в момент, когда , на выходе может проскочить короткий нулевой «провал» — статический риск. Его убирает избыточное слагаемое (на карте Карно — группа, перекрывающая стык двух основных групп): тогда при выход удерживается независимо от .
Казалось бы, выбирать между двумя сигналами может и обычный механический переключатель. Однако вентильная схема выигрывает почти всегда:
- она дешевле;
- переключает все каналы мгновенно и одновременно;
- ей может управлять сама схема — логическим сигналом, без участия человека;
- даже если выбор делает человек с передней панели, сигналы не нужно тащить по кабелю к переключателю и обратно, собирая наводки и заваливая фронты на ёмкости проводов.
Последний пункт заслуживает отдельного внимания. Селектор ставят на плату рядом с источниками сигналов, а к панели ведут лишь управляющую линию SEL: её подтягивают резистором к питанию, а однополюсный тумблер на панели просто замыкает её на землю. Через провод при этом течёт постоянный уровень, который не боится ни длины, ни ёмкости. Управление логикой постоянными уровнями называют «холодной коммутациейУправление логикой постоянными уровнями: переключатель задаёт уровень на управляющем входе, а сами сигналы по кабелям к переключателю не идут.» — в отличие от «горячей», когда через переключатель идут сами сигналы.
Передающие вентили
В КМОП есть элемент, которого нет в ТТЛТранзисторно-транзисторная логика: биполярное семейство, питание +5 В, порог ≈1,3 В, заметный ток покоя. Серии LS, ALS, AS, F., — передающий вентильПередающий вентиль — аналоговый КМОП-ключ: n- и p-канальные транзисторы параллельно, открываются одновременно противофазными сигналами затворов.. Это два МОП-ключа, p-канальный и n-канальный, включённые параллельно и управляемые противофазно (как они устроены, мы разбирали в разделе 3.3). Пока ключ замкнут, сигнал любой формы в пределах от 0 до — хоть логический, хоть аналоговый — проходит через сопротивление порядка сотен ом; разомкнутый ключ имеет практически бесконечное сопротивление.
Вход и выход у такого ключа условны: сигнал идёт в любую сторону. В микросхеме 4066 четыре таких двунаправленныхДвунаправленный ключ пропускает сигнал в обе стороны — как механический выключатель: исток и сток ПТ взаимозаменяемы. ключа, у каждого свой управляющий вход: ВЫСОКИЙ уровень замыкает ключ, НИЗКИЙ размыкает. Внутри КМОП-микросхем передающие вентили используются повсеместно, а снаружи с ними удобно коммутировать и логические уровни КМОП, и аналоговые сигналы.
Что здесь что (4)
- p-канальный ключ. открыт при = Н; лучше всего проводит напряжения, близкие к питанию
- n-канальный ключ. открыт при УПР = В; лучше всего проводит напряжения, близкие к земле
- Вход / выход. направления нет: любой вывод может быть входом
- Противофазное управление. транзисторы открываются и закрываются одновременно и дополняют друг друга — сопротивление мало во всём диапазоне 0…
Два передающих вентиля и инвертор — это уже схема выборки, причём годная и для аналоговых сигналов. Возьмите восемь ключей и дешифратор, который замыкает ровно один из них по двоичному номеру, — получится выбор одного из восьми входов. Задача «выбрать вход по номеру» настолько типична, что у неё есть своё имя — мультиплексирование.
Усилитель для наушников должен брать звук либо с телефона (), либо с FM-приёмника () — по логическому сигналу от кнопки. Покажите, как сделать коммутатор на ключах 4066 и одном инверторе. Для чего инвертор? Что произойдёт в момент переключения, если ключи замыкаются быстрее, чем размыкаются?
Решение
Источники и подключаем к двум ключам 4066, вторые выводы ключей соединяем — это выход на усилитель. Сигнал идёт прямо на управление ключа 2, а на ключ 1 — через инвертор. При замкнут ключ 1 (звучит телефон), при — ключ 2 (приёмник). Инвертор гарантирует, что в установившемся режиме замкнут ровно один ключ: без него оба управлялись бы одним уровнем и замыкались бы вместе.
Если замыкание опережает размыкание («замыкание до размыкания»), то на десятки—сотни наносекунд замкнуты оба ключа: телефон и приёмник оказываются соединены друг с другом через два сопротивления ключей (сотни ом), течёт уравнительный ток, а на выходе — смесь сигналов. Для звука это короткий щелчок, для других применений — перегрузка источников. Аналоговые мультиплексоры поэтому характеризуются в паспорте свойством «размыкание до замыкания» (break-before-make); в ответственных случаях между выключением одного ключа и включением другого делают паузу. Но в паузе разомкнуты оба ключа, и выход «висит» — его полезно привязать резистором к земле (или к средней точке, если сигнал двуполярный относительно неё), иначе усилитель может поймать наводку.
Мультиплексоры
Схема выборки из двух — это простейший, 2-входовый мультиплексор. Готовые бывают на 4 входа (обычно по два в корпусе), на 8 и на 16. Логика у всех одна: на адресные входы подают двоичный номер, и на выход проходит сигнал с входа с этим номером. Восемь входов требуют трёх битов адреса, шестнадцать — четырёх.
Возьмём цифровой мультиплексор '151. Помимо трёх адресных входов , , и восьми входов данных, у него есть вход разрешения (строб) с активным НИЗКИМ уровнем и два выхода — прямой и инверсный. Пока ВЫСОКИЙ, мультиплексор выключен: держится НИЗКИМ, — ВЫСОКИМ, что бы ни было на адресе и данных.
| Цифровой мультиплексор ('151, '153) | Аналоговый мультиплексор (4051, 4053) | |
|---|---|---|
| Устройство | вентили с входным порогом | передающие вентили + дешифратор |
| Уровни на выходе | восстанавливаются «чистые», как у любого элемента ТТЛ | просто пропускает входной уровень |
| Разветвление по выходу | есть | нет |
| Направление | только вход → выход | двунаправленный — работает и демультиплексором |
В КМОП, как видно из сравнения, мультиплексоры бывают двух сортов. Цифровые (например, '153) построены из вентилей: входной сигнал сравнивается с порогом, и на выходе формируются полноценные логические уровни, как у любой ТТЛ-микросхемы. Аналоговые — это набор передающих вентилей с дешифратором внутри: 4051 выбирает один из восьми, 4053 содержит три независимых переключателя на два положения.
У аналоговых свой характер: выход не имеет нагрузочной способностиНагрузочная способность — какой ток выход может отдать (в «1») или отвести (в «0»), сохраняя гарантированный логический уровень. и не «чистит» уровни, зато сигнал может идти в обе стороны — и тогда мультиплексор превращается в демультиплексор (о нём чуть ниже).
Метеостанция опрашивает четыре датчика-компаратора (сигналы –) через одну линию, выбирая датчик адресом . Постройте такой 4-входовый мультиплексор тремя способами: а) на И, ИЛИ и инверторах; б) из трёх 2-входовых схем выборки; в) на буферахБуфер — повторитель с : огромное входное и малое выходное сопротивление, развязывает источник и нагрузку. с тремя состояниями и дешифраторе «1 из 4». Когда стоит выбрать способ (в)?
Решение
а) Прямо по определению: . Нужны два инвертора для адресных линий, четыре 3-входовых И и один 4-входовый ИЛИ. Готовая микросхема с такой логикой — '153 (в корпусе их две).
б) Дерево из схем выборки: одна по адресу выбирает между и , другая (тоже по ) — между и , третья по — между результатами первых двух. Сигнал проходит две ступени.
в) Каждый датчик подключён к общему проводу через свой буфер с тремя состояниямиТретье (высокоимпедансное) состояние — выход отключён от линии: оба выходных транзистора закрыты. Позволяет нескольким выходам по очереди работать на общую шину.; разрешения буферов приходят с выходов дешифратора «1 из 4» (половина '139), на адрес которого подан . В любой момент к проводу подключён ровно один датчик.
Способ (в) выгоден, когда источники разнесены в пространстве — например, стоят на разных платах в разных концах корпуса: от каждого к общей шине идёт один провод, а новый датчик добавляется ещё одним буфером. Плата за это — нужно следить, чтобы при смене адреса два буфера не включились одновременно, и помнить, что без разрешённых буферов линия «висит».
Наращивание
Что делать, если входов нужно больше, чем в одной микросхеме? Этот вопрос — наращивание, или расширение, — встаёт постоянно: из небольших микросхем собирают большие дешифраторы, память, регистры сдвигаРегистр сдвига — цепочка D-триггеров с общим тактом (выход каждого — на вход следующего): по каждому фронту слово сдвигается на один разряд., арифметические устройства.
Мультиплексор наращивается особенно легко. Два '151 дают 16 входов: младшие три бита адреса подаём на обе микросхемы, а четвёртый, старший бит разрешает одну из них и (через инвертор) запрещает другую. Выход запрещённого '151 остаётся НИЗКИМ, так что выходы можно собрать вентилем ИЛИ. У мультиплексоров с выходами на три состояния не нужен и он — выходы соединяют напрямую.
Что здесь что (4)
- Старший адресный бит A₃. напрямую запрещает верхний '151 (при A₃ = 1) и через инвертор — нижний (при A₃ = 0)
- Инвертор. даёт на вход второй микросхемы — разрешена всегда ровно одна
- Младшие адреса A₀–A₂. общие для обеих микросхем
- Вентиль ИЛИ. выход запрещённого '151 НИЗКИЙ и ИЛИ не мешает, поэтому на выход проходит сигнал разрешённого
Демультиплексоры и дешифраторы
Демультиплексор — мультиплексор наоборот: один входной сигнал он направляет на тот из выходов, чей номер задан адресом, а остальные выходы держит в неактивном состоянии (или отключёнными). Дешифратор устроен так же, только отдельного входа данных у него нет: адрес сам по себе выбирает, какой из выходов станет активным.
Самый ходовой — '138, «1 из 8». Три бита кода на входе делают НИЗКИМ выход с соответствующим номером, на остальных семи остаётся ВЫСОКИЙ уровень. Входов разрешения целых три: G1 активен ВЫСОКИМ уровнем, и — НИЗКИМ. Дешифратор работает, только когда активны все три; в противном случае все выходы ВЫСОКИЕ.
Что здесь что (3)
- Адрес A0–A2. 3-битный код — номер выхода, который станет НИЗКИМ
- Входы разрешения. G1 — активный ВЫСОКИЙ, и — активные НИЗКИЕ; работать дешифратор будет, только если активны все три
- Выходы Y0–Y7. активные НИЗКИЕ: выбранный — Н, остальные — В; при запрете все В
Где нужен дешифратор? Чаще всего — чтобы в зависимости от кода происходили разные события: код может идти от счётчика, перебирающего шаги процесса (как получить такой счётчик, расскажем в разделе 8.6), или от адресной шины микропроцессора, когда надо понять, к какому устройству он обращается. Например, выходы дешифратора, подключённого к двоичному счётчику, по очереди становятся активными — это готовая схема «сначала одно, потом другое, потом третье».
У '138 есть младший собрат '139 — два дешифратора «1 из 4» в одном корпусе, у каждого по одному входу разрешения с активным НИЗКИМ уровнем. А то, что у '138 входы разрешения разной полярности, позволяет наращивать его без дополнительных элементов: две микросхемы дают «1 из 16», как на рисунке.
Контроллер склада автоматических ячеек выбирает одну из 24 ячеек пятибитным адресом (коды 0–23) и должен опустить в НИЗКИЙ уровень линию выбранной ячейки. Соберите дешифратор «1 из 24» из трёх '138. Нужны ли дополнительные вентили? Что произойдёт при адресах 24–31?
Решение
Младшие биты подаём на адресные входы всех трёх '138. Старшие выбирают микросхему через входы разрешения (G1 активен ВЫСОКИМ, и — НИЗКИМ):
- № 0 (ячейки 0–7, ): G1 = +5 В, , ;
- № 1 (8–15, ): G1 = , , — на землю;
- № 2 (16–23, ): G1 = , , — на землю.
Каждая микросхема разрешена ровно при своей комбинации старших битов, и ни одного вентиля не требуется — хватает разной полярности входов разрешения. При (адреса 24–31) запрещены все три: микросхема № 0 видит ВЫСОКИЕ и , № 1 — ВЫСОКИЙ , № 2 — ВЫСОКИЙ . Все 24 линии остаются ВЫСОКИМИ — ни одна ячейка не выбрана, что и требуется для несуществующих адресов. (Свободный вход у № 1 и № 2 можно отдать общему сигналу разрешения, но у № 0 он занят — для общего разрешения там понадобился бы вентиль.)
У КМОП-мультиплексоров на передающих вентилях демультиплексор получается бесплатно: ключи двунаправленны, достаточно поменять местами «вход» и «выходы».
Особая разновидность дешифраторов — преобразователи кодов; они есть во всех семействах. Всем знаком дешифратор для семисегментного индикатора: на вход подаётся цифра в двоично-десятичном коде (BCD), а на выходах сразу семь сигналов — какие сегменты зажечь, чтобы получилась нужная цифра. Микросхема '47 к тому же содержит мощные выходные каскады, которые могут прямо питать сегменты. По-хорошему её следовало бы называть преобразователем кода, но название «дешифратор» за ней закрепилось.
Вы делаете собственный шрифт для индикатора и хотите сами управлять нижним левым сегментом e. Он светится в цифрах 0, 2, 6, 8 и погашен в остальных. На входе — BCD-код ( — старший разряд), коды 10–15 не встречаются. Найдите минимальную логику.
Решение
Карта Карно (строки , столбцы ): единицы в клетках 0, 2, 6, 8, X в 10–15:
Синие кусочки в четырёх углах — это одна группа: углы карты соседствуют попарно и по горизонтали, и по вертикали. В ней и : произведение (клетки 0, 2, 8, 10). Оранжевая группа — вся нижняя строка : произведение (клетки 2, 6, 14, 10). Итого
Приоритетный шифратор
Обратная задача дешифратора: на входах несколько линий-запросов, и нужно получить двоичный номер активной. Но что, если активны сразу несколько? Приоритетный шифраторВыдаёт двоичный номер самого старшего из возбуждённых входов (например, '148). отвечает однозначно: он выдаёт номер самого старшего из активных входов, а младшие игнорирует. Так устроено обслуживание прерываний в микропроцессорных системах (кто важнее, того и обслуживают), и так же работает самый быстрый, параллельный АЦП, о котором речь пойдёт в разделе 9.3. Готовые микросхемы: '148 — восемь входов и трёхбитный номер, '147 — десять входов и номер в BCD.
В баке четыре поплавковых датчика уровня воды на разной высоте: (нижний) … (верхний); датчик выдаёт 1, если вода выше него. Нужно передать на индикатор двухбитный номер самого высокого сработавшего датчика и отдельный сигнал «вода есть хотя бы у одного датчика». Спроектируйте этот 4-входовый приоритетный шифратор так, чтобы он работал правильно и при неисправном (залипшем) нижнем датчике.
Решение
Требование «работать и при залипшем датчике» и означает, что смотреть надо только на старший активный вход, не предполагая, что ниже него всё сработало. Таблица (X — безразлично):
| 1 | X | X | X | 11 | 1 |
| 0 | 1 | X | X | 10 | 1 |
| 0 | 0 | 1 | X | 01 | 1 |
| 0 | 0 | 0 | 1 | 00 | 1 |
| 0 | 0 | 0 | 0 | XX | 0 |
Старший бит номера равен 1 для датчиков 3 и 2: . Младший — для номеров 3 и 1; номер 1 побеждает, только если датчик 2 молчит: . Наличие воды: (или экономнее ). Итого — два ИЛИ, инвертор, И и ИЛИ для . Без выхода не обойтись: «вода только у нижнего датчика» и «воды нет совсем» дают одинаковый код .
Сумматоры и другие арифметические устройства
Сложение — самая частая арифметика в цифровой технике, и сумматоры выпускаются готовыми. Микросхема '283 (её предшественник — '83) складывает два 4-разрядных числа и и выдаёт 4-разрядную сумму и бит переноса . Чтобы складывать длинные числа, у неё есть ещё и вход переноса : туда подают выходной перенос соседнего, младшего сумматора. Две микросхемы складывают байты, четыре — 16-разрядные слова.
Если нужно не только складывать, используют арифметико-логическое устройство (АЛУ). Классика — 4-разрядное '181: оно выполняет сложение, вычитание, сдвиг, сравнение и набор логических операций, а наращивается до любой длины слова. Арифметика на таких микросхемах занимает от единиц до десятков наносекунд, смотря по семейству.
Существуют и более сложные арифметические микросхемы:
- умножители 8×8 и 16×16 бит; для цифровой обработки сигналов — умножители-накопители, которые не только перемножают, но и суммируют произведения (до 32×32 бита с 64-битным результатом и запасными разрядами, чтобы сумма не переполнилась); одна операция занимает 25–50 нс, а ЭСЛЭмиттерно-связанная логика: самое быстрое биполярное семейство (до ~500 МГц), питание −5,2 В, уровни около −0,9 и −1,75 В.-умножитель 16×16 справляется примерно за 5 нс;
- корреляторы, которые сравнивают поразрядно две битовые последовательности (скажем, по 64 бита, сдвигаемые во внутренних регистрах) и выдают число совпадающих битов; часть позиций можно исключить маской, а тактовая частота — десятки мегагерц;
- самые сложные — процессоры с плавающей запятой: сложение, умножение, тригонометрические функции, экспонента, корни по стандарту IEEE 754 со словами до 80 бит. Таковы сопроцессоры 8087, 80287, 80387 и 68881, работавшие в паре со «своими» микропроцессорами и выдававшие порядка 10 Мфлопс.
Счётчик энергии в умном щитке накапливает 20-битную сумму на пяти 4-разрядных сумматорах с последовательным переносом. Задержки одной микросхемы: от входов данных до выхода переноса — 14 нс, от входа переноса до выхода переноса — 9 нс, от входа переноса до выходов суммы — 13 нс. Найдите наихудшее время сложения (до установления старших битов суммы).
Решение
Хуже всего, когда перенос возникает в самой младшей микросхеме и проходит через все остальные: 14 нс (данные → перенос в первой) + нс (перенос транзитом через вторую, третью и четвёртую) + 13 нс (перенос → сумма в пятой) = 54 нс. Каждые лишние четыре разряда добавляют ещё 9 нс — задержка растёт линейно, поэтому в длинных сумматорах переносы групп вычисляют параллельно схемой ускоренного переноса ('182).
Компараторы и схемы чётности
Задача «больше, меньше или равно» решается цифровым компаратором. Микросхема '85 сравнивает два 4-разрядных числа и и выдаёт три сигнала: , , . Для длинных чисел у неё есть три входа наращивания — на них подают результат сравнения младших разрядов от соседней микросхемы.
Кодовый замок: восемь тумблеров задают секретный код (каждый тумблер замыкает свою линию на землю, линии подтянуты резисторами к +5 В), а клавиатура выдаёт набранный 8-битный код . Постройте сигнал «код верен» на вентилях Исключающее ИЛИ. Сколько понадобится корпусов?
Решение
Разомкнутый тумблер даёт ВЫСОКИЙ уровень , замкнутый — НИЗКИЙ. Разряд совпадает, если . Восемь вентилей Исключающее ИЛИ — два корпуса '86 — дают восемь сигналов несовпадения; код верен, когда все они НИЗКИЕ:
Последний представитель витрины — формирователь и контролёр чётности. При передаче или записи к слову добавляют ещё один бит — бит чётности, а при приёме проверяют, сходится ли он: одиночная ошибка (один перевернувшийся бит) обязательно его нарушит. Соглашений два: при чётной чётности общее число единиц вместе с дополнительным битом чётно, при нечётной — нечётно. Микросхема '280 принимает 9-разрядное слово и выдаёт оба варианта. Внутри у неё только вентили Исключающее ИЛИ, соединённые деревом.
Для 12-битного слова с датчика нужно формировать бит чётности на 2-входовых вентилях Исключающее ИЛИ. Сколько вентилей потребуется? Через сколько вентилей пройдёт сигнал в худшем случае, если соединить их сбалансированным деревом, и сколько — если цепочкой?
Решение
Каждый 2-входовый вентиль превращает два сигнала в один, то есть уменьшает их число на единицу. Из 12 сигналов надо получить один — значит, вентилей 11 при любом способе соединения (Исключающее ИЛИ ассоциативно, порядок объединения роли не играет). В дереве число сигналов на каждом уровне примерно вдвое меньше: 12 → 6 → 3 → 2 → 1, всего уровня. В цепочке каждый вентиль добавляет к результату по одному биту, и первый бит проходит все 11. Нужен бит нечётной чётности вместо чётной — ставят на выходе ещё один вентиль Исключающее ИЛИ с управляющим входом (управляемый инвертор).
Программируемые логические устройства и другие функции
Наконец, свою собственную комбинационную (и даже последовательностную) логику можно «зашить» в микросхему, внутри которой — массив вентилей с программируемыми связями. Главных разновидностей две: ПМЛПрограммируемая матричная логика (PAL): программируемая матрица И, фиксированная матрица ИЛИ. Например, 16L8 — до 16 входов, 8 выходов. (по-английски PAL — логика с программируемой матрицей И) и ПЛМПрограммируемая логическая матрица (PLA): программируются и матрица И, и матрица ИЛИ. (PLA — матрица, в которой программируются и И, и ИЛИ). ПМЛ стоят недорого, гибки и давно стали обычным инструментом разработчика; подробно о них — в следующем пункте.
Среди готовых СИС встречаются и менее известные функции: КМОП-элемент мажоритарной логики, сообщающий, что активно большинство входов; двоично-десятичная схема дополнения до 9 (для вычитания в десятичной арифметике); «барабанный сдвигатель» (barrel shifter), который за одно действие сдвигает входное слово на заданное число разрядов и наращивается на любую длину.
8.3.4Реализация произвольных таблиц истинности
- -входовый мультиплексор реализует любую таблицу от переменных, а с одним инвертором — от .
- Дешифратор плюс вентили ИЛИ даёт сразу несколько функций: выходы дешифратора — минтермыПроизведение всех входных переменных (прямых или инверсных), равное 1 ровно на одном наборе входов; соответствует одной клетке карты Карно и одному выходу дешифратора..
- ПЗУПостоянное запоминающее устройство: для каждого адреса хранит слово (обычно 8 бит); реализует любую таблицу истинности, если хватает адресных входов. реализует любую таблицу, если хватает адресных входов; объём растёт экспоненциально с числом входов.
- ПМЛ: программируемые И, фиксированные ИЛИ; ПЛМ программируется целиком.
Обычно цифровой проект не требует россыпи вентилей для мудрёных функций: хватает готовых СИС. Но бывает, что нужна произвольная таблица истинности, которая не сводится ни к сумматору, ни к компаратору, — а то и несколько таких таблиц сразу. Собранная «в лоб», она превращается в десяток корпусов. На этот случай есть универсальные решения — от мультиплексора, который выдаёт любую функцию трёх-четырёх переменных, до ПЗУ и программируемой логики.
Мультиплексор как обобщённая таблица истинности
Посмотрите на мультиплексор иначе: его адрес — это номер строки таблицы истинности, а на информационных входах стоит столбец выхода. Если подать переменные функции на адресные входы, а на – — постоянные ВЫСОКИЕ и НИЗКИЕ уровни, переписанные из таблицы, то -входовый мультиплексор выдаст любую функцию от переменных без единого внешнего элемента. На рисунке слева 8-входовый мультиплексор выдаёт признак «нечётное число единиц в коде CBA» — функцию, для которой карта Карно ничего не упрощает.
Менее очевидно, что тот же мультиплексор плюс один инвертор справляется с функцией вдвое большей таблицы — от переменных. Возьмём 4-битное число (0…15) и признак «делится на 3» (0, 3, 6, 9, 12, 15). Старшие три бита подаём на адрес; каждый адрес выбирает пару чисел, отличающихся только битом .
Для «делится на 3» получается так: пара 0–1 — кратно только 0, на вход подаём ; пара 2–3 — кратно 3 (нечётное), ; в паре 4–5 кратных нет, ; далее (число 6), (9), , (12), (15). Карта Карно для этой функции не находит ни одной группы: минимальная сумма — шесть произведений по четыре буквы, около десятка вентилей против одного корпуса с инвертором.
Что здесь что (4)
- D0 = ¬A₀. пара 0–1: делится только 0 — чётное число пары, нужен инвертор
- D1 = A₀. пара 2–3: делится 3 — нечётное число пары, бит A₀ подаётся напрямую
- D2 = Н. пара 4–5: ни одно число не делится на 3
- Адрес C, B, A. старшие биты A₃A₂A₁ выбирают пару чисел
Учебный стенд показывает 4-битное число (0…15), и светодиод должен загораться, если число — из ряда Фибоначчи: 0, 1, 2, 3, 5, 8, 13. Реализуйте функцию на 8-входовом мультиплексоре и одном инверторе: разбейте числа на пары по трём старшим битам и для каждой пары решите, что подать на информационный вход. Проверьте схему на числах 12 и 13.
Решение
Пары и решения:
| Пара () | Числа | Фибоначчи? | Вход мультиплексора |
|---|---|---|---|
| 000 | 0, 1 | да, да | В |
| 001 | 2, 3 | да, да | В |
| 010 | 4, 5 | нет, да | |
| 011 | 6, 7 | нет, нет | Н |
| 100 | 8, 9 | да, нет | |
| 101 | 10, 11 | нет, нет | Н |
| 110 | 12, 13 | нет, да | |
| 111 | 14, 15 | нет, нет | Н |
Итак: , , (через инвертор), — пригодились все четыре варианта. Проверка: 13 = 1101, адрес выбирает — светодиод горит; 12 = 1100, тот же вход даёт — погашен, верно. Для сравнения, минимизация картой Карно даёт — три произведения, 3-входовый ИЛИ и инверторы, то есть два-три корпуса.
Электронный игральный кубик выдаёт значение 1…6 трёхбитным кодом ( — старший разряд; коды 0 и 7 не встречаются). Пара диагональных светодиодов на «грани» горит при значениях 2, 3, 4, 5, 6. Если считать коды 0 и 7 безразличными, эту пару можно включать одним вентилем. Каким?
Решение
Не горит пара только при значении 1 = 001, то есть когда и . Значит, : 2 = 010 и 3 = 011 дают , 4, 5, 6 дают ; код 0 был бы погашен, код 7 — горел бы, но оба не встречаются. Вариант ошибочно гасит 6 = 110, горит лишь при 6 (и 7), зажёг бы 1. Остальные группы светодиодов кубика тоже обходятся почти без логики: центральный горит при нечётных значениях (), вторая диагональ — при 4, 5, 6 (), средняя пара — только при 6 (, так как 7 не бывает).
Дешифратор как обобщённая таблица истинности
Если функций от одних и тех же входов нужно сразу несколько, удобнее дешифратор. Каждый его выход — это одна строка таблицы истинности, то есть произведение всех входных переменных (прямых или инверсных), равное 1 ровно на одной комбинации. Такие произведения называют минтермами; на карте Карно каждый минтерм — одна клетка. Любая функция — это ИЛИ над теми минтермами, где она равна 1, и с дешифратором остаётся только собрать нужные выходы вентилями.
Пример — перевод десятичной цифры из BCD в код Грея (каждая следующая цифра отличается от предыдущей одним битом; так кодируют положения датчиков угла и переключателей, чтобы на переходе не возникало ложных промежуточных кодов):
| Цифра | BCD | Код Грея |
|---|---|---|
| 0 | 0000 | 0000 |
| 1 | 0001 | 0001 |
| 2 | 0010 | 0011 |
| 3 | 0011 | 0010 |
| 4 | 0100 | 0110 |
| 5 | 0101 | 0111 |
| 6 | 0110 | 0101 |
| 7 | 0111 | 0100 |
| 8 | 1000 | 1100 |
| 9 | 1001 | 1101 |
BCD-цифру подаём на адрес дешифратора «1 из 10» '42. Его выходы активны НИЗКИМ уровнем, поэтому ИЛИ над нужными минтермами превращается в И-НЕ (это то же ИЛИ, нарисованное в отрицательной логикеСоглашение, при котором «истину» изображает НИЗКИЙ уровень; имя такого сигнала пишут с чертой: . Отрицательного напряжения здесь нет.): бит , например, равен 1 для цифр 2, 3, 4, 5, и на его И-НЕ заводят выходы с этими номерами. В отличие от выходов самого дешифратора, выходные биты здесь не исключают друг друга: при цифре 5 активны сразу , и .
Тот же приём годится для любой «программы по шагам». Пусть счётчик перебирает номера шагов посудомоечной машины: набор воды, нагрев, мойка, слив, сушка. Дешифратор превращает номер шага в минтерм, а вентили ИЛИ решают, какие исполнительные устройства включены на этом шаге: насос — на шагах мойки и слива, нагреватель — при нагреве и сушке и т. д. Как получить сам счётчик, который через равные интервалы перебирает коды, вы узнаете в следующих разделах.
Что здесь что (3)
- Дешифратор '42. BCD-код DCBA делает НИЗКИМ один из 10 выходов — это минтермы
- И-НЕ для G3. собирает выходы 8 и 9: И-НЕ над активными НИЗКИМИ сигналами — это их ИЛИ
- И-НЕ для G0. выходы 1, 2, 5, 6, 9 — цифры, у которых младший бит кода Грея равен 1
ПЗУ
Следующий шаг — микросхемы, внутренние связи которых задаёт сам пользователь. Формально это память (о памяти и регистрах мы ещё поговорим подробно), но после того как содержимое записано, такая микросхема ведёт себя как чисто комбинационная схема. Бывают и программируемые устройства с триггерами — регистровые ПМЛ, о них в разделе 8.6.
ПЗУ (постоянное запоминающее устройство) хранит для каждого входного адреса своё слово — обычно 4 или 8 бит, которые появляются на параллельных выходах. Скажем, ПЗУ 1K×8 имеет 10 адресных входов ( комбинации) и для каждой выдаёт 8 бит.
Отсюда главное свойство: в ПЗУ можно записать любую комбинационную таблицу истинности, если хватает адресных входов. Таблица умножения 4×4 бита, например, — это 8 входов и 8 выходов, и она умещается в 1K×8 с запасом. Как и программируемая логика, ПЗУ энергонезависимо: содержимое не пропадает при отключении питания.
Что здесь что (4)
- Адрес A0–A9. 10 входов — ячейки: столько строк в таблице истинности
- Выбор кристалла CE. активный НИЗКИЙ: включает микросхему (удобно, когда ПЗУ несколько)
- Разрешение выходов OE. активный НИЗКИЙ: подключает выходы с тремя состояниями к шине
- Данные D0–D7. 8 выходов — 8 функций от одних и тех же 10 переменных
ПЗУ различаются тем, как в них попадает содержимое:
- масочные — данные «впечатаны» на заводе при изготовлении кристалла;
- программируемые пользователем (ППЗУ) — внутри тонкие перемычки, которые пережигают, как предохранители, подавая адрес и специальные управляющие сигналы; это биполярные микросхемы, быстрые (25–50 нс), но прожорливые (0,5–1 Вт), объёмом от 32×8 до 8K×8;
- стираемые (СППЗУ, EPROM) — бит хранится зарядом на плавающем затворе МОП-транзистораМОП-транзистор (металл — окисел — полупроводник) — полевой транзистор, затвор которого отделён от канала тонким слоем стекла ; ток затвора практически нулевой (входное сопротивление больше Ом)., а стирают всё содержимое ультрафиолетом: несколько минут под мощной лампой через кварцевое окошко в корпусе. Они бывают n-МОП и КМОП, медленнее (около 200 нс, лучшие КМОП — до 35 нс), зато экономичны и вместительны (8K×8 … 128K×8). Та же микросхема в корпусе без окна — однократно программируемая (ОКП, OTP), она дешевле;
- электрически стираемые (ЭСППЗУ, EEPROM) — их и записывают, и стирают прямо на плате от обычного питания +5 В.
| Масочное | ППЗУ (пережигаемое) | СППЗУ (EPROM), ОКП | ЭСППЗУ (EEPROM) | |
|---|---|---|---|---|
| Программирует | завод | пользователь, один раз | пользователь; стирание УФ (ОКП — один раз) | пользователь, прямо в схеме |
| Время доступа | — | 25–50 нс | ~200 нс (КМОП до 35 нс) | — |
| Объём | — | 32×8 … 8K×8 | 8K×8 … 128K×8 | — |
Какой объём ПЗУ (в килобитах, 1 Кбит = 1024 бит) нужен для табличной реализации: а) сумматора двух 4-разрядных чисел без знака (сумма вместе с переносом); б) умножителя двух 6-разрядных чисел без знака?
Решение
а) Адрес — оба слагаемых, разрядов, ячеек. Наибольшая сумма занимает 5 разрядов (). Объём бит = 1,25 Кбит.
б) Адрес — разрядов, ячеек; произведение до требует 12 разрядов. Объём бит = 48 Кбит. Каждый лишний бит сомножителей учетверяет число ячеек: для 16×16 бит понадобилось бы больше четырёх миллиардов слов по 32 бита — тут таблица уже бессмысленна, и нужен настоящий умножитель.
Программируемая логика: ПМЛ и ПЛМ
Программируемая логика — это кристалл, на котором уже стоят сотни вентилей, а соединения между ними задаёт пользователь, примерно как содержимое ПЗУ. Два основных вида — ПМЛ (PAL; название — торговая марка фирмы Monolithic Memories) и ПЛМ. В биполярных вариантах связи — пережигаемые перемычки, их программируют один раз; в КМОП — транзисторы с плавающим затвором, которые стираются ультрафиолетом или электрически.
Соединить что угодно с чем угодно нельзя: структура заранее задана. В ПМЛ программируется матрица вентилей И (какие входы попадут в каждое произведение), а вентили ИЛИ, собирающие произведения, подключены жёстко. На схеме ниже вентиль И нарисован с одним входом — так принято, — но на самом деле вход у него на каждом пересечении строки с вертикальными линиями.
Что здесь что (5)
- Входы и их инверсии. каждый входной сигнал заведён в матрицу и прямым, и проинвертированным
- Сохранённая перемычка (крестик). подключает этот сигнал ко входу вентиля И; в первой строке получилось
- Вентиль И (произведение). на деле многовходовый: вход на каждом пересечении строки с вертикалями
- Неиспользуемые произведения. все перемычки целы — в произведении есть и , и , оно равно 0
- Фиксированный ИЛИ. в ПМЛ подключён жёстко; в ПЛМ и эта матрица программируется
В комбинационной ПМЛ каждый выход (с тремя состояниями) снимается с вентиля ИЛИ, а тот собирает несколько многовходовых вентилей И. Возьмём 16L8: у неё восемь выходов, каждый с 7-входовым ИЛИ, то есть до семи произведений на выход. Каждому И доступны сигналы с 10 входных выводов и с 8 выходов (их заводят обратно в матрицу), все в прямом и инверсном виде. Ещё по одному 32-входовому И на выход управляет его третьим состоянием.
Отсюда и имя: до 16 входов, до 8 выходов, буква L — выходы активны НИЗКИМ уровнем. У ПЛМ свободы больше: программируется и матрица ИЛИ, так что любое произведение можно направить на любой выход (или на несколько).
| ПМЛ (PAL) | ПЛМ (PLA) | |
|---|---|---|
| Матрица И | программируется | программируется |
| Матрица ИЛИ | фиксирована | программируется |
| Быстродействие | выше — одна программируемая матрица | ниже — две |
| Цена и распространённость | дешевле, фаворит разработок | гибче, реже |
Чтобы прошить ПМЛ или ПЛМ, нужен программатор: он пережигает перемычки (или программирует другие элементы связи), а затем читает результат и сверяет его с заданием. Управляет им компьютер с программой-компилятором.
Самые простые программы требуют от разработчика готовой вентильной схемы и лишь помогают отметить, какие перемычки сохранить, — так и прошито Исключающее ИЛИ на рисунке выше. Хорошие принимают логические выражения или таблицы истинности, сами минимизируют их, моделируют поведение и готовят файл для программатора.
Хотя ПЛМ гибче, на практике чаще берут ПМЛ: сигнал в ней проходит только одну программируемую матрицу, поэтому она быстрее, к тому же дешевле, а её возможностей обычно хватает. Более поздние ПМЛ с «макроячейкамиМакроячейка — программируемая выходная структура GAL/СПЛИС: регистр или обход, полярность, третье состояние и источник обратной связи задаются при программировании.» на выходах и с выходами, которые можно заводить обратно, гибкость ещё добавляют.
Сигнализация теплицы с пятью датчиками влажности – должна поливать грядку, когда «сухо» показывают не меньше трёх датчиков из пяти. Можно ли сделать это на одном выходе ПМЛ 16L8 (не более 7 произведений на выход, один проход через матрицу)?
Решение
Функция «не меньше трёх из пяти» равна 1, если единицы стоят хотя бы на трёх входах. Её простые импликанты — все произведения из трёх букв: , , …, — их . Каждое обязательно: набор ровно с тремя единицами (например, 11100) покрывает только «своё» произведение, крупнее группу не сделать. Выход 16L8 инверсный, но перейти к инверсии не помогает: «не больше двух из пяти» — то же «трое из пяти» для проинвертированных входов, и тоже 10 произведений. Решение — на одном выходе собрать сумму пяти произведений, завести её по обратной связи в матрицу и на втором выходе сложить с остальными пятью (6 произведений). Тот же урок, что и для карт Карно: результат определяется структурой ПМЛ, а не только самой функцией.