Глава 8 Математическая электроника или игра в квадратики

Зеленые квадратики — это почтительность, а красные— ненависть. Чем больше красных квадратиков, тем больше люди вас боятся, крестьяне лучше работают, а у воинов снижаются боевые качества на 25 %.

fonun.ogl. ru

Разновидностей логических (или цифровых — будем считать, что это синонимы) микросхем, используемых на практике, не так уж и много, и подавляющее большинство из них относится к одной из двух разновидностей — ТТЛ (TTL, Транзисторно-Транзисторная Логика) и КМОП (CMOS, Комплементарные [транзисторы типа] Металл-Окисел-Полупроводник). Различие между ними чисто технологическое, и функционально одноименные элементы из этих серий делают одно и то же и на схемах обозначаются одинаково. С точки же зрения электрических параметров они различаются, хотя и не настолько, чтобы можно было бы заявить об их полной несовместимости.

Транзисторно-транзисторная логика возникла раньше, во второй половине 60-х годов, и стала наследницей диодно-транзисторной логики (ДТЛ) и резисторнотранзисторной логики (РТЛ). Основной родовой признак ТТЛ — использование биполярных транзисторов, причем исключительно структуры n-р-n. КМОП же, как следует из ее названия, основана на полевых транзисторах с изолированным затвором структуры МОП, причем комплементарных, то есть обоих полярностей — и с n- и с p-каналом. Есть и другие цифровые серии, отличающиеся по технологии от этих двух основных, но они либо реализованы исключительно в составе больших интегральных схем (БИС), таких, например, как микросхемы памяти, либо имеют достаточно узкий и специфический диапазон применения, поэтому мы рассматривать их не будем.

ТТЛ-микросхемы мы тоже упомянули исключительно ввиду их еще недавней практической важности, а на практике, за небольшими исключениями, вы будете иметь дело только с КМОП-микросхемами. Все современные микроконтроллеры и другие цифровые микросхемы либо полностью построены на КМОП-технологиях, либо имеют КМОП-совместимые выходы и входы. Базовые серии ТТЛ были существенно более быстродействующими, чем КМОП, но современные микросхемы малой степени интеграции из серий АС (Advanced, т. е. «продвинутая» CMOS) и НС (High-speed, т. е. «высокоскоростная» CMOS) ничуть не уступают по быстродействию микросхемам ТТЛ при сохранении почти всех преимуществ и приятных особенностей КМОП. Которые мы сейчас и разберем.

Базовый логический элемент КМОП

Схемотехника базовых логических элементов КМОП приведена на рис. 8.1. На Западе такие элементы еще называют вентилями — чем можно оправдать такое название, мы увидим далее. Они довольно близки к представлению о том, каким должен быть идеальный логический элемент.

Рис. 8.1. Схемы базовых элементов КМОП

Как можно видеть из рис. 8.1, КМОП-элементы практически симметричны, как по входу, так и по выходу. Открытый полевой транзистор на выходе (либо р-типа для логической 1, либо n-типа для логического 0) фактически представляет собой, как мы знаем из главы 3, просто резистор, величина которого для разных КМОП-элементов может составлять от 100 до 1000 Ом. Причем для дополнительной симметрии и повышения коэффициента усиления на выходе реальных элементов обычно ставят последовательно два инвертора, подобных показанному на рис. 8.1 справа (жалко, что ли транзисторов?). Не мешает даже то, что в нижнем плече для схемы «И-НЕ» стоят два транзистора последовательно (для схемы «ИЛИ-HE» они будут в верхнем плече, поскольку она полностью симметрична схеме «И-НЕ»). Обратите внимание, что выходной каскад инвертора построен не по схеме «пушпульного» каскада, т. е. это не истоковые повторители напряжения, а транзисторы в схеме с общим истоком, соединенные стоками, что позволяет получить дополнительный коэффициент усиления по напряжению.

На практике это приводит к следующим особенностям КМОП-микросхем:

• напряжение логической единицы практически равно напряжению питания, а напряжение логического нуля практически равно потенциалу «земли» (при ненагруженных выходах);

• порог переключения практически равен половине напряжения питания;

• входы в статическом режиме не потребляют тока, т. к. представляют собой изолированные затворы МОП-транзисторов;

• в статическом режиме весь элемент также не потребляет тока от источника питания.

Представляете: схема любой степени сложности, построенная с помощью КМОП-элементов, в «застывшем» состоянии или при малых рабочих частотах (не превышающих десятка-другого килогерц), практически не потребляет энергии! Отсюда ясно, как стали возможными такие фокусы, как наручные часы, которые способны идти от малюсенькой батарейки годами или sleep-режим микроконтроллеров, в котором они потребляют от 1 до 50 мкА (о нем см. главу 17). Другое следствие перечисленных особенностей— исключительная помехоустойчивость, достигающая половины напряжения питания.

Но это еще не все преимущества— КМОП-микросхемы базовой серии (о различных сериях см. далее), подобно многим операционным усилителям, могут работать в диапазоне напряжений питания от 3 до 15 В. Единственное, при снижении питания довольно резко (в разы) падает быстродействие.

Выходные транзисторы КМОП, как и любые другие полевые транзисторы, при перегрузке (например, в режиме короткого замыкания) работают, как источники тока: при напряжении питания 15 В этот ток для КМОП-элементов базовой серии составит около 30 мА, при 5 В — около 5 мА. Нагрузка при сохранении требований к логическим уровням (которые здесь обычно полагается иметь в пределах от 0 В до 0,1 Uпит — логический ноль, и от Uпит до 0,91Uпит — логическая единица) номинально ограничена величиной примерно 1 кОм (т. е. ток порядка 1 мА). Но для некоторых разновидностей (как для выходов микроконтроллеров AVR) допустимый ток значительно выше, и может достигать 20–40 мА. Причем это штатный долгосрочный режим работы таких элементов, единственное, что при этом надо проверить: не превышается ли предельно допустимое значение рассеиваемой мощности для корпуса (0,5–0,7 Вт). В противном случае, возможно, придется ограничить число выходов, одновременно подключенных к низкоомной нагрузке.

Заметки на полях

ТТЛ-микросхемы значительно менее удобны на практике, поскольку для них характерно балансирование десятыми вольта: напряжение логического нуля составляет не более 0,8 В, напряжение порога переключения от 1,2 до 2 В, напряжение логической единицы не менее 2,4 В. Иногда вы и сейчас можете встретить подобные требования к логическим уровням (в целях совместимости). ТТЛ могут работать в довольно узком диапазоне напряжений питания: практически от 4,5 до 5,5 В, а нормы предполагают обычно от 4,75 до 5,25 В, т. е. 5 В ±5 %. Максимально допустимое напряжение питания составляет для разных ТТЛ-серий от 6 до 7 В, при превышении его они обычно «горят ясным пламенем». Низкий и несимметричный относительно питания порог срабатывания элемента приводит и к невысокой помехоустойчивости. Другим крупным (и даже более серьезным, чем остальные) недостатком ТТЛ является высокое потребление (до 2,5 мА на один базовый элемент), так что приходится только удивляться, почему микросхемы ТТЛ, содержащие много таких элементов, не требуют охлаждающего радиатора. По всем этим причинам, даже если вы будете повторять старые схемы на ТТЛ-микросхемах, их рекомендуется заменять на современные АС или НС-элементы КМОП, с которыми они совместимы по выводам.

И тут мы плавно переходим к основному недостатку базовых КМОП-технологий — низкому (в сравнении ТТЛ) быстродействию. Это обусловлено тем, что изолированный затвор МОП-транзистора представляет собой конденсатор довольно большой емкости (в базовом элементе до 10–15 пФ). В совокупности с выходным резистивным сопротивлением предыдущей схемы такой конденсатор образует фильтр нижних частот. Обычно рассматривают не просто частотные свойства, а время задержки распространения сигнала на один логический элемент, которое может достигать у базовой серии КМОП величины 250 не (сравните: у базовой серии ТТЛ — всего 10 нс), что соответствует одному периоду частоты 4 МГц. На практике при напряжении питания 5 В быстродействие базового КМОП не превышает 13 МГц. Попробуйте соорудить на логических элементах генератор прямоугольных сигналов по любой их схем, которые будут разобраны далее, и вы увидите, что уже при частоте 1 МГц форма сигнала будет скорее напоминать синусоиду, чем прямоугольник.

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

Развитие КМОП было, естественно, направлено в сторону устранения или хотя бы сглаживания этих недостатков. Однако, в отличие от ТТЛ, базовый вариант которой, представленный в отечественном варианте сериями 155 и 133, сейчас практически забыт (исключение см., например, главу 19, раздел «Аналоговая индикация»), оригинальная базовая серия 4000В[7] применяется и по сей день — в основном из-за неприхотливости и беспрецедентно широкого диапазона питающих напряжений (от 3 до 18 В), что позволяет без излишних проблем совмещать цифровые и аналоговые узлы в одной схеме.

Отечественные аналоги стандартной серии CD4000B — это «бытовая» серия К561 в корпусе типа DIP, или «военная» 564 в планарном корпусе, аналоге американского SOIC или SOT. Имеется и ряд уже упоминавшихся быстродействующих КМОП-элементов (в первую очередь серии АС и НС). Для быстродействующих серий пришлось пожертвовать расширенным диапазоном питания, например, номинальный диапазон напряжения питания для 74НС начинается, правда, от 2, но простирается всего до 6 В, отсюда и популярность старинной CD4000B. Для быстродействующих КМОП западное название серии (74) и разводка выводов микросхем совпадает со старой базовой ТТЛ (а не с CD4000B), что, безусловно, было продиктовано маркетинговыми соображениями, но сделало базовую серию несовместимой с быстродействующими по выводам. Отечественный аналог называется логичнее— 1561 или 1564, но разводка выводов, увы, в целях совместимости с западными также совпадает с ТТЛ, а не с базовой КМОП. Чтобы не запутаться в зарубежных наименованиях (что там ТТЛ, а что КМОП), можно применять простое правило: если в наименовании серии присутствует буква С (от «комплементарный», кроме НС и АС, есть и просто С), то это КМОП, все остальные многочисленные представители семейства 74 есть ТТЛ-микросхемы.

Подробности

Как мы договаривались в главе 6, префикс «К» в наименовании микросхем мы в дальнейшем будем опускать, но серия 561 в «военном» варианте (без буквы «К») не существует, и перепутать невозможно. «Военный» вариант на Западе называют промышленным — industrial, а «бытовой» — коммерческим — commercial (отсюда буква «К» в отечественном варианте), вместе с тем «у них там» имеется еще отдельно довольно редкий чисто «военный» — military. На практике в розницу попадает из западных, микросхем только вариант commercial (отечественные можно сейчас часто купить и те и другие), industrial нужно специально заказывать. Коммерческие («бытовые») компоненты отличаются в основном тем, что гарантированно работают при температурах от О до 70 °C. Промышленный (industrial) диапазон обычно составляет от -40 до +85 °C (а иногда и значительно шире, транзисторы или микросхемы стабилизаторов питания, скажем, спокойно работают до +125 градусов и выше). Но не следует думать, что микросхема коммерческого диапазона сразу выйдет из строя, если вы ее охладите до -30° или нагреете до 100°. Вовсе нет, т. к. делаются они все обычно на одной линии (кроме каких-нибудь экстремально-космических применений, да и то не всегда), просто производитель не гарантирует, что в расширенном температурном диапазоне данная микросхема сохранит все оговоренные в описании характеристики.

Незадействованные входы элемента КМОП нужно обязательно подключать куда-нибудь — либо к «земле», либо к питанию, либо объединять с соседним входом — иначе наводки на столь высокоомном входе полностью нарушат работу схемы. Причем в целях снижения потребления следует делать это и по отношению к входам незадействованных элементов в том же корпусе (но не вообще ко всем выводам.). «Голый» вход КМОП из-за своей высокоомности может быть также причиной повышенной «смертности» чипов при воздействии статического электричества, однако на практике входы всегда шунтируют диодами, как показано на рис. 6.5.

Основные логические элементы

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

Рис. 8.2. Обозначения основных логических элементов на схемах: вверху — отечественное, внизу — западное

Крайний справа элемент под наименованием «Исключающее ИЛИ» нам еще неизвестен, но скоро мы его будем изучать. В табл. 8.1 приведена разводка выводов микросхем, содержащих логические элементы — она одинакова для всех трех наиболее употребляемых логических типов (напомним, что для серий ТТЛ и быстродействующей КМОП разводка будет другая). Естественно, все элементы из одного корпуса абсолютно идентичны и взаимозаменяемы, поэтому для таких микросхем номера выводов корпуса и расположение выводов питания на схеме обычно не указывают.

Подробности

Мы будем использовать в схемах и простые одновходовые инверторы — это микросхема 561ЛН2, содержащая 6 таких инверторов в одном корпусе DIP-14. Разводка выводов у нее такая (первая цифра — вход, вторая — выход): 1–2, 3–4, 5–6, 9–8, 11–10, 13–12, питание обычное, т. е. «+» к выводу 14, «земля» — к выводу 7. Отметим, что точного импортного аналога этой микросхемы не существует, есть микросхема CD4049 в корпусе DIP-16, у которой разводка несколько другая, идентичная микросхеме, содержащей 6 просто буферных усилителей без инверсии (561ПУ4 или CD4050): питание (внимание!) — к выводу 1, «земля» — к выводу 8, сами же элементы расположены так: 3–2, 5–4, 7–6, 9—10, 11–12, 14–15, выводы 13 и 16 не задействованы (и, напомним, не должны никуда присоединяться!).

Есть, разумеется, и элементы с большим числом входов, пример их использования мы увидим далее. Я не буду приводить здесь разводку выводов других типов логических микросхем, т. к. эти данные всегда можно найти в справочниках, например в [9]. Отдельно следует упомянуть, что многие микросхемы КМОП прекрасно коммутируют аналоговые сигналы, иногда даже специально делается отдельный вывод для подключения отрицательного напряжения питания, чтобы можно было пропускать двуполярное напряжение. Причем пропускание это осуществляется как в направлении от входа к выходу, так и обратно (таковы микросхемы 561КТЗ, КП1 и КП2 или, скажем, специально для этого предназначенные микросхемы серии 590KR*). Указанные микросхемы прекрасно работают также и с цифровыми сигналами, т. е. являются универсальными. Немного подробнее мы их рассмотрим далее.

Другой часто употребляемой разновидностью логических микросхем (в основном, правда, в составе больших интегральных схем, БИС) являются элементы, имеющие выход с открытым коллектором (или с открытым истоком). Такой выход, как мы помним, имеет компаратор 554САЗ (см. главу 6). Есть такие элементы и с чисто логическими функциями: в КМОП-серии это CD40107 (561 ЛАЮ), а в ТТЛ — 7403 (133ЛА7). Как правило, они могут коммутировать значительный ток (до 50 мА, причем интересно, что для схемы с открытым истоком, типа ЛАЮ, нагрузочная способность по току с увеличением напряжения питания растет, а не падает).

Эти элементы удобны не только для коммутации мощной нагрузки, но и для объединения на общей шине в так называемое «проводное» или «монтажное» ИЛИ. В этом случае объединенные коллекторами (истоками) транзисторы разных устройств работают на общую нагрузку. В нормальном состоянии все они разомкнуты и на шине имеется потенциал логической единицы. Любое устройство может перевести шину в состояние логического нуля, замкнув выходной транзистор, при этом состояния всех остальных устройств уже не будут иметь значения (т. н. «захват шины»). Электрических конфликтов на такой шине возникнуть не может, т. к. ток от источника питания всегда ограничен нагрузочным резистором. Примером такой шины может служить интерфейс I2С, который мы будем разбирать в главе 16.

Другой вариант построения выходов современных КМОП-элементов для коллективной работы представляет т. н. выход с третьим состоянием, когда оба транзистора, и по «плюсу» и по «минусу», могут быть разомкнуты. Так построены выходные каскады микроконтроллеров AVR, с которыми мы будем иметь дело в дальнейшем (см. главу 12).

Обработка двоичных сигналов с помощью логических элементов

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

Соответствующие диаграммы показаны на рис. 8.3, а. Из них вытекают следующие правила:

• для элемента «И-НЕ» логический уровень «1» является разрешающим, т. е. в этом случае последовательность на другом входе пропускается на выход без изменения (за исключением того, что она инвертируется, т. к. элемент у нас «И-НЕ», а не просто «И»). При логическом уровне «0» вентиль запирается, на выходе будет логическая единица;

• для элемента «ИЛИ-HE» ситуация полностью обратная: разрешающим является логический уровень «0», т. е. в этом случае последовательность на другом входе пропускается на выход (также с инверсией). При логическом уровне «1» вентиль запирается, на выходе будет логический ноль;

• для «Исключающего ИЛИ» все еще интересней: в зависимости от того, «0» на входе или «1»: относительно другого входа элемент ведет себя, соответственно, как повторитель или как инвертор, что дает довольно широкие возможности для управления двоичными последовательностями. Почему так происходит?

Рис. 8.3. Обработка цифровых сигналов при помощи логических элементов:

а — диаграммы прохождения сигналов через основные типы логических элементов; б — «антидребезг» на основе элемента «Исключающее ИЛИ»; в и г — использование элемента «Исключающее ИЛИ» для выявления разности фаз (в) и частот (г) сигналов

Исключающее ИЛИ

Элемент «Исключающее ИЛИ» обладает рядом интересных свойств, которые вытекают из его таблицы истинности:

Если сравнить эту таблицу с таблицами элементов «ИЛИ» и «И-НЕ» (см. главу 7), то можно заметить, что «Исключающее ИЛИ» есть логическое произведение этих элементов. Запомнить его таблицу истинности очень просто — он осуществляет функцию «несовпадения» (единица на выходе тогда, когда входы разные). Признаюсь, что я никогда не мог понять, почему в отечественной практике «Исключающее ИЛИ» обозначают значком «=1». По смыслу это обозначение больше подошло бы обратному элементу «совпадения», который представляет собой инверсию выхода «Исключающего ИЛИ» и носит название «Включающего ИЛИ». В любой логической серии есть специальные микросхемы «Исключающее ИЛИ» (561ЛП2), но функцию эту несложно воспроизвести и на базовых элементах, например, «И-НЕ».

Заметки на полях

Сама функция «Исключающее ИЛИ» (по-английски она называется XOR) имеет большое значение в логике и программировании. Например, часто употребляющаяся функция обнуления какого-то регистра в микроконтроллерах есть операция «Исключающее ИЛИ» этого регистра самого с собой (по определению, одинаковые входы дадут на выходе все 0). Другое интересное свойство этой функции — будучи применена к какому-то двоичному объекту дважды, она возвращает все, как было до операции. На этом принципе основано применение функции «Исключающее ИЛИ» в криптографии: первый раз вы складываете текст с секретным ключом, получая «абракадабру». Второй раз — на приемном конце — тот же ключ той же операцией применяется к этой «абракадабре», в результате чего получается исходный расшифрованный текст. Можно указать и еще одно распространенное применение «Исключающего ИЛИ», которое вы не раз встречали — получение «прозрачного» цвета в компьютерной графике. Эффект основан на том, что изготавливается т. н. XOR-маска. Там, где в XOR-маске были поля с нулевым значением бит (т. е. черного цвета), фон остается неизменным (если одна исходная величина равна нулю, то операция XOR будет повторять вторую исходную величину), в противном случае на фон с «дырой» накладывается то изображение, которое записано в XOR. Так, например, формируются «иконки» и «прозрачные» меню в Windows. Как видите, очень полезная функция.

На рис. 8.3, б показана интересная схема на основе элемента «Исключающее ИЛИ». Она устраняет неизбежный дребезг механических контактов, который может вызвать (более того, вызывает обязательно) многократное срабатывание некоторых электронных схем, например триггеров или счетчиков. С этим явлением борются разными путями — с помощью одновибраторов (см. далее), RS-триггеров (см. главу 9) и даже программно — в микроконтроллерах (см. главу 13).

При наличии свободного элемента «Исключающее ИЛИ» устранить дребезг, как видите, очень просто. Чтобы понять, как это работает, надо учесть, что подвижные контакты кнопки, тумблера или реле никогда не пролетают несколько раз расстояние от одного неподвижного контакта до другого — подвижной контакт только несколько (иногда до нескольких десятков) раз за короткое время оказывается «висящим в воздухе» (представьте себе, что он как бы подпрыгивает на неподвижном контакте, причем как при размыкании, так и при замыкании). При этом подача напряжения, соответствующего противоположному логическому уровню, не происходит, но «подпрыгивания» достаточно, чтобы на выходе микросхемы вызвать нечто похожее на дребезг выхода компаратора при наличии помехи. Но, согласно сказанному ранее, при наличии логического нуля на одном из входов «Исключающее ИЛИ» работает как повторитель. Если контакт был замкнут (надежно) с потенциалом питания (логическая единица), то на выходе будет также «1». Когда контакт в процессе дребезга разомкнется и «повиснет в воздухе», то потенциал на выходе все равно останется равным «1», т. к. поддерживается обратной связью, замыкающей выход со входом. Сколько бы контакт ни дребезжал таким образом, потенциал останется равным «1» до первого касания контактом «земли», тогда элемент перебросится в другое состояние и будет в нем пребывать опять независимо от того, дребезжит контакт или нет. Разумеется, можно и инвертировать сигнал, если присоединить второй вход к питанию, а не к «земле». В схеме по рис. 8.3, б обязательно требуется именно перекидной контакт, для простой кнопки с двумя выводами нужны иные способы.

Самое, однако, интересное будет, если на входы «Исключающего ИЛИ» подать две последовательности импульсов с разными частотами и/или фазами. На рис. 8.3, в показано, что произойдет, если обе последовательности имеют одинаковую частоту, но фазы при этом сдвинуты на полпериода. На выходе при этом возникнет колебание с удвоенной частотой! Попробуйте изменить фазу — вы увидите, что скважность результирующего колебания будет меняться, пока фазы не совпадут, и тогда сигнал на выходе исчезнет — одинаковые состояния выходов дают на выходе «Исключающего ИЛИ» всегда логический ноль. Это позволяет использовать такой элемент в качестве т. н. фазового компаратора, что широко применяется в фазовых модуляторах и демодуляторах сигнала.

Не менее интересный случай показан на рис. 8.3, г, где на входы подаются последовательности с различающейся частотой. Мы видим, что на выходе возникнет сигнал с меняющейся скважностью, причем легко показать, что период изменения скважности от минимума к максимуму и обратно будет в точности равен периоду сигнала с частотой, равной разности исходных частот. Если при этом поставить на выходе элемента фильтр низкой частоты (если разность частот невелика в сравнении с исходными частотами, то достаточно простой RC-цепочки), то мы получим синусоидальное колебание с частотой, равной этой разности! Это колебание можно подать, например, в качестве сигнала обратной связи на генератор, управляемый напряжением (ГУН), который тогда изменит частоту своего выходного сигнала так, чтобы она в точности совпадала со второй (опорной). Так, к примеру, делают схемы умножителей частоты, получая целый набор точных частот при наличии одного-единственного опорного кварцевого генератора.

Использование статической логики

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

Коды и шифры

Сначала внесем некоторую ясность в терминологию. Под словом «коды» ученые-криптографы чаще всего понимают словесный код: «первый, я третий, какие указания?». Типичным кодом также были уловки, которыми алхимики охраняли свои производственные секреты («возьми, сын мой, философской ртути и накаливай, пока она не превратится в зеленого льва…»). Такие тайные коды точными науками не рассматриваются, и применяются лишь в быту.

Другое дело— различные системы счисления, которые мы рассматривали в главе 7, по сути они также есть не что иное, как коды, в данном случае применяющиеся для обозначения чисел. На самом деле к таким кодам более применимо слово шифры. Наука криптография имеет дело немного с другими шифрами, но строгое определение этого понятия (использование математических приемов шифровки текста с возможностью его однозначного восстановления при знании ключа, см. ранее про «Исключающее ИЛИ») вполне применимо и к двоичным числам — к двоичному коду.

Кроме двоичного, шестнадцатеричного и т. д., есть и другие коды, и не только для чисел, но и для букв алфавита, и мы рассмотрим это чуть далее. А пока внесем все же ясность: в электронике кодом называют некую систему представления чисел и букв, которая позволяет однозначно перевести представленную информацию в любую другую подобную систему. Устройства, позволяющие осуществлять такой перевод, называют шифраторами и дешифраторами — совсем, как у шпионов. Ясно, что между шифратором и дешифратором нет строгого различия (что считать за исходную систему?), но, как правило, шифратором называют устройство, которое преобразует данные в двоичный код, а дешифратором — наоборот, из двоичного кода.

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

Более распространены в электронике т. н. равномерные коды, в которых число разрядов постоянно и определено заранее, благодаря чему разделители не требуются. Но бывает и иначе, например, почтовая кодировка UTF-8, основанная на 16-битовом Unicode, использует неравномерные коды. За экономию объема сообщения приходится расплачиваться довольно сложным алгоритмом кодирования и декодирования. Известная азбука Брайля для слепых— типичный пример двоичного кода, в котором число разрядов равно 6. По понятным причинам чаще употребляют коды, в которых число разрядов равно 8, и составляет целый байт, или более длинные, с числом разрядов, кратным 8. Типичные представители таких кодов — всем известный ASCII, который составляет основу любой современной компьютерной кодировки, а также Unicode — двухбайтовый код, позволяющий закодировать знаки всех алфавитов мира.

Управление цифровыми индикаторами

В электронике для разных целей необходимы и другие двоичные коды. Мы сейчас рассмотрим код, который для краткости будем называть семисегментным — т. е. тот, что служит для отображения численной информации на цифровых семисегментных индикаторах. Один разряд такого индикатора, как мы знаем из главы 3, состоит обычно из семи сегментов-полосок (на светодиодах или жидких кристаллах), расположенных в пространстве определенным образом. На рис. 8.4 показано расположение и общепринятые обозначения этих сегментов буквами (а, Ь, с и т. д., употребляются и большие, и маленькие буквы), а также соответствующий семисегментный код, в котором «1» обозначает светящийся сегмент, а «0»— несветящийся. Сегмент h, который представляет собой запятую, в формировании цифры не участвует, управляется отдельно и потому мы его не рассматриваем.

Рис. 8.4. Обозначения сегментов и таблица состояний семисегментного индикатора

Разумеется, на семисегментных индикаторах можно отобразить и некоторые другие символы (знак «минус», буквы С, A, F, П, Н или Р), но эти возможности мы также оставим пока в стороне. Для того чтобы отобразить больше символов, есть и другие типы цифровых индикаторов, например, шестнадцатисегментные или матричные, но управление ими сложнее и мы остановимся на семисегментных.

Как заставить электронную схему показывать цифру на семисегментном индикаторе? Ведь изначально мы чаще всего имеем цифру в двоичном (а не двоично-десятичном) представлении. Четырехразрядное двоичное число имеет диапазон от 0 до 16, что на одном семисегментном индикаторе отобразить невозможно даже в шестнадцатеричном исполнении, т. к. букву «В» нельзя будет отличить от восьмерки, a «D» — от нуля. Это означает, что. вообще говоря, мы должны провести нашу перекодировку в два этапа: сначала представить число в распакованном двоично-десятичном виде (см. главу 7), затем преобразовать четырехразрядный двоично-десятичный код в семисегментный. Здесь мы ограничимся рассмотрением только последней задачи, т. к. первая практически всегда уже решена, поскольку двоично-десятичное число является результатом счета с помощью двоично-десятичного же счетчика (см. главу 9) или формируется в регистрах микроконтроллера программно.

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

Рис. 8.5. Полная схема дешифратора для управления семисегментным индикатором

Здесь х1х4 — входной двоично-десятичный код, причем х1 соответствует младшему разряду. Как видите, схема довольно громоздкая: потребуется 10 инверторов, 11 четырехвходовых «И-НЕ», 2 трехвходовых «И-НЕ», 2 двухвходовых «И-НЕ». В зависимости от выбора реальной элементной базы (согласно приведенным в главе 7 логическим соотношениям, одни и те же функции можно реализовать по-разному), число необходимых микросхем может составить порядка 10 корпусов и более. И это без учета того, что напрямую подключать светодиодные индикаторы к этой схеме нельзя, т. к. слишком велика нагрузка, которая может «просадить» логический уровень, например, на выводе сегмента «с». Потому здесь потребуются еще усилители-повторители выходного сигнала. А для жидкокристаллических индикаторов необходим генератор прямоугольных импульсов, т. к. они управляются переменным напряжением.

По этим причинам на практике всегда, конечно, ставят готовые дешифраторы, которые часто называют еще драйверами индикаторов. Один из самых простых таких дешифраторов— микросхема 561ИД5 (рис. 8.6), которая «заточена» под управление ЖК-дисплеями и обладает расширенной функциональностью по сравнению с простейшей схемой рис. 8.5. Она подает пульсирующий, как это полагается, сигнал на ЖК-сегменты, причем диапазон питания может быть расширен в отрицательную сторону, так что микросхема может управлять большими индикаторами, для которых требуется повышенное напряжение. Кроме этого, в ней имеется возможность «защелки» состояния выходов, что важно при управлении индикацией состояния счетчиков: на вход «защелки» Е следует подавать высокий уровень (логическую единицу), когда нужно, чтобы результаты сменились, в противном случае состояние выходов а-g «зависнет», независимо от изменения входных кодов. Можно индицировать буквы L, R, Р, Н и знак «минус» (схема по рис. 8.5 коды 0Ah—0Fh вовсе не использует, выходная комбинация будет совпадать с уже известными). Несложно приспособить эту микросхему и для управления светодиодными индикаторами — для этого придется поставить ключевые транзисторы или просто буферные усилители (микросхемы типа 561ЛН2 или 561ПУ4) по выходу. Для ЖК-индикаторов на вход F подают частоту в несколько десятков герц, для светодиодных — напряжение логической единицы.

Рис. 8.6. Разводка выводов дешифратора 561ИД5

Двоичный/десятичный дешифратор

Особый интерес, конечно, представляют дешифраторы двоичного кода в десятичный (а иногда и шифраторы — преобразователи десятичного кода в двоичный). Сначала только надо разобраться, что мы имеем в виду, когда говорим «десятичный код»? На самом деле рассмотренный семисегментный код тоже, по сути, есть десятичный код, представляющий рисунок цифр в определенной системе начертания знаков. Здесь же под десятичным кодом мы будем иметь в виду десятиразрядное двоичное число, которое имеет ровно десять различных состояний: когда в соответствующем разряде появляется единица, остальные при этом находятся в нулевом состоянии. Такое представление десятичного кода легко интерпретировать в виде табло с десятью лампочками, подсвечивающими в каждый момент времени только одну нужную цифру.

Для решения такой задачи обратимся к благословенным производителям микросхем, которые за нас уже все, как водится, придумали: это микросхема 561ИД1, разводка выводов которой приведена на рис. 8.7, а. Здесь цифры 1, 2, 4 и 8 внутри прямоугольника, обозначающего микросхему, соответствуют весам двоичных разрядов х1х4 что общепринято для выводов микросхем, представляющих двоичное число. Снаружи цифрами 0–9 обозначены десятичные выходы.

Рис. 8.7. Дешифратор 561ИД:

а — разводка выводов; б — схема двоично/шестнадцатеричного дешифратора

Далее приведена таблица состояний для микросхемы 561ИД1, в том числе и для состояний выхода при входном коде, превышающем девятку (пустые клеточки означают нулевое состояние выхода). Заметим, что коды более 09h (1001) не задействованы (как и в «самодельном» дешифраторе по рис. 8.5), т. к. при «бессмысленной» с точки зрения двоично-десятичного числа комбинации на входе выходы повторяют то восьмерку, то девятку.

На двух дешифраторах ИД1 можно построить аналогичный преобразователь двоичного кода в шестнадцатеричный. Его схема приведена на рис. 8.7, б. При значении входного кода менее 8 работает только верхняя микросхема — по таблице легко убедиться, что подача единицы на разряд х4 равносильна запрету на дешифрацию состояний входов х1х3. Эту функцию выполняет инвертор, который во входном диапазоне чисел от 0 до 7 на выходе всегда имеет уровень «1» и запрещает функционирование второй — нижней — микросхемы. Когда же входной код принимает значения 8 и выше, то на входе второй микросхемы оказывается фактически код, соответствующий тому же диапазону 0–7 (из входного кода вычитается восьмерка), и она выдает состояния для выходов 08h—0Fh всей схемы. При этом верхняя микросхема, в свою очередь, заперта состоянием единицы на х4 и неоднозначности не возникает. Выходы 8 и 9 у каждой из микросхем, естественно, не используются.

Мультиплексоры/демультиплексоры и ключи

Мультиплексоры/демультиплексоры — важный класс логических схем малой степени интеграции, о которых мы уже упоминали ранее, в связи с тем, что они прекрасно коммутируют не только цифровые, но и аналоговые сигналы. Мультиплексором называют схему, которая коммутирует единственный входной вывод напрямую с одним из нескольких выходных (как правило, четырех или восьми), в зависимости от поданного на нее двоичного кода (схема «1 —> 8»). Соответственно, демультиплексор выполняет обратную операцию — пропускает сигнал с одного из нескольких выводов на единственный выходной (схема «8 —> 1»).

Мультиплексоры в настоящее время делают на ключах — специальным образом включенных полевых транзисторах по технологии КМОП. Простейший такой ключ изображен на рис. 8.8, а. Он отличается тем, что может пропускать сигнал в обе стороны (на то транзисторы и униполярные), поэтому все КМОП-мультиплексоры одновременно являются также и демультиплексорами. Выпускаются также и микросхемы, содержащие просто наборы отдельных ключей, например, 590КН2 и аналогичные, мы еще с ними столкнемся.

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

На рис. 8.8 б приведена для примера схема разводки выводов микросхемы 561КП2, которая представляет собой восьмиканальный мультиплексор/ демультиплексор (561КП1 делает то же самое, но содержит два четырехканальных мультиплексора). Эта микросхема коммутирует один из выводов, обозначенных как 0–7, к выводу Q, в зависимости от поданного на управляющие входы А — С двоичного кода. Очень важную функцию осуществляет вход Е (с инверсией, т. е. активный уровень на нем — низкий) — это вход разрешения, если на нем присутствует высокий уровень, то все каналы размыкаются (недостающее 9-е состояние, подробнее см. главу 19).

Рис. 8.8. Использование КМОП-ключей:

а — простейший униполярный ключ; б — разводка выводов мультиплексора/демультиплексора 561КП2

Как видите, специально для коммутации переменных аналоговых сигналов у 561КП2 предусмотрено подключение отрицательного питания (выв. 7), в случае цифровых этот вывод просто соединяется с «землей». Размах питания между выводами 7 и 16 не может превышать предельно допустимого для однополярного питания 561-й серии значения 15 В, т. е. двуполярное питание возможно до ±7,5 В. Однако уровень сигнала управления (как по входам А — С, так и Е) при этом отсчитывается от «цифровой земли», которая установлена потенциалом вывода 8. При этом аналоговый сигнал по амплитуде может достигать почти значений питания, однако для получения минимума искажений коммутируемые токи должны быть малыми.

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК