Интегральные схемы: чипы стандартной логики 74xx

13 января 2017

Сегодня мы познакомимся с очень полезными элементами, которые выполняют прекрасно знакомые всем программистам логические операции, типа AND, OR, XOR и NOT. В русскоязычной литературе эти компоненты называются логическими вентилями, а в англоязычной — logic gates. Соответствующие микросхемами называют микросхемами стандартной логики. Будучи выполненными по технологии CMOS, микросхемы маркируются, как 74HCxx, например, 74HC08, 74HC32, и так далее.

Примечание: На самом деле, полное название микросхемы будет чем-то вроде SN74HC32N, где SN обозначает производителя, а N — тип корпуса. В приведенном примере чип произведен Texas Instruments и предназначен для сквозного монтажа. Аналогичный чип от Fairchild Semiconductor для поверхностного монтажа имел бы маркировку MM74HC32D.

Немного теории

На следующей картинке приведены основные логические операции, используемые в электронике, соответствующие названия чипов, а также обозначения операций по ANSI и DIN 40700:

Обозначение логических элементов по ANSI/IEEE и DIN 40700

Обозначения в соответствии с ANSI являются наиболее распространенными. Однако по неизвестным мне причинам EAGLE конкретно для чипов 74HCxx использует обозначения DIN 40700. К счастью, они не так уж сильно различаются. Еще есть IEC 60617-12, и, конечно же, ГОСТ. Но они используются намного реже, поэтому здесь я их не привожу. Если интересно, можете найти эти обозначения в Википедии.

Операции NAND и NOR не слишком часто используются в программировании, но с ними все просто:

NAND(x, y) == NOT(AND(x, y)) == OR(NOT(x), NOT(y))
NOR(x, y)  == NOT(OR(x, y))  == AND(NOT(x), NOT(y))

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

Fun fact! Имея названные логические элементы, можно сравнительно просто получить и арифметические операции. В частности, полусумматор строиться с использованием операций XOR и AND.

Одна микросхема 74HCxx содержит в себе сразу несколько логических вентилей, со следующим расположением входов и выходов:

Входы и выходы микрочипов 74HCxx

Эти иллюстрации позаимствованы из потрясающей книги Чарльза Платта «Электроника для начинающих», которую я категорически рекомендовал в прошлом и продолжаю рекомендовать всем, кто хочет начать заниматься электроникой. На Амперке, на которую ведет приведенная выше ссылка, есть и сама книга, и готовые наборы электронных компонентов к ней.

Впрочем, входы и выходы у чипа от конкретного производителя могут оказаться расположены и иначе, поэтому будет не лишним свериться со спекой. Помимо рассмотренных выше бывают еще чипы с тремя входами (NAND — 7410, AND — 7411, NOR — 7427), четырьмя (NAND — 7420, AND — 7421), и даже восемью входами (NAND — 7430). В рамках этой заметки они не рассматриваются, но знать об их существовании все же стоит.

О стабилизаторе напряжения

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

Схема подключения стабилизатора напряжения LM7805

Электролитический конденсатор имеет емкость 0.33 мкФ, а керамический — 100 нФ. Источник питания должен подавать от 7.5 до 35 В. В результате LM7805 подает на рельсы макетной платы 5 В стабилизированного напряжения.

На практике использовать стабилизатор напряжения не всегда удобно или возможно, например, если ваша цепь питается от USB. На stackexchange подтвердили, что совет этот немного странный и что строго говоря для работы 74HCxx использование стабилизатора не является обязательным. Для рассмотренных в этой заметке цепей я обошелся без него, используя лишь конденсатор на 100 мкФ в качестве сглаживающего фильтра, как это делалось в предыдущих постах.

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

Дополнение: В контексте стабилизаторов напряжения вас также может заинтересовать пост Паяем BEC для квадрокоптера на базе регулятора LM2596.

Примеры использования

Рассмотрим несколько простых примеров использования логического И:

Примеры использования чипа 74HC08

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

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

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

Теперь попробуем сделать что-то поинтереснее. Ранее в заметке Интегральные схемы: работа с таймером 555 мы узнали, как зажечь светодиод на определенное время, а затем погасить. Но что, если мы хотим, чтобы светодиод загорелся не сразу, а спустя какое-то время?

Решение с использованием чипов 74HCxx выглядит как-то так:

Включение светодиода с задержкой с помощью логических вентелей

В верхней части схемы расположен таймер 555 в моностабильном режиме. При нажатии на кнопку таймер подает сигнал в течение примерно 2.5 секунд, а затем перестает его подавать. Выход таймера подается на вход 74HC32 (логическое ИЛИ), второй его вход при этом подключен к земле. Казалось бы, этим мы ничего не делаем, так как выход будет таким же, как и вход. Дело в том, что выходное напряжение таймера 555 несколько меньше напряжения источника питания и, чтобы схема работала при напряжении 3 В, его нужно усилить, для чего и был использован 74HC32. В общем и целом, это такой хак, и при напряжении 5 или 6 В все прекрасно работает без него. Здесь я привожу этот хак только для демонстрации, что логические элементы можно использовать для усиления сигнала. Напомню также, что по спецификации 3 В не является нормальным рабочим напряжением для таймера 555.

Принцип работы остальной части цепи к этому моменту вам должен быть уже понятен. При получении сигнала от таймера логическое И, обозначенное на схеме IC1C, начинает постоянно подавать на выход истину. При этом на выходе остальных логических элементов получается ложь. По истечении 2.5 секунд выход логического НЕ (IC4A) меняется на истину, в результате чего на входе второго логического И (IC1D) оказываются две истины. На выход он также начинает подавать истину и светодиод загорается. Кроме того, так как выход IC1D зациклен на один из его входов, светодиод будет гореть вечно.

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

Заключение

Так выглядят все три рассмотренных выше схемы в собранном виде:

Микросхемы стандартной логики на макетной плате

Использованные чипы слева направо — 74HC08 (логическое И), 74HC04 (логическое НЕ), таймер 555, 74HC32 (логическое ИЛИ). Заметьте, что неиспользуемые входы микросхем подключены к земле. Выходы при этом можно ни к чему не подключать. В качестве диодов подойдут импульсные диоды 1N4937 или сигнальные диоды Шоттки 1N5818.

Также мне удалось заставить схему работать на выпрямительных диодах 1N4007, но в этом случае потребуется небольшой хак. Вход логического НЕ (IC4A) потребуется подключить напрямую к земле через резистор сопротивлением 4.7 кОм, а выход IC3A соответственно защитить дополнительным диодом. Будучи новичком в мире электроники, я не до конца уверен, почему выпрямительные диоды не работают без этого хака. Рабочая версия заключается в том, что при обратном течении тока они закрываются медленнее импульсных диодов и описанный хак подпирает утечку на вход логического НЕ через диод D2. Буду рад, если вы подтвердите или опровергните эту версию в комментариях.

Описанная проблема касается только последней из приведенных схем. Первые две схемы работают на любых из упомянутых диодах. Проект EAGLE со всеми приведенными схемами я выложил на GitHub.

Стоит отметить, что многие очень полезные микросхемы 74xx остались за кадром, например, сдвиговые регистры и декодеры. Просто невозможно рассмотреть их все в рамках одной статьи.

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

Дополнение: Больше чипов 74xx: сдвиговые регистры и декодеры

Метки: .

Подпишись через RSS, E-Mail, Google+, Facebook, Vk или Twitter!

Понравился пост? Поделись с другими: