1. Шифраторы и дешифраторы
Шифраторы и дешифраторы
Один и тот же набор из трёх входных линий может либо выбрать одну из восьми выходных линий, либо, наоборот, превратить один активный сигнал из восьми в трёхразрядный двоичный код. На этой паре операций построены адресация памяти, опрос клавиатур, выбор устройств на шине и большая часть «обвязки» вокруг процессорных узлов. Если студент путает эти два устройства, он обычно начинает ошибаться уже на этапе таблицы истинности.
В комбинационной логике дешифратор и шифратор удобнее рассматривать как взаимно обратные по смыслу, но не по реализации устройства. Дешифратор получает двоичный код и активирует одну линию из множества. Шифратор получает одну активную линию из множества и формирует код её номера. Эта симметрия красива в теории, но на практике быстро ломается из-за неидеальности входных наборов, приоритетов и задержек.
Дешифратор как узел выбора одной линии
Дешифратор — это комбинационное устройство с входами и до выходов, в котором для каждого двоичного набора на входе активируется один определённый выход. Здесь — число входных переменных, а — число возможных комбинаций этих переменных. Для трёх входов получаем схему , для четырёх — .
Самая важная идея: каждый выход дешифратора — это минтерм входных переменных. Если входы обозначены как , , , то, например, выход для кода описывается выражением . Здесь , , соответствуют номеру 5 в двоичном представлении. Именно поэтому дешифратор часто воспринимают как «генератор минтермов».
Для дешифратора таблица особенно наглядна:
| A | B | Y0 | Y1 | Y2 | Y3 | |---|---|---|---|---|---| | 0 | 0 | 1 | 0 | 0 | 0 | | 0 | 1 | 0 | 1 | 0 | 0 | | 1 | 0 | 0 | 0 | 1 | 0 | | 1 | 1 | 0 | 0 | 0 | 1 |
Такую таблицу легко перевести в систему уравнений:
- - - -
Здесь каждый выход активен только для одной комбинации входов. В аппаратной реализации это означает набор элементов И и инверторов, а в интегральной реализации — уже оптимизированную внутреннюю структуру.
> Дешифратор полезно мыслить не как «ещё одну микросхему», а как аппаратный способ развернуть код в множество адресных признаков.
На практике почти всегда встречается ещё один вход — разрешение работы. Его обозначают как , , или через активный низкий уровень. Если разрешение не подано, все выходы остаются в неактивном состоянии. Такой вход нужен, когда несколько дешифраторов каскадируют или когда выбор устройства должен происходить только в определённой фазе цикла.
Классический пример — адресация памяти. Пусть процессор выдаёт 4-разрядный адрес, а нужно выбрать один из 16 регистров. Дешифратор делает это напрямую: адрес активирует линию . Регистр 11 открывается на запись или чтение, остальные 15 остаются заблокированными.
!Сравнение структуры дешифратора и шифратора
Активные уровни и реальные микросхемы
Здесь начинается зона типичных ошибок. В учебных рисунках выход, как правило, активен высоким уровнем: выбранная линия равна 1. В серийных микросхемах часто наоборот — активный ноль. Это не косметика, а важное электрическое соглашение.
Например, дешифратор 74LS138 — очень распространённая микросхема — имеет активные низкие выходы. Это значит, что при выборе одной линии именно она переходит в 0, а остальные остаются в 1. Кроме того, у неё три входа разрешения, из которых один активен по высокому уровню, а два — по низкому. Такая организация удобна для каскадирования.
Сравнение учебной и реальной логики полезно держать в виде таблицы:
| Характеристика | Учебная модель | Типовая серия 74LS138 | |---|---|---| | Активный выход | 1 | 0 | | Вход разрешения | один, условный | три входа разрешения | | Внутренний смысл | минтерм | минтерм с инверсией на выходе | | Назначение | объяснение принципа | адресация и выбор кристаллов |
Если не учесть активный уровень, схема формально будет «правильной», но физически не заработает. Например, вход Chip Select у памяти может быть активным нулём, и именно поэтому 74LS138 удобно подключается к таким узлам почти без дополнительной логики.
Каскадирование дешифраторов
Когда выходов одного корпуса не хватает, дешифраторы объединяют. Для получения схемы из двух корпусов старший разряд можно использовать для разрешения одного из двух дешифраторов. При работает нижний блок, при — верхний.
Преимущество такого подхода — модульность. Недостаток — суммарная задержка. Если старший разряд сначала проходит через схему разрешения, а затем формируются выходы, время установления сигнала увеличивается. Это уже влияет на согласование с памятью, регистрами и стробирующими сигналами.
Шифратор и проблема неоднозначных входов
Шифратор выполняет обратное преобразование: если активна одна входная линия из , на выходе появляется её двоичный номер длиной бит. Для шифратора входы обозначим как , а выходы — , , .
Если активен только , то на выходе должен появиться код 101. Отсюда логические выражения для обычного шифратора:
- - -
Здесь знак означает логическое ИЛИ, а не арифметическое сложение. Например, если активен только , то , , , то есть код 110.
Но тут появляется фундаментальное ограничение: обычный шифратор корректно работает только при одном активном входе. Если одновременно активны и , выходной код становится неоднозначным и обычно не соответствует ни одному реальному номеру. В системах с кнопками, линиями запросов и асинхронными источниками это недопустимо.
Поэтому в практической цифровой технике используют в основном приоритетные шифраторы. У них заранее задан порядок важности входов. Если одновременно активны несколько линий, на выход передаётся код старшей по приоритету.
Возьмём входы как старший приоритет и как младший. Тогда при активных , и на выходе будет код 110, потому что выбран . Дополнительно часто формируются сигналы:
> Приоритетный шифратор — это уже не просто «обратный дешифратор», а узел арбитража, который разрешает конфликт нескольких запросов.
Типовой представитель — 74LS148, приоритетный шифратор с активными низкими входами и выходами. Его часто используют в системах прерываний: несколько устройств подают запросы, а схема выдаёт код наиболее приоритетного.
Пошаговый синтез дешифратора по таблице
Пусть требуется синтезировать узел, который по входам , , активирует выходы согласно стандартной функции . Это простой пример, но он хорошо показывает общий метод.
Шаг 1. Задаём соответствие кода и выхода
Каждой комбинации входов сопоставляется один выход:
Это кажется тривиальным, но именно здесь фиксируются порядок разрядов и соглашение, какой вход старший. Ошибка в старшинстве даст полностью рабочую, но логически неверную схему.
Шаг 2. Выписываем минтермы
Для каждого выхода записываем набор переменных с инверсией там, где в коде стоит 0:
- - - - - - - -
Для входа 110, например, получаем , , , поэтому . Эта запись не требует минимизации: каждый выход уже минимален в рамках своей функции.
Шаг 3. Учитываем разрешение
Если добавлен вход активного высокого уровня, каждое уравнение умножается на :
- -
Теперь при любой выход равен 0. Это типично для выбора узла только в нужный момент машинного цикла.
Шаг 4. Переходим к реальной элементной базе
Если доступны элементы И, НЕ и ИЛИ, схема строится напрямую. Если база ограничена, например только NAND, уравнения преобразуют по законам де Моргана. В ТТЛ-сериях это обычная практика, потому что NAND часто технологически выгоднее.
Шаг 5. Проверяем временное поведение
Формально дешифратор не имеет памяти, но его выходы не меняются мгновенно. При переключении входов может возникнуть кратковременный ложный импульс из-за разных задержек инверторов и элементов И. Если выход дешифратора управляет чувствительным входом записи, такой импульс способен вызвать ошибку.
!Временная работа дешифратора при смене адреса
Временные диаграммы и ложные срабатывания
Переход от кода 011 к 100 особенно показателен: одновременно меняются все три входа. В идеальной булевой модели активный выход просто переносится с на . В реальной схеме один вход может переключиться за 8 нс, другой за 12 нс, третий за 15 нс. В промежутке кратко возникают комбинации 111, 110, 010 или другие.
Отсюда два типичных эффекта:
Если дешифратор используется для адресации памяти, эти всплески часто безопасны, когда чтение/запись стробируются позже. Но если его выход напрямую открывает защёлку, формирует импульс запуска или переключает источник на шину, риск уже реальный.
Практические способы снижения проблемы:
По данным типовых справочников по ТТЛ-сериям, задержки для LS-логики обычно лежат в диапазоне единиц и десятков наносекунд, и этого достаточно, чтобы на осциллограмме увидеть короткие паразитные интервалы. На макетной плате студент часто не замечает их светодиодом, но логический анализатор показывает проблему сразу.
Маркировка и типовые серии
Для проектирования мало знать функцию; нужно понимать, что скрыто в обозначении корпуса. В отечественной и зарубежной практике маркировка различается, но логика чтения похожа: серия, технология, номер функционального узла, иногда температурное исполнение.
Часто встречаются такие позиции:
| Обозначение | Назначение | Комментарий | |---|---|---| | 74LS138 | дешифратор 3-в-8 | активные низкие выходы, 3 входа разрешения | | 74HC138 | дешифратор 3-в-8 | CMOS-вариант, иные электрические параметры | | 74LS148 | приоритетный шифратор 8-в-3 | активные низкие входы и выходы | | К555ИД7 | отечественный дешифратор | функционально близок ТТЛ-аналогам серии 74 | | К555ИВ1 | отечественный шифратор/приоритетный узел | зависит от конкретного справочника и исполнения |
С сериями важно не перепутать логическую функцию и электрическое семейство. Например, LS и HC могут реализовывать одинаковую таблицу истинности, но иметь разные токи входов, допустимые уровни и энергопотребление. Это особенно критично при смешивании ТТЛ и CMOS в одной схеме.
Отдельная ловушка — кружок инверсии на схеме и черта над сигналом в документации. Если вход обозначен как , это означает активный ноль. Если студент читает такой вход как обычный активный высокий сигнал, вся логика управления переворачивается.
Где именно применяют эти узлы
Дешифраторы чаще всего встречаются в таких задачах:
Шифраторы и приоритетные шифраторы типичны для других задач:
Реальный пример — контроллер прерываний в микропроцессорной системе. Несколько устройств одновременно требуют обслуживания: таймер, UART, АЦП. Приоритетный шифратор или совместимый с ним узел формирует код наиболее важного запроса, а процессор получает не «россыпь линий», а компактный адрес источника.
Если из этой главы запомнить три вещи — это: дешифратор разворачивает код в минтермы, обычный шифратор требует единственного активного входа, а практическая схема почти всегда приоритетная, и временные задержки вместе с активными уровнями важны не меньше, чем таблица истинности. На чертеже всё выглядит бинарно и чисто, но в реальной схеме решают именно инверсии, разрешающие входы и наносекунды переключения. Хорошее проектирование начинается там, где булева алгебра уже переведена в поведение конкретной микросхемы.