джуниор
приборы
75
0
15 июля 2024
джуниор
приборы

Комбинационная логика: дешифраторы и мультиплексоры

75
0
15 июля 2024

Сами по себе изученные в предыдущих статьях вентили не имеют особенного значения. Гораздо интереснее составлять из них устройства, выполняющие полезные и осмысленные задачи. И некоторые из них мы изучим в этом материале курса по схемотехнике. Так как в схемах, собранных на основе логических элементов, состояние выхода зависит исключительно от комбинации значений на входе, то их называют комбинационными.

Из статьи вы узнаете
  • почему шифраторы и дешифраторы никак не связаны с передачей секретных данных
  • как отобразить десятичное число на светодиодном индикаторе
  • какие задачи выполняют мультиплексоры и демультиплексоры
  • зачем нужны конденсаторы

Шифраторы и дешифраторы без секретов

Примерами распространенных схем комбинационной логики являются шифраторы и дешифраторы. Но их названия не значат, что мы будем изучать что-то секретное и разгадывать криптограммы. Задача таких схем — преобразование чисел из одной системы счисления в другую.

Представьте клавиатуру домофона. На ней десять кнопок, каждая подписана числом от 0 до 9. Допустим, вы хотите закодировать номера клавиш двоичными числами, с которыми цифровым электронным компонентам будет удобно работать. Может показаться, что для этого нужно преобразовать десятичный код в двоичный. Однако в домофонном замке нет единого провода, по которому сигнал от всех кнопок передавался бы десятью разными способами. Вместо него — десять отдельных проводов, и каждому передается сигнал о том, нажата конкретная кнопка или нет. Не очень-то похоже на двоичный код.

Здесь мы имеем дело с кодом, который называют унитарным. Это любой код, где у каждой кнопки или иного устройства свой отдельный провод, и в любой момент времени допускается активный логический уровень только на одном проводе из набора. На одном, потому что мы нажимаем кнопки на домофоне по очереди. Значит, для решения нашей задачи понадобится преобразователь унитарного кода в двоичный. Устройство, которое переводит число из более массивного кода в более компактный, получило название шифратор. А обратное преобразование выполняется дешифраторами. Безо всяких секретов!

Кстати, существует не только уже знакомый вам двоичный код. В следующем разделе статьи вы познакомитесь с кодом семисегментного индикатора. Кроме него существуют несколько способов представления отрицательных двоичных чисел. И даже это еще не все: ученые придумали и другие коды, которые работают с двоичными представлениями чисел, но кодируются иначе. У каждого кода — свои преимущества в определенных областях техники, но в конце концов их все нужно привести к «стандартному» двоичному для обработки в компьютере. Так что без шифраторов и дешифраторов не обойтись.

Как мы уже говорили, выполнить обратное преобразование двоичного кода в унитарный помогают дешифраторы. В микроэлектронике их чаще всего используют в устройствах памяти, которые имеют матрицу запоминающих ячеек. Такие ячейки образуют строки и столбцы, как в обычной таблице. Строки матрицы называют словами или регистрами. Их длину измеряют в битах.

Так, матрица 512×32 содержит 512 слов по 32 бита каждое. Если мы захотим прочитать содержимое того или иного слова или записать в него новые данные, нужно будет подать на вход памяти нужный номер строки. Номера строк кодируются 9-битным двоичным числом. А при обращении к конкретному слову необходимо подать соответствующий сигнал выборки только на него. Без преобразования двоичного номера строки в унитарный здесь не обойтись. Сделать это поможет дешифратор 9-в-512.

Собрать такое сложное устройство на макетной плате у нас не получится. Но для изучения принципов работы дешифраторов это и не обязательно. Будет достаточно рассмотреть гораздо более простую схему.

Начнем с незамысловатого варианта: дешифратора 1-в-2. Его таблица истинности выглядит следующим образом:

Таблица истинности дешифратора 1-в-2
Таблица истинности дешифратора 1-в-2

По таблице видно, что выходной сигнал Y1 — это инверсия сигнала A, а выход Y2 = A. Выходит, для построения такого дешифратора нам достаточно поставить в схему всего один инвертор:

Схема дешифратора 1-в-2
Схема дешифратора 1-в-2

Давайте немного усложним задачу и создадим дешифратор 2-в-4. Работу снова начнем с составления таблицы истинности. Итак, в нашем новом дешифраторе будет:

  • два входа, кодирующих номер строки: A0 и A1,
  • четыре выхода: Y0, Y1, Y2, Y3.

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

Таблица истинности дешифратора 2-в-4
Таблица истинности дешифратора 2-в-4

Посмотрев на таблицу, можно составить логические функции для выходных сигналов дешифратора 2-в-4:

Y0=\overline{A1}\times\overline{A0},
Y1=\overline{A1}\times A0,
Y2=A1\times\overline{A0},
Y3=A1\times A0.

Реализующая дешифратор схема в соответствии с логическими выражениями для его выходов будет содержит вентили 2И и инверторы.

Схема дешифратора 2-в-4
Принципиальная схема дешифратора 2-в-4
Проверьте себя!
1. Создайте на макетной плате дешифратор 2-в-4 в соответствии со схемой выше. Подсказка: собрать его 2-в-4 легче всего на микросхемах CD4081BE (четыре вентиля 2И в одном корпусе) и CD4069UBE (шесть инверторов в одном корпусе).

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

Правда, у получившийся схемы есть недостаток. Из-за того, что входах A1 и A2 всегда есть определенное состояние, один из выходов Y0, Y1, Y2 или Y3 всегда будет активным. Чаще всего в электронике это неправильная ситуация. А в самом распространенном месте использования дешифраторов — разнообразных устройствах памяти — так точно делать нельзя. Иначе мы рискуем случайно перезаписать информацию, которая хранится в слове, чей номер выставлен дешифратором. Так можно потерять данные, а это не дело.

Чтобы исправить ситуацию, нам нужно дополнить схему дешифратора специальным входным сигналом. Он будет разрешать или запрещать активацию входов. Такой сигнал называется разрешением выхода, сокращенно OE от английского output enable. В зависимости от требований конкретной цифровой системы он может быть активен как по уровню нуля, так и по уровню единицы. Выберем для нашего дешифратора условие, что выходы активны при OE = 0.

Конечно, таблица истинности дешифратора после добавления разрешения выхода изменится. Когда сигнал равен нулю, то состояние входов A1 и A2 неважно, ведь они неактивны. Обозначим эти ситуации латинской буквой X. В результате в нашей таблице дешифратора 2-в-4 с разрешением выходов останется всего 5 строк: первая описывает сразу 4 варианта входных сигналов.

Таблица истинности дешифратора 2-в-4 с разрешением выходов
Таблица истинности дешифратора 2-в-4 с разрешением выходов

Логические функции выходов становятся чуть сложнее:

Y0=OE\times\overline{A1}\times\overline{A0},
Y1=OE\times\overline{A1}\times A0,
Y2=OE\times A1\times\overline{A0},
Y3=OE\times A1 \times A0.
Проверьте себя!
2. Составьте принципиальную схему дешифратора 2-в-4 с разрешением выходов. Подсказка: в основе лежит наш исходный дешифратор 2-в-4, только теперь его выходы должны принудительно устанавливаться в логический 0 с помощью нового сигнала OE.

В серии CD4000BE есть две микросхемы дешифраторов 2-в-4: CD4555BE и CD4556BE. У обеих активный уровень сигнала разрешения выхода OE = 0, прямо как в нашей таблице истинности. Каждая микросхема содержит по два дешифратора:

  • У первой выбранный выход находится в высоком уровне, а остальные — в низком.
  • У второй на активном выходе будет логический ноль, а на остальных — единицы.

Так что инженер может выбирать микросхему в зависимости от решаемой задачи. А если понадобится изменить значение активного уровня сигнала разрешения с низкого на высокий, то достаточно поставить перед входом OE уже знакомый нам инвертор.

Индикатор на основе схемы дешифратора

Вернемся к необычным кодам и рассмотрим самый часто встречающийся из них. Есть отдельный вид дешифраторов, которые используют для отображения цифр на семисегментных индикаторах. Наверняка вы видели подобные индикаторы в жизни — например, в настольных электронных часах или на вывесках банковских обменников. Каждая цифра от 0 до 9 отображается на них с помощью включения или выключения подсветки от двух до семи полос. Каждая такая полоса называется сегментом.

Отображение цифр на семисегментном индикаторе
Отображение цифр от 0 до 9 на семисегментном индикаторе

Это несложный и удобный способ показывать числа. Отсюда и широкое распространение семисегментных индикаторов: они бывают разных размеров, форм и цветов. Конечно, для индикаторов существуют микросхемы дешифраторов, иначе приходилось бы каждый раз строить одну и ту же схему из логических элементов. Нам будет полезно рассмотреть устройство такой микросхемы и понять ее работу.

Итак, у индикатора семь сегментов. Они обозначаются латинскими буквами от a до g.

Обозначение сегментов  семисегментного индикатора
Обозначение сегментов индикатора. Источник

В одной из прошлых статей вы узнали, что для передачи десяти цифр в двоичном коде требуется 4 двоичных разряда. Например, число 9 в двоичной системе — это 1001. Обозначим разряды от A0 (младший разряд) до A3 (старший разряд). Напомню, что байты читаются справа налево, то есть младший разряд — это самый правый, а старший — самый левый.

Дальше нам нужно соотнести двоичные коды цифр от 0 до 9 и их изображения с зажженными или погашенными сегментами индикатора. В качестве подсказки используем цветное изображение выше. Активные сегменты будем обозначать единицами, а остальные — нулями. Получится вот такая таблица истинности для семисегментного индикатора:

Таблица истинности для семисегментного индикатора
Таблица истинности для семисегментного индикатора

В таблице четыре столбца для ввода двоичного числа и семь столбцов со значениями выходов — по количеству сегментов индикатора. Каждое число от 0 до 9 зажигает от 2 до 7 сегментов. Схема такого дешифратора содержит почти три десятка логических вентилей и может занять целую страницу. Логических функций для выходов будет семь — по числу сегментов. Каждая содержит в себе достаточно длинные выражения.

В качестве примера разберем функцию для сегмента e. Как мы видим из таблицы истинности, она будет равна 1, когда на входы подаются двоичные числа 0000, 0010, 0110 или 1000. В десятичной системе счисления это числа 0, 2, 6 и 8. Функцию можно записать так:

e=\overline{A3}\times\overline{A2}\times\overline{A1}\times\overline{A0}+\overline{A3}\times\overline{A2}\times A1\times\overline{A0}+\overline{A3}\times A2\times A1\times\overline{A0}+A3\times\overline{A2}\times\overline{A1}\times\overline{A0}

Это выражение говорит, что при подаче на входы от A0 до A3 любого из значений, соответствующего десятичным 0, 2, 4 и 8 выход, управляющий сегментом «e» индикатора, будет равен 1. По этой причине четыре слагаемых объединены по ИЛИ, а внутри каждого из них используется И. Например, первое слагаемое будет равно единице только при условии, что все четыре входных разряда (A0, A1, A2, A3) установлены в ноль, что соответствует десятичному числу 0.

Хочется как-то упростить этот длинный «крокодил» формулы. Для начала, как и в обычной алгебре, можно заметить, что инверсное значение входа A0 можно вынести за скобки: оно встречается во всех четырех слагаемых:

e=\overline{A0}\times\left[ \overline{A3}\times\overline{A2}\times\overline{A1}+\overline{A3}\times\overline{A2}\times A1+\overline{A3}\times A2\times A1+A3\times\overline{A2}\times\overline{A1} \right]

Теперь объединим первое и последнее слагаемое в скобках, вынеся за скобки общий множитель. И проделаем то же самое для второго и третьего слагаемых:

e=\overline{A0}\times\left[ \left( \overline{A3}+A3 \right)\times\overline{A2}\times\overline{A1}+\overline{A3}\times A1\times\left( \overline{A2}+A2 \right) \right]

Сложение в круглых скобках прямой переменной со своей инверсией всегда дает 1 независимо от значения переменной. Ведь если она равна 0, то ее инверсия будет равна 1 и 0 + 1 = 1 в двоичной логике. А если она равна 1, то мы получаем тот же результат: 1 + 0 = 1. Поэтому выражение после всех упрощений будет выглядеть так:

e=\overline{A0}\times\left[ \overline{A2}\times\overline{A1}+\overline{A3}\times A1 \right]

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

Поэтому, как мы уже говорили, реализовывать на транзисторах дешифратор семисегментного индикатора на макетной плате мы не будем. Тем более, что в серии CD4000BE для этой типовой задачи все уже давно придумано, а использовать готовые микросхемы гораздо проще. Кроме основного предназначения — преобразования чисел — в них добавляются и другие возможности. В результате получается не просто дешифратор, а драйвер семисегментного индикатора. Слово происходит от английского to drive — управлять.

Одни микросхемы имеют единственный вход для загрузки отображаемого числа, которое задается последовательностью импульсов вместо параллельного четырехбитного кода. В других отображаемая цифра задается числом импульсов на входной счетчик, которые подаются по сигналу разрешения. Но, конечно, в конце концов все выходные сигналы генерируются с помощью схемы дешифратора, подобной рассмотренной нами.

Чтобы получить практический опыт использования семисегментного индикатора, соберем схему на базе драйвера CD4511BE, резисторов сопротивлением 470 Ом и светодиодной матрицы SC56−11. При сборке схем с индикаторами на светодиодах важно учитывать две особенности их конструкции: необходимость ограничивать ток на светодиоды и подключение выводов светодиодов ко входам микросхемы индикатора.

Первая особенность — необходимость ограничивать ток — общая для любых светодиодов. Мы говорили об этом в ролике про такие компоненты: без ограничений тока светодиод просто сгорит. Поэтому входы a, b, c, d, e, f и g обязательно должны подключаться через резисторы. Их сопротивление указывают в документации на микросхему индикатора. Обычно это 470 Ом. Отдельные модели индикаторов на светодиодах имеют еще и вход для десятичной точки — DP, сокращенно от английского decimal point. Она нужна, чтобы отделить целую часть числа от дробной. DP активируется напрямую, без схем дешифрации, однако ее тоже нужно подключать к драйверу через резистор.

Вторая особенность сборки схем с индикаторами на светодиодах заключается в учете того, какие их выводы — аноды или катоды — подключены ко входам микросхемы индикатора. Например, у SC56−11 это аноды. А катоды всех сегментов изначально собраны в пучок и накоротко соединены с минусом питания внутри индикатора. Значит, для «зажигания» нужных сегментов индикатора на их входы должна быть подана единица — высокий логический уровень. Такую микросхему называют схемой с общим катодом. В схеме с общим анодом ситуация ровно противоположная — в пучок собраны аноды, а к входам микросхемы подключены катоды.

Все схемы, которые мы рассматривали, объединяет то, что они не могут хранить информацию о состоянии сигнала в течение времени. При этом в более сложных схемах это свойство необходимо. В следующем материале мы узнаем, как его реализовать.

Кроме известных вам четырех входных сигналов и семи выходных, драйвер CD4511BE содержит еще три вспомогательных: LE, LT и BL.

  • Вход LE активирует режим записи входных данных во внутреннюю память — защелкивание данных. Аббревиатура расшифровывается как latch enable — разрешение защелкивания. Если этот сигнал равен единице, то изменение данных на входе никак не отражается на выходе и показаниях индикатора.
  • Вход LT (lamp test) тестовый, он нужен для зажигания всех сегментов разом и активируется нулем.
  • Вход BL (blanking) гасит все сегменты, если установлен в ноль. С помощью LT и BL проверяют работоспособность индикатора.

В ролике мы соберем на макетной плате такую схему и посмотрим, как она работает. В ней не будет задействован режим защелкивания: вход LE будет подключен к минусу питания, чтобы данные свободно шли от входов драйвера к выходам. Но при желании вы сможете подать на LE единицу и убедиться, что режим активируется как положено.

Схема управления семисегментным индикатором
Схема управления семисегментным индикатором

Мультиплексоры и демультиплексоры — перекрестки для двоичных сигналов

Другое часто применяемые комбинационные устройства — это мультиплексоры и демультиплексоры.

Предположим, что в микропроцессор компьютера для расчетов поступают данные из нескольких источников. Одновременно обработать их все невозможно — нужен порядок и четкая очередность. На автомобильных дорогах разрешение на проезд дает светофор: сначала можно проехать машинам с одной стороны, потом — с другой. Цифровым системам иногда тоже нужен такой управляющий данными, и эту задачу решает мультиплексор. Его условное обозначение на рисунке ниже приведено для случая, когда входов данных всего два: DI0 и DI1, а выход один — DO. Для выбора входа, данные с которого будут передаваться на выход, используется сигнал адреса — А. Его еще называют сигналом выборки.

Условные обозначения мультиплексора
Два варианта условного графического обозначения мультиплексора
Схема двухвходового мультиплексора
Схема двухвходового мультиплексора

Внутри мультиплексор устроен довольно просто. При, А = 0 на выход могут пройти данные только со входа DI0, ведь нижний по схеме вентиль И будет заблокирован. При A = 1 активным становится вход DI1. Увидеть это можно и по таблице истинности мультиплексора ниже. Напомним, что латинская буква X означает «все равно» (в англоязычной документации don’t care). То есть состояние входа в данной ситуации не влияет на состояние выхода.

Таблица истинности мультиплексора
Таблица истинности мультиплексора

Логическая функция мультиплексора может быть по такой таблице записана как:

DO=A\times DI1+\overline{A}\times DI0

Если воспользоваться правилами де Моргана для преобразования логических функций булевой алгебры, о которых шла речь ранее, то двухвходовый мультиплексор можно построить всего лишь на одной микросхеме CD4011BE. Напомним, что в ее состав входят четыре вентиля 2И-НЕ.

Проверьте себя!
3. Составьте схему двухвходового мультиплексора на микросхеме CD4011BE, попробуйте собрать этот вариант на макетной плате и проверить, как он работает.

Вход мультиплексора, выбирающий номер того входа, с которого данные пойдут на выход часто называют адресным входом, поэтому он и обозначен буквой A. Это как по записи разные люди проходят в один кабинет упорядоченно по номеру талончика. Вот этот талончик-адрес на входах, управляющих работой мультиплексора, и говорит, бит с какого входа данных DI0 или DI1 (сокращение от data input) пройдет сейчас дальше на выход данный DO (data output), а какой пока подождет. И талончик «Я только спросить» в такой схеме не предусмотрен!

После того, что мы разобрали, несложно догадаться как устроена схема мультиплексора с четырьмя входами данных. При этом адресных входов должно быть уже 2. По сути такое устройство строится на базе дешифратора, чьи выходы объединяются по И с соответствующими данными, а затем собираются вместе на вентиле 4ИЛИ.

Схема мультиплексора с четырьмя входами
Схема мультиплексора с четырьмя входами

Поскольку два двухвходовых И подряд образуют вентиль 3И, схема может выглядеть проще:

Версия мультиплексора с четырьмя входами
Более простая версия мультиплексора с четырьмя входами

Вы могли догадаться, что демультиплексор выполняет обратную мультиплексору задачу — направляет поток данных сразу в несколько направлений. Результат вычислений, полученный в арифметико-логическом устройстве, в зависимости от цели может быть:

  • записан во внутреннюю память,
  • передан на следующее исполнительное устройство,
  • выдан «наружу» для сохранения на жестком диске.

Выбор в моменте одного направления из всех доступных происходит с помощью сигналов на адресных входах демультиплексора. На схемах он обозначается похоже с мультиплексором.

Варианты условного обозначения демультиплексора с четырьмя выходами
Два варианта условного графического обозначения демультиплексора с четырьмя выходами

Косая черта на проводе адресных входов говорит, что это не один провод, а сразу несколько. И цифра указывает их количество. Такое обозначение применяется не обязательно в демультиплексорах, оно встречается на схемах повсеместно, когда надо уменьшить количество визуального шума на изображении, чтобы схему было проще читать. Можно на графическом обозначении давать адресные входы отдельными проводами, как выходы данных, а можно выходы данных объединить в один провод с косой чертой и цифрой 4 рядом с ней. Это вопрос удобства.

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

Схема демультиплексора с четырьмя выходами
Схема демультиплексора с четырьмя выходами

Демультиплексор такого типа по сути представляет из себя дешифратор с сигналом разрешения входа. Отличие в том, что вместо сигнала разрешения данные, поступившие на вход DI, передаются на тот выход, чей адрес выставлен на адресных входах.

Ответы на вопросы для самопроверки

1. Ответ дан в ролике.

2. Дешифратор 2-в-4 с блокировкой выходов по сигналу OE = 1.

Дешифратор 2-в-4 с блокировкой выходов по сигналу OE = 1

3. Двухвходовый мультиплексор можно построить всего лишь на одной микросхеме CD4011BE из входящих в ее состав четырех вентилей 2И-НЕ.

Двухвходовый мультиплексор на микросхеме CD4011BE
Наверх
Будь первым, кто оставит комментарий