- Основной принцип кодировщика:
- Создание кодеров с использованием комбинационных логических схем
- Кодеры 8: 3:
- Недостаток обычных энкодеров:
- Кодировщик приоритета:
Кодеры, как следует из названия, кодируют больший бит информации в меньшее битовое значение. Существует множество типов энкодеров в зависимости от количества входов и выходов и от того, как они работают. Но у каждого кодировщика есть одно основное правило: количество выходных строк на кодировщике всегда будет меньше количества входных строк. В этой статье мы узнаем больше о кодировщиках, что такое кодировщик, как и почему они используются в цифровых схемах.
Основной принцип кодировщика:
Давайте представим кодировщик как черный ящик, как показано ниже, который волшебным образом уменьшает количество входных строк с 4 до 2 выходных строк, но при этом предоставляет ту же информацию без потери данных.
Сначала давайте определим, как будет называться этот кодировщик. Он имеет четыре входа и два выхода, поэтому имя этого кодировщика будет 4: 2 Encoder. Если кодировщик имеет « n » выходных строк, то количество входных строк будет равно 2. n, в нашем случае количество выходных строк равно двум (n = 2), следовательно, количество входных строк должно быть (2 2 = 4) четырьмя, что в точности так. Четыре входных контакта обозначены от I0 до I3, а два выходных контакта - от O0 до O1.
Итак, как кодировщик преобразовывает четыре сигнала в два, это можно понять, взглянув на приведенную ниже таблицу истинности. Также важно знать, что обычный кодировщик, подобный показанному здесь, имеет правило, согласно которому в данный момент только один входной вывод должен иметь высокий уровень, поэтому в следующей таблице истинности только один вход будет высоким.
Все возможные условия входа и выхода показаны в приведенной выше таблице истинности. Например, когда только O1 имеет высокий уровень (1), а все остальные входы имеют низкий уровень (0), тогда на обоих выходных контактах будет низкий уровень (0). Аналогично для каждого случая выходные контакты также изменят свой статус. Используя этот статус выходных битов, пользователь сможет отследить, какой входной сигнал был бы подан на энкодер.
Хорошо, что такого особенного в преобразовании 4 строк в 2 строки, зачем нам это вообще нужно?
Для понимания мы объяснили кодировщик 4: 2, но есть другие кодировщики, которые могут принимать большее количество входов и преобразовывать их в меньшее количество выходов, например, кодер 8: 3, кодер 16: 4 и т. Д. Эти типы кодировщика очень полезны, когда нам нужно уменьшить количество выводов, используемых на MCU / MPU, или уменьшить количество проводов, несущих сигнал в ПЛК и других системах, где есть массив переключателей или светодиодов. Он также используется для эффективной передачи данных с использованием меньших проводов. В некоторых приложениях может возникнуть ситуация, когда более чем один вход может иметь высокий уровень (1), в этом случае мы будем использовать что-то, называемое Priority Encoder, которое мы обсудим далее в этой статье.
Создание кодеров с использованием комбинационных логических схем
Теперь, когда мы знаем, как работает кодировщик и где он используется. Давайте узнаем, как построить его с помощью простых логических вентилей. Хотя энкодеры типа 8: 3 доступны в виде аккуратной единой ИС, такой как SN74LS148, важно знать, как они построены, чтобы мы могли создавать собственные кодеры для наших проектов на основе требуемой таблицы истинности.
Логическое выражение:
Первым при разработке устройства Комбинационной логики является поиск логического выражения для таблицы истинности. Это очень легко и может быть легко определено, просто взглянув на таблицу истинности. Та же таблица истинности, которую мы видели ранее, приведена ниже с некоторыми иллюстрациями, чтобы вы лучше поняли.
Количество выражений будет равно количеству выходных строк, здесь у нас есть два выхода и, следовательно, у нас есть два выражения. Для первого выхода O0 просто проверьте, при каком условии он высокий (1), и проследите соответствующий номер входного контакта, который также остается высоким (1). Точно так же для всех высоких значений O0 отметьте, какой номер входного контакта высокий, и добавьте контакты. Входные контакты, соответствующие выходному контакту O0, выделены красным выше, а для O1 - синим. Таким образом, выражение для O0 и O1 будет
O 1 = I 3 + I 2 O 0 = I 3 + I 1
Принципиальная схема энкодера 4: 2:
Как только мы получим логическое выражение, нам просто нужно нарисовать его в виде ворот. Здесь, поскольку у нас есть операция сложения (+), мы будем использовать логические элементы ИЛИ для построения наших схем. Вы также можете упростить или изменить логическое выражение в соответствии с вашими потребностями. Принципиальная схема для приведенного выше выражения показана ниже.
Схема может быть легко построена с использованием ИС 7432 ИЛИ. Я построил свою схему кодировщика на макете, как показано ниже.
Четыре входные линии (I0, I1, I2 и I3) обеспечиваются четырьмя кнопками, когда кнопка нажата, она связывает + 5 В с контактом, что делает его логическим 1, а когда кнопка не нажата, контакт удерживается на земле. через понижающий резистор 10 кОм, чтобы сделать его логическим нулем. Выходы (O0 и O1) представлены парой красных светодиодов. Если светодиод светится, это означает, что логика выхода равна 1, а если они выключены, то это означает, что логика выхода 0. Полная работа схемы энкодера показана на видео ниже.
Как вы можете видеть, при нажатии первой кнопки вход I0 становится высоким, и, следовательно, оба выхода остаются низкими. При нажатии второй кнопки включается вход I1, и, таким образом, один светодиод загорается, указывая на высокий уровень O0. Наконец, когда нажата четвертая кнопка, вход I3 становится высоким, и, таким образом, оба светодиода становятся высокими. Это очень простая схема, поэтому мы легко построили ее на макетной плате, но для практических энкодеров схема станет немного сложнее. Однако кодеры также доступны в виде пакетов IC, которые можно приобрести, если они подходят для вашего проекта.
Кодеры 8: 3:
Работа и использование кодировщика 8: 3 также аналогична кодировщику 4: 2, за исключением количества входных и выходных контактов. Кодер 8: 3 также называется восьмерично-двоичным кодировщиком. Блок-схема кодировщика 8: 3 показана ниже.
Здесь энкодер имеет 8 входов и 3 выхода, опять же, только один вход должен иметь высокий уровень (1) в любой момент времени. Поскольку имеется 8 входов, он называется восьмеричным входом, а поскольку имеется три выхода, он также называется двоичным выходом. Таблица истинности кодировщика показана ниже.
Таблица истинности кодировщика 8: 3:
Логическое выражение:
Поскольку у нас есть три вывода, у нас будет три выражения, как показано ниже
O 2 = I 7 + I 6 + I 5 + I 4 O 1 = I 7 + I 6 + I 3 + I 2 O 0 = I 7 + I 5 + I 3 + I 1
Принципиальная схема кодировщика 8: 3:
После получения логического выражения, как всегда, мы можем построить диаграмму цепи, используя логические элементы ИЛИ, как показано ниже.
Схема использует ИС логического элемента ИЛИ с 4 входами, вы также можете упростить логическое выражение, чтобы использовать другие обычные ИС с двумя входами.
Недостаток обычных энкодеров:
Эти типы кодеров страдают следующими основными недостатками.
- Когда ни один из входов не является высоким, Выходные данные будут равны нулю, но это условие также противоречит высокому уровню первого бита (MSB). Следовательно, всегда следует следить за тем, чтобы хотя бы один бит всегда оставался включенным.
- Когда более чем один вход имеет высокий уровень, выход будет свернут и может дать результат для любого из входов, что приведет к путанице.
Чтобы преодолеть эти трудности, мы используем другой тип кодировщика, называемый Priority Encoder, который использует дополнительный выход, чтобы определить, является ли выход действительным, и когда более чем один вход имеет высокий уровень, считается только тот, который становится высоким, начиная с LSD, в то время как игнорируя другие входы.
Кодировщик приоритета:
Давайте проанализируем кодировщик приоритета 4: 2 в качестве примера, чтобы понять, чем он отличается от обычного кодировщика и может преодолеть два вышеупомянутых недостатка. Блок-схема кодировщика с приоритетом 4: 2 показана ниже.
Энкодер с приоритетом 4: 2 также имеет 4 входа и 2 выхода, но мы добавим еще один выход с именем V, что означает действительный бит. Этот действительный бит будет проверять, все ли четыре входных контакта имеют низкий уровень (0), если низкий, бит также станет низким, заявив, что выходной сигнал недействителен, поэтому мы можем преодолеть первый недостаток, упомянутый выше.
Таблица истинности приоритетного кодировщика 4: 2:
Следующего недостатка можно избежать, отдав приоритет битам MSB, кодировщик будет проверять по MSB, и как только он обнаружит первый бит с таким высоким значением (1), он сгенерирует соответствующий вывод. Поэтому не имеет значения, высокие или низкие другие контакты. Следовательно, в приведенной ниже таблице истинности после достижения 1 значения безразличия представлены знаком «X».
Логическое выражение:
Теперь нам нужно вывести три выражения, предназначенные для O0, O1 и V. Поскольку в таблице истинности есть элементы безразличия, мы должны использовать метод K-map, чтобы получить для этого логическое выражение. Мы не собираемся рассказывать, как решать с помощью K-карт, поскольку это выходит за рамки данной статьи. Но карта показана ниже, чтобы вы могли вмешиваться и учиться сами.
На приведенных выше картах левый - для O1, а правый - для O0. Строки вывода обозначаются y, а строки ввода - x. Таким образом, составив уравнение соответствующим образом, мы получим следующее.
O 1 = I 3 + I 2 O 0 = I 2 I 1 '+ I 3
Точно так же для действительного бита «V» логическое выражение может быть задано как
V = I 3 + I 2 + I 1 + I 0
Принципиальная электрическая схема:
Принципиальная схема для этого проекта может быть построена с использованием логических выражений.
Схема может быть построена с использованием основных вентилей НЕ, И и ИЛИ. Здесь биты O0 и O1 считаются выходами, а бит V используется для проверки выходных данных. Только если бит V высокий, выход будет рассматриваться, если значение V низкое (0), выход следует игнорировать, поскольку это означает, что все входные контакты равны нулю.