Декодер — это тип комбинационной схемы, которая декодирует небольшое битовое значение в большое битовое значение. Обычно он используется в сочетании с кодировщиками, которые действуют прямо противоположно тому, что делает декодер, поэтому прочитайте здесь о кодировщиках, прежде чем переходить к декодерам. Опять же, как и в случае с кодировщиками, существует множество типов декодеров, но количество выходных строк в декодере всегда будет больше, чем количество входных строк. В этом уроке мы узнаем, как работает декодер и как его создать для нашего проекта.
Основной принцип декодера
Как говорилось ранее, декодер — это всего лишь противоположная часть кодировщика. Он принимает определенное количество двоичных значений в качестве входных данных и затем декодирует их в большее количество строк, используя свою внутреннюю логику. Ниже показан пример декодера, который принимает на вход 2 строки и преобразует их в 4 строки.
Еще одно практическое правило декодеров заключается в том, что если количество входов считается n (здесь n = 2), то количество выходов всегда будет равно 2 n (2 2 = 4), что в нашем случае равно четырем. Декодер имеет 2 входные линии и 4 выходные линии; следовательно, этот тип декодера называется декодером 2:4. Два входных контакта называются I1 и I0, а четыре выходных контакта имеют имена от O0 до O3, как показано на представленном рисунке.
Также важно знать, что обычный декодер, подобный показанному здесь, имеет недостаток: он не может различать состояние, когда оба входа равны нулю (не подключены к другим схемам) и оба входа имеют низкий уровень (логический 0). Этот недостаток можно решить с помощью приоритетного декодера, о котором мы узнаем позже в этой статье. Таблица истинности обычного декодера имеет вид:
Из таблицы истинности декодера мы можем написать логическое выражение для каждой строки вывода, просто следуя за тем, где выходной сигнал становится высоким, и формируя логику И на основе значений I1 и I0. Он очень похож на метод, который мы использовали для бинарных кодеров, но здесь мы используем логику И вместо логики ИЛИ. Ниже приведены логические выражения для всех четырех строк, где символ (.) представляет логику И, а символ (') представляет логику НЕ.
Теперь, когда у нас есть все четыре выражения, мы можем преобразовать эти выражения в схему комбинационного логического элемента, используя элементы И и НЕ. Просто используйте логические элементы И вместо (.) и логический элемент НЕ (инвертированная логика) вместо ('), и вы получите следующую логическую диаграмму.
Построим принципиальную схему декодера 2:4 на макетной плате и проверим как она работает в реальной жизни. Для ее сборки вам необходимо использовать микросхему логического вентиля, например 7404 для вентиля НЕ и 7408 для вентиля И. Два входа I0 и I1 подаются через кнопку, а выходной сигнал наблюдается через светодиодные индикаторы. Как только вы выполните подключение на макетной плате, оно будет выглядеть примерно так, как показано на рисунке ниже.
Макетная плата питается от внешнего источника +5 В, который, в свою очередь, питает микросхему затвора через контакты Vcc (контакт 14) и землю (контакт 7). Входной сигнал подается с помощью кнопок, когда кнопка нажата, это логическая 1, а когда не нажата - это логический 0. Понижающий резистор номиналом 1 кОм также добавляется вдоль входных линий, чтобы предотвратить плавающее состояние контактов. Выходные линии (от O0 до O3) подаются на красные светодиоды, если они светятся, это логическая 1, иначе это логический 0. Более подробно работу этой схемы вы можете посмотреть в следующем видео.
Обратите внимание, что таблица истинности для каждого входа отображается в верхнем левом углу, а светодиод также светится одинаково. Точно так же мы можем создать комбинационную логическую схему для всех типов декодеров и построить их на подобных элементов. Вы также можете изучить доступные микросхемы декодеров, если ваш проект подходит для них.
Недостатки стандартных декодеров
Как и энкодер, стандартный декодер также страдает от подобной проблемы: если оба входа не подключены (логический X), выход не будет оставаться нулевым. Вместо этого декодер будет рассматривать его как логический 0, и бит O0 будет установлен на высокий уровень.
Приоритетный декодер
Поэтому мы используем приоритетный декодер, чтобы решить эту проблему. Этот тип декодера имеет дополнительный входной контакт, обозначенный как «E» (включение), который будет соединен с действительным контактом приоритетного декодера. Блок-схема приоритетного декодера показана на следующем рисунке.
Таблица истинности для приоритетного декодера показана ниже: в ней X означает отсутствие соединения, «1» представляет высокий логический уровень, а «0» представляет низкий логический уровень. Обратите внимание, что бит разрешения равен 0, когда на входных линиях нет соединения, и, следовательно, выходные линии также останутся нулевыми. Таким образом, мы сможем преодолеть вышеупомянутый недостаток обычного декодера.
Как всегда, из таблицы истинности мы можем вывести логические выражения для выходных строк от O0 до O3 - они показаны ниже. Если вы присмотритесь повнимательнее, вы заметите, что эти выражения такие же, как и в обычном декодере 2:4, но бит включения (E) входит в них с логической операцией И.
Комбинационная логическая схема для приведенного выше логического выражения может быть построена с использованием пары инверторов (НЕ-вентилей) и 3-входовых вентилей И. Просто замените символ (') на инверторы и символ (.) на логический элемент И, и вы получите логическую диаграмму для приоритетного декодера.
Декодеры 3:8
Существуют также декодеры более высокого порядка, такие как декодер 3:8 и декодер 4:16, который используется чаще всего на практике. Эти декодеры часто используются в корпусах микросхем в зависимости от сложности схемы. Также очень распространено объединение декодеров более низкого порядка, таких как декодеры 2:4, для формирования декодера более высокого порядка. Например, мы знаем, что декодер 2:4 имеет 2 входа (I0 и I1) и 4 выхода (от O0 до O3), а декодер 3:8 имеет три входа (от I0 до I2) и восемь выходов (от O0 до O7). Мы можем использовать следующие формулы для расчета количества декодеров более низкого порядка (2:4), необходимых для формирования декодера более высокого порядка, такого как декодер 3:8.
1 2 3 4 |
Требуемое количество декодеров низшего порядка = m2 / m1 Где m2 -> количество выходов для декодера низшего порядка m1 -> количество выходов для декодера более высокого порядка |
В нашем случае значение m1 будет равно 4, а значение m2 — 8, поэтому, применяя эти значения в приведенных выше формулах, мы получаем
1 |
Необходимое количество декодеров 2:4 для декодера 3:8 = 8/4 = 2 |
Теперь мы знаем, что нам понадобятся два декодера 2:4, чтобы сформировать декодер 3:8, но как их следует соединить, чтобы собрать их? Это показано на следующей блок-схеме.
Как вы можете видеть, входы A0 и A1 подключены как параллельные входы для обоих декодеров, а затем вывод включения первого декодера используется как A2 (третий вход). Инвертированный сигнал A2 подается на контакт включения второго декодера для получения выходных сигналов от Y0 до Y3. Здесь выходы от Y0 до Y3 называются четырьмя нижними минтермами, а выходы от Y4 до Y7 называются четырьмя старшими минтермами. Минтермы низшего порядка получаются из второго декодера, а минтермы более высокого порядка получаются из первого декодера. Хотя одним заметным недостатком этого типа комбинационной конструкции является то, что у декодера нет контакта включения, что делает его восприимчивым к проблемам, которые мы обсуждали ранее.
4:16 Декодер
Подобно декодеру 3:8, декодер 4:16 также может быть создан путем объединения двух декодеров 3:8. Для декодера 4:16 у нас будет четыре входа (от A0 до A3) и шестнадцать выходов (от Y0 до Y15). Тогда как для декодера 3:8 у нас будет только три входа (от A0 до A2).
Мы уже использовали формулы для расчета количества требуемых декодеров. В этом случае значение m1 будет равно 8, поскольку декодер 3:8 имеет 8 выходов, а значение m2 будет равно 16, поскольку декодер 4:16 имеет 16 выходов. поэтому, применяя эти значения в приведенных выше формулах, мы получаем
1 |
Необходимое количество декодеров 3:8 для декодера 4:16 = 16/8= 2 |
Поэтому для построения декодера 4:16 нам потребуются два декодера 3:8. Расположение этих двух декодеров 3:8 также будет аналогично тому, которое мы делали ранее. Блок-схема соединения этих двух декодеров 3:8 показана на следующем рисунке.
Здесь выходные данные от Y0 до Y7 считаются младшими восемью минтермами, а выходные данные от Y8 до Y16 считаются старшими восемью минтермами. Нижние правые минтермы создаются напрямую с использованием входных данных A0, A1 и A2. Те же сигналы подаются на три входа первого декодера, но контакт включения первого декодера используется в качестве четвертого входного контакта (A3). Инвертированный сигнал четвертого входа А3 подается на вывод включения второго декодера. Первый декодер выводит старшее значение из восьми минтермов.
Применения декодеров
Декодер обычно используется в сочетании с кодером, и, следовательно, они оба используют одни и те же приложения (применения). Без декодеров и кодировщиков современная электроника, такая как мобильные телефоны и ноутбуки, была бы невозможна. Ниже перечислены некоторые важные применения декодеров:
- формирование сигнала состоящего из последовательности элементов;
- в устройствах синхронизации;
- сетевые линии;
- элементы памяти;
- телефонные сети.