ГЛАВА 16 Устройства на логических схемах
Мультивибраторы, формирователи, триггеры, счетчики…
Сердце молодого гасконца билось так сильно, что готово было разорвать ему грудь Видит бог, не от страха — он и тени страха не испытывал — а от возбуждения.
А. Дюма. Три мушкетера
Из описания устройства логических элементов в главе 15 ясно, что любой логический элемент есть в сущности не что иное, как усилитель. Мы даже упоминали, что логические микросхемы иногда используют в качестве аналогового усилителя.
В самом деле, с формальной точки зрения между простым многокаскадным усилителем без обратной связи и логическим инвертором разницы нет никакой. Правда, аналоговым усилителем логический элемент будет очень плохим — коэффициент усиления по напряжению у КМОП-элементов составляет всего несколько десятков, в отличие от сотен тысяч и миллионов у операционных усилителей и компараторов, и даже введение обратной связи не поможет получить качественный сигнал. Если кого-то интересует такое экзотическое использование логических микросхем, то в упоминавшейся книге [18] есть схема линейного усилителя на КМОП-элементах, можете поэкспериментировать.
Но зато логические микросхемы идеально приспособлены для работы в схемах, так сказать, «полуаналоговых» — т. е. схемах генераторов, формирователей и преобразователей импульсов. Ими мы сначала и займемся.
Генераторы
До сих пор мы рассматривали только два способа построения генераторов колебаний: один раз это был релаксационный генератор коротких импульсов на однопереходном транзисторе (см. рис. 10.3) для фазового управления тиристорами, второй раз — аналоговый генератор синусоидальных колебаний на ОУ (см. рис. 12.6). Был еще «зуммер» из реле, приведенный на рис. 7.3. Теперь рассмотрим релаксационные генераторы прямоугольных импульсов на логических микросхемах.
* * *
Подробности
Релаксационными, в отличие от гармонических, называются колебания в системах, где существенную роль играет рассеяние энергии, или, как говорят физики, ее диссипация. Типичными примерами систем с гармоническими колебаниями служат описанные в любом школьном учебнике физики колебательный контур или механический маятник. В них энергия непрерывно переходит из одной формы в другую, и если не учитывать потери на нагревание проводов в контуре или потери на трение в маятнике, то эти колебания могут продолжаться бесконечно без всякой подпитки извне. В отличие от таких систем, релаксационные генераторы без внешнего источника неработоспособны, в них энергия, запасенная в накопителе (например, конденсаторе), не переходит в другую форму, а теряется — переходит в тепло. Для возникновения релаксационных колебаний обязательно требуется наличие нелинейного порогового элемента, меняющего свое состояние скачком, а также определенный характер обратных связей (о чем далее). Релаксационные генераторы обычно выдают скачкообразный сигнал (прямоугольный, как в большинстве генераторов далее, или импульсный, как в генераторе на однопереходном транзисторе), но не всегда. Так, генератор синусоидальных колебаний из главы 12 также является релаксационным, но с помощью хитро подобранных характеристик цепей обратной связи сделано так, что форма сигнала меняется по синусоидальному закону.
* * *
Но сначала рассмотрим такой генератор на ОУ (рис. 16.1, а). Работает он следующим образом. Мы помним, что в первый момент времени заряжающийся конденсатор эквивалентен короткозамкнутой цепи. Поэтому после включения питания коэффициент усиления по инвертирующему входу окажется равен бесконечности, и на выходе ОУ будет фактически положительное напряжение питания. Конденсатор начнет заряжаться через резистор R1, но в силу большого коэффициента усиления ОУ напряжение на выходе останется вблизи напряжения питания, пока потенциал на конденсаторе не достигнет порога, заданного делителем R2/R3, — в данном случае половины положительного напряжения питания. Тогда выход ОУ скачком перебросится в состояние, близкое к отрицательному напряжению питания, и конденсатор начнет разряжаться через тот же резистор R1. Напряжение на неинвертирующем входе станет равным половине отрицательного напряжения питания, и, чтобы привести схему в первоначальное состояние, конденсатору придется перезарядиться до этого напряжения. Затем все повторится сначала. Таким образом, на выходе мы получим меандр с периодом, который определяется параметрами RC-цепочки (см. формулу на рис. 16.1, а). На инвертирующем входе, между прочим, при этом будет напряжение, очень близкое к треугольной форме, которое можно где-нибудь использовать, если подключить потребителя через отдельный развязывающий повторитель на другом ОУ.
Рис. 16.1. Схема генератора на ОУ (а) и зуммера на реле (б)
* * *
Заметки на полях
Отметьте, что если исключить из рассмотрения интегрирующую цепочку R1C1, то остальная часть схемы есть упрощенный вариант компаратора с гистерезисом, приведенного на рис. 12.10. Для того чтобы генератор работал от одного напряжения питания, придется неинвертирующий вход подключить в точности так же, как там — к искусственной средней точке. Подобные генераторы ранее были широко распространены, и поныне разными производителями выпускается специальная микросхема, которая известна под названием «таймер 555» и может служить как в качестве генератора, так у одновибратора, т. е. формирователя однократных импульсов, в том числе большой длительности.
* * *
Теперь посмотрим, что нужно сделать, чтобы построить такой генератор на логике.
Сначала обратимся к зуммеру на рис. 7.3 и перерисуем его в виде рис. 16.1, б. В таком виде в схеме легко узнать релейный инвертор (см. рис. 14.3, крайний элемент справа), у которого в данном случае выход управляет входом. Не получится ли выполнить тот же самый фокус, если замкнуть вход с выходом у обычного инвертора в интегральном исполнении? К сожалению, нет — такое включение просто выведет инвертор в линейный режим, при котором на выходе установится половина питания. А почему? А потому, что логические элементы, грубо говоря, слишком быстродействующие.
Теория гласит, что для получения устойчивых колебаний необходимо, чтобы присутствовали обе разновидности обратной связи, причем действие отрицательной обратной связи (ООС) должно отставать от действия положительной (ПОС). Именно это и происходит и в схеме генератора на основе компаратора, за счет использования RC-цепочки, и в зуммере за счет механической инерции деталей. Действие только одной ПОС приведет к тому, что выход устройства «зависнет» в одном из крайних положений, а одной только ООС — к тому, что на выходе установится некое среднее состояние равновесия. Сравните поведение одновибраторов, рассмотренных в этой главе далее, в которых наличествует только ООС, и RS-триггеров (в конце главы), в которых присутствует только ПОС. А вот вместе они дадут то, что надо.
Существует огромное количество схем мультивибраторов — т. е. генераторов прямоугольных колебаний, реализующих эти теоретические положения. Если кому любопытно, то не менее десятка разнообразных схем можно найти только в одной книге [11], и этим их многообразие далеко не исчерпывается. Я приведу лишь одну из них, выбранную из многих из-за минимального количества задействованных компонентов, и два ее варианта, разница между которыми заключается в используемых элементах («И-НЕ» или «ИЛИ-НЕ»).
Схема на рис. 16.2, а базовая. При включении питания она начинает работать сразу и, как и остальные схемы подобного рода, выдает меандр с размахом от 0 до Uпит. Частота на выходе определяется параметрами R1 и С1: период Т ~= 2R1·C1. Схема устойчиво работает при величине резистора R1 от нескольких килоом до 10 МОм, что составляет достаточный диапазон для того, чтобы избежать искушения при малых частотах использовать электролитические конденсаторы — напомним, что они очень нестабильны при работе во времязадающих цепях.
Резистор R2 в работе схемы почти не участвует и нужен только для того, чтобы оградить защитные диоды микросхемы от перегрузки током разряда конденсатора С1. Величина его может изменяться от сотен ом до нескольких килоом, при условии, что он много меньше R1. Его можно и вообще исключить из схемы, отчего он показан пунктиром (о необходимости установки этого резистора мы будем говорить позже). Конденсатор С1 может применяться любой, с емкостью не меньшей нескольких десятков пикофарад. Указанные параметры элементов позволяют получить частоты от сотых долей герца вплоть до верхней границы рабочей частоты «классических» КМОП-микросхем в 1–2 МГц. Для получения более высоких частот целесообразно использовать быстродействующие серии КМОП, а не ТТЛ, т. к. для последней ограничения гораздо жестче — например, резистор R1 не должен выходить за пределы 0,5–2 кОм.
Рис. 16.2. Схемы мультивибратора на логических элементах:
а — базовая схема на инверторах,
б — схема на двухвходовых элементах с управлением;
в — диаграмма состояний схемы на двухвходовых элементах «И-НЕ»;
г — диаграмма состояний схемы на двухвходовых элементах «ИЛИ-НЕ»
Если в схеме на рис. 16.2, б объединить входы логических элементов между собой, она превратится в схему на рис. 16.2, а. Но дополнительные входы можно использовать и для управления генерацией. Нередко возникает потребность остановить генерацию на время и при этом обеспечить определенный логический уровень на выходе генератора. Эти задачи как раз и решаются с помощью дополнительных входов. Диаграммы состояния выхода в зависимости от состояния входов при использовании разных типов логических элементов приведены на рис. 16.2, в и г.
Запоминать эти диаграммы нет необходимости, если обратиться к рис. 15.8. Из него следует, что единица на входе «И-НЕ» и ноль на входе «ИЛИ-НЕ» являются разрешающими уровнями, следовательно, при этих уровнях на управляющих входах наша схема будет функционировать, как если бы входы элемента были объединены. При запрещающих же уровнях на входе уровень на выходе будет устанавливаться так, как если бы никаких RC-цепочек не существовало.
Простейшее применение схемы с управлением — решение задачи приостановки генератора на время переходных процессов при включении питания, для чего по управляющему входу нужно поставить интегрирующую RC-цепочку, как в схеме триггеров с предустановкой (см. далее рис. 16.9). Другое применение — генерация пачек импульсов с меньшей частотой, если управляющий вход одного генератора присоединить к выходу другого. На рис. 16.3 показана схема звуковой сигнализации на одной микросхеме 561ЛА7 и одном транзисторе. Это пример случая, когда требуется определенный логический уровень при выключенной генерации, чтобы избежать протекания постоянного тока через динамик и не ставить при этом разделительный конденсатор.
Рис. 16.3. Схема звуковой сигнализации с динамиком на выходе
Схема выдает сигнал около 500 Гц с периодом повторения около 0,5 с, если на управляющий вход подать сигнал высокого уровня. При сигнале низкого уровня на управляющем входе на выходе будет также низкий уровень, и постоянный ток через динамик не течет. Транзисторный каскад лучше питать нестабилизированным напряжением от входа стабилизатора питания микросхем, потому что тогда достаточно мощные импульсы тока через динамик будут фильтроваться стабилизатором и не окажут вредного воздействия на остальные элементы схемы. Динамик можно заменить и на пьезоэлектрический звуковой излучатель, тогда мощный транзистор ставить необязательно (но вовсе без транзистора не обойтись, звук будет слишком тихим). А о пьезоэффекте мы сейчас подробнее и поговорим.
Кварцевые генераторы
Точность поддержания частоты в приведенных схемах невысока. Частота «уходит» примерно на 10–20 % при изменении напряжения питания от 5 до 15 В и в достаточно большой степени зависит от температуры (использование высокостабильных резисторов и конденсаторов не поможет, и потому нецелесообразно). Чтобы избавиться от этого эффекта, необходимо применить кварцевый резонатор, в просторечии — просто кварц.
Здесь не место для того, чтобы подробно излагать принципы работы кварцевого (или реже употребляемого керамического, который обладает несколько меньшей стабильностью) резонатора — это нужно делать в курсе радиотехники в сравнении со свойствами колебательного контура. Вкратце дело заключается в следующем: если приложить напряжение к кварцевому параллелепипеду, выпиленному из целого кристалла в определенной ориентации относительно его осей, то кристалл деформируется — очень не намного, но все же достаточно, чтобы на этом принципе даже делать прецизионные манипуляторы для электронных микроскопов или выталкивающие жидкость поршни в струйных принтерах Epson. Это так называемый обратный пьезоэлектрический эффект. Имеет место и противоположный прямой эффект — если такой кристалл деформировать, то у него на гранях появляется разность потенциалов, — явление используется в специальных тензометрических кварцах.
Получается, что если мы включим такой кристалл в схему с обратной связью, то она начнет генерировать колебания, причем частота генерации будет зависеть исключительно от размеров кристалла — и ни от чего больше! Как, спросите вы, даже от температуры не будет зависеть? Вот именно — пьезоэлектриков, как называют вещества, ведущие себя подобно кварцу, много, но чаще всего используют именно кварц, т. к. он помимо пьезоэлектрических свойств, обладает еще и одним из самых низких на свете температурных коэффициентов расширения.
В результате кварцевые генераторы без каких-либо дополнительных ухищрений дают погрешности порядка 10-6 долей от номинальной частоты. Такие доли обозначаются как ррт (part per million), а иногда просто как 10-6. Температурная нестабильность хороших кварцев не превышает долей или единиц ррт. Это значит, что уход часов с таким генератором составляет не более 1 секунды в сутки. Правда, для того чтобы реализовать потенциал кварцевых резонаторов полностью, нужны специальные схемы включения, иногда довольно громоздкие (обычно их делают на дискретных элементах), но и схемы на цифровых инверторах, приводимые далее, дают результат не хуже примерно 10 4 во всем диапазоне питающих напряжений и температуры.
На кварцах работают все бытовые электронные часы, и вообще в любом современном бытовом электронном устройстве вы, скорее всего, найдете кварц, а иногда и не один. Кварцы выпускают на определенные частоты, при их приобретении следует обращать внимание на возможное отклонение частоты от номинальной, которая может составлять от долей ррт до десятков и даже сотен ррт. Если нужна повышенная точность, то можно приобрести специализированные очень стабильные резонаторы с погрешностью начальной установки до 10-7, выпускаются и готовые генераторы на разные частоты (особенно большой выбор предлагает фирма, название которой обычно ассоциируется совсем с другими продуктами, — Epson, приобретшая в свое время компанию, известную своей часовой торговой маркой Seiko).
Большинство кварцевых генераторов в цифровой технике строят по одной и той же схеме, которая очень проста и требует всего одного инвертора, резистора и двух конденсаторов. Схема эта показана на рис. 16.4, а. Чтобы не перегружать выход (это будет влиять на стабильность), нагружать такой генератор можно только на один-два КМОП-входа, поэтому обычно на выходе ставят еще и буферный элемент. Если же частота с выхода подается, например, только на вход КМОП-счетчика, то его можно не ставить. Параметры всех элементов можно менять в довольно больших пределах — так, емкость конденсаторов может меняться от 10 до 100 пФ (как рассчитать значение емкости более точно, см. «Подробности» далее), причем они не обязательно должны быть одинаковыми, — изменением С1 можно подстраивать частоту в пределах 4–5 знака после запятой. Сопротивление резистора R1 может меняться от 1 до 20 МОм, R2 — от нуля до сотен килоом (меньшие значения получаются при более высокочастотных кварцах). Схема потребляет несколько десятков микроампер при напряжении питания 5 В и устойчиво работает для кварцев с частотами от десятков килогерц до 1 МГц для «классической» КМОП и до 10 МГц для КМОП-элементов из быстродействующих серий. Правда, с некоторыми старыми отечественными кварцами (вроде РК-72) могут быть проблемы.
Рис. 16.4. Схемы кварцевых генераторов на КМОП-элементах
Инвертор, естественно, может представлять собой и просто инвертор, и многовходовой логический элемент с объединенными входами. Во втором случае один из входов можно использовать для запуска и остановки генерации, как в схеме на рис. 16.2, б.
* * *
Подробности
Конденсаторы С1 и С2 в схеме на рис. 16.4, а рассчитывают, исходя из номинальной емкости нагрузки Сн, которая указывается для каждого кварцевого резонатора. Если она неизвестна, то можно ориентироваться на значение 12,5 пФ для «часовых» кварцев и на значение 16–32 пФ для кварцев частотой 1-16 МГц. Номинал С каждого из конденсаторов (при условии их равенства) можно рассчитать по приблизительной формуле С = 2Сн — 10 пФ, где 10 пФ — «среднепотолочное» значение емкости монтажа плюс емкость входа/выхода инвертора. Таким образом, для «часовых» кварцев эти емкости должны быть порядка 15 пФ, а для более высокочастотных — 22–56 пФ. Для микросхем вроде часов реального времени, где конденсаторы уже имеются в составе микросхемы, указывается номинальная нагрузочная емкость внешнего кварцевого резонатора. Правильно подобранное значение емкости гарантирует более точное соответствие частоты генератора номинальной, но это не значит, что при других значениях емкости генератор не заработает, — чем больше значение емкостей, тем больше и потребляет схема, но и тем быстрее она «заводится». Указанные на схеме значения 22 пФ оптимальны, если использовать резонатор «не глядя».
Кварцевые резонаторы имеют предельно допустимую мощность рассеяния, которая невелика: от 1–3 мкВт для «часовых» кварцев в цилиндрических корпусах 6x2 или 8x3 мм до 30–50 мкВт в низких прямоугольных корпусах (HC-49S) и 1–2 мВт для кварцев в стандартных прямоугольных корпусах типа HC-49U. Превышение допустимой мощности еще не означает выхода резонатора из строя (хотя может случиться и такое — смотря, насколько превысить), но стабильность генератора снижается. Значение рассеиваемой мощности на кристалле W можно грубо прикинуть, исходя из падения напряжения на резонаторе: W = Uк·Iк, где Iк — ток через резонатор, который определяется в основном резистором R2. Его величина подсчитывается, исходя из напряжения на выходе инвертора Uвых: Iк = Uвых/R2 = Uпит/2R2 (делитель 2 появляется, т. к. на выходе мы имеем меандр, а не постоянное напряжение). Рассчитать Uк, форма которого близка к синусоидальной, непросто, но его можно измерить экспериментально, — для «часового» кварца в схеме по рис. 16.4, а действующее значение UK равно примерно 0,05 от напряжения питания. Итого при номиналах резисторов и конденсаторов, близких к указанным на схеме, мощность на «часовом» резонаторе составляет около 1 мкВт при напряжении питания 5 В и линейно растет с напряжением питания, поэтому при 15 В самые миниатюрные кварцы лучше не ставить.
* * *
Недостатком схемы на рис. 16.4, а является то, что на низких частотах она достаточно долго «заводится» при включении — установление режима для «часового» кварца 32 768 Гц может занимать секунды, в зависимости от значения емкостей, и в это время схема потребляет довольно большой ток — до 15 мА. Этого недостатка лишена более сложная схема на рис. 16.4, б, которая, однако, работает только при частотах в десятки килогерц, т. е. ориентирована на «часовые» кварцы. Потребление такой схемы при напряжении питания 3,3 В и использовании указанных на схеме элементах серии 74НС составляет 180 мкА (3 мА в момент включения), а время выхода на режим при включении питания или подаче разрешающего высокого уровня на вход «Пуск/Стоп» не превышает 0,2–0,3 с. При отключении подачей низкого уровня на вход «Пуск/Стоп» схема потребляет меньше 1 мкА. В этой схеме резонатор работает в более щадящем режиме, чем в схеме на рис. 16.4, а.
Специально для измерения температуры производятся термочувствительные кварцы, обладающие чувствительностью порядка 50–90 ррт изменения частоты на каждый градус изменения температуры. Кварцы эти выпускают на разные частоты: 30–40 кГц, 5 МГц, 10–40 МГц и пр. Если заменить в схеме на рис. 16.4, б «часовой» кварц аналогичным термочувствительным (например, отечественным РКТ-206 с частотой 32,7 кГц), то получится отличный малопотребляющий датчик температуры с частотным выходом и отрицательным наклоном зависимости частоты от температуры. Зависимость эту для бытовых применений можно считать линейной, однако для прецизионных измерений температуры (для чего, собственно, такие кварцы и существуют) приходится ее аппроксимировать полиномом 2-й и даже 3-й степени.
* * *
Заметки на полях
Кстати, мало кто знает, но в случае, если под рукой нет подходящего кварца, схему на рис. 16.4, а вполне можно «завести», просто заменив резонатор малогабаритной индуктивностью. То же относится и к встроенным генераторам микроконтроллеров, которые организуются по аналогичной схеме. Частоту можно грубо прикинуть, если учесть, что постоянная времени LC-контура равна √LC, где в качестве величины С нужно подставить сумму емкостей обоих конденсаторов. Тогда частота будет примерно равна единице, деленной на удвоенную величину этой постоянной. Естественно, главное преимущество кварца — высокая стабильность — при этом пропадет, зато можно менять частоту, в том числе и плавно.
Формирователи импульсов
Все приведенные схемы генераторов выдают меандр, в котором длительность паузы приблизительно равна длительности импульса, т. е. скважность их равна примерно двум (на величину скважности влияет и величина резистора R2 — см. схемы на рис. 16.2). Но нам могут потребоваться симметричные импульсы со скважностью, равной двум с большой точностью или вообще с другим значением скважности. На рис. 16.5 показана схема, которая формирует импульсы со скважностью ровно 2 и 4 из исходного сигнала с любой скважностью. В ней используется делитель частоты на два (счетный триггер) — элемент, который мы еще «не проходили», но будем рассматривать далее, а пока он приводится без пояснений. Диаграммы выходного напряжения показаны на рис. 16.5 внизу.
Рис. 16.5. Схема формирователя последовательности со скважностью 2 и 4
Следует отметить, что за счет задержки сигнала в триггере в момент, соответствующий фронту второго по счету сигнала исходной последовательности, на втором выходе может возникнуть короткая «иголка», т. к. спад импульса на выходе триггера наступит несколько позже наступления этого фронта. Она не страшна для статических схем (например, дешифраторов с выводом на индикаторы) или для управления внешними достаточно инерционными устройствами, но может вызвать срабатывание другого триггера или одновибратора (см. далее), если к его входу подключить выход такой схемы. Если это критично, то в подобных схемах вместо простого счетного триггера обычно используют специальные синхронные счетчики (о них также далее). Разумеется, если требуется только симметричный меандр, то одного триггера достаточно, элемент «И-НЕ» можно исключить.
Микросхема 561ТМ2 (CD4013) содержит два триггера, поэтому схему легко дополнить, получив на выходе другие значения частоты и скважности. Применяя дополнительные логические элементы, можно получить 4 выхода, на каждом из которых фаза сдвинута ровно на полпериода исходной частоты, — такие схемы применяют, например, для управления шаговыми двигателями или для управления елочной гирляндой «бегущие огни» (попробуйте составить такую схему сами!).
Большое значение на практике имеют формирователи коротких импульсов, называемые еще схемами выделения фронтов[22]. На рис. 16.6, а приведена схема, которая делает это, как положено, используя эффект задержки сигнала в логическом элементе. При поступлении положительного фронта на вход он сразу же переключает выход последнего элемента «И-НЕ» в состояние логического нуля. На выходе цепочки из трех инверторов также возникнет логический ноль, который вернет выход в единичное состояние, но это произойдет не сразу, а спустя время, равное утроенной задержке срабатывания логических элементов. Поэтому на выходе возникнет короткая «иголка», достаточная по длительности (задержка-то тройная!) для надежного срабатывания других элементов схемы. Длительность таких импульсов составит для КМОП несколько десятков или сотен наносекунд. При желании можно выделить не фронт, а спад импульса (и получить при этом на выходе «иголку» положительной полярности[23]), для этого нужно использовать элементы «ИЛИ-НЕ». А если использовать «Исключающее ИЛИ», то можно получать положительные импульсы при каждом переключении сигнала: и по фронту и по спаду.
Все здорово, но схема уж больно громоздкая для такой простой функции — целый корпус! К тому же столь короткие импульсы очень сложно наблюдать на осциллографе. Поэтому на рис. 16.6, б и в приведены гораздо более экономичные схемы, которые делают то же самое, но с нарушением чистоты цифровых принципов, ибо являются наполовину аналоговыми. Длительность импульса на выходе схем выделения фронтов при указанных на схеме номиналах составит около 10 мкс.
А на рис. 16.6, г показано использование интегрирующей цепочки для задержки импульса на фиксированное время. Диаграмм я не привожу, т. к. работа схемы понятна — передний фронт импульса задерживается на время, необходимое для заряда конденсатора до порога срабатывания инвертора. Задний фронт импульса, соответственно, задерживается на время разряда. Однако если при этом входной импульс сравним по длительности с постоянной времени RC, то на выходе импульс может быть уменьшенной длительности, а если входной импульс еще короче — выходной может вообще пропасть, поэтому такой схемой на практике пользуются редко, предпочитая одновибраторы, о которых мы сейчас и поговорим.
Рис. 16.6. Схемы формирователей импульсов:
а — стандартная схема выделения фронтов;
б, в — схемы с использованием дифференциальных RC-цепочек;
г — простейшая схема задержки
Одновибраторы
Одновибратор — это устройство, которое по внешнему сигналу выдает один-единственный импульс определенной длительности, не зависящей от длительности входного импульса. Запуск происходит либо по фронту, либо по спаду входного импульса. Для одновибратора без перезапуска возникновение на входе нового перепада напряжений той же полярности во время действия выходного импульса игнорируется, для одновибратора с перезапуском длительность выходного импульса в этот момент начинает отсчитываться заново. Как и в случае мультивибраторов, существует огромное количество схемотехнических реализаций этого устройства.
Мы подробно изучим вариант схемы без перезапуска, который получается небольшой модификацией схем выделения фронта по рис. 16.6, б и в — нужно только ввести в них положительную обратную связь, которая будет фиксировать состояние выхода на время заряда конденсатора.
Схема на рис. 16.7, а работает следующим образом. В состоянии покоя на выходе схемы состояние логической единицы, т. к. вход второго (правого) элемента «И-НЕ» заземлен через резистор R. Поскольку на входе тоже логическая единица, то на выходе первого (левого) элемента «И-НЕ» логический ноль, и конденсатор разряжен. При возникновении на входе схемы отрицательного уровня, на выходе первого элемента типа «И-НЕ» возникает состояние логической единицы, которое через дифференцирующую цепочку RC передается на вход второго элемента, так что на выходе схемы и, соответственно, на втором входе первого элемента оказывается логический ноль. Это состояние схемы, уже независимо от уровня входного сигнала, будет устойчиво: обратная связь как бы перехватила и зафиксировала уровень нуля на выходе на время, пока конденсатор заряжается от выхода первого элемента через резистор R. Через время, примерно равное произведению RС, конденсатор зарядится до порога срабатывания выходного элемента «И-НЕ», и выход схемы скачком перейдет обратно в состояние логической единицы по выходу опять же независимо от состояния входа.
Рис. 16.7. Одновибраторы
Если к этому времени по входу схемы уже установился уровень логической единицы, как бывает в большинстве случаев (одновибраторы в основном предназначены для работы с короткими импульсами на входе), то первый элемент также перебросится в начальное состояние, и конденсатор С быстро разрядится через ограничительное сопротивление 1 кОм (если оно установлено, см. далее) и входные защитные диоды второго элемента. Схема придет в начальное состояние в ожидании следующего запускающего импульса. Длительность импульса на выходе всегда будет примерно равна RC, даже в случае, если входной импульс длиннее (в этом случае конденсатор просто разрядится не сразу, а только тогда, когда закончится входной импульс). Совершенно аналогично работает схема на рис. 16.7, б, только с противоположными полярностями импульсов.
Главное применение одновибраторов — в качестве таймера, который формирует сигнал определенной длительности вне зависимости от работы всей остальной схемы. Естественно, о высокой точности выдержки времени тут говорить не приходится, но часто этого и не требуется. Например, если вы хотите ограничить по времени тревожный сигнал, подающийся с помощью устройства по рис. 16.3, то целесообразно управлять им от одновибратора, который запускается, скажем, нажатием кнопки. В одновибраторах для больших выдержек не возбраняется использовать электролитические конденсаторы, хотя даже при использовании только керамических или полимерных типов с максимальными емкостями порядка 1–3 мкФ вполне достижимы выдержки в несколько десятков секунд.
Одновибраторы с перезапуском, в которых выходной импульс в случае прихода нового импульса продлевается, мы проектировать не будем, потому что они более громоздкие, и в этом случае проще использовать готовую микросхему 561АГ1.
Возможно, вы уже сообразили, что одновибратор может служить эффективным средством подавления дребезга механических контактов (см. также главу 15 и эту главу далее), поскольку будет запускаться только от первого перепада уровней, причем даже независимо от того, пролетают подвижные контакты весь промежуток «туда-обратно» или нет. Главным его преимуществом в этом качестве, несмотря на довольно сложную схему, является возможность использования двухвыводной кнопки, а не переключающей. Вход одновибратора при этом соединяют с питанием (в схеме рис. 16.7, а) или с «землей» (в схеме рис. 16.7, б) через резистор, а кнопкой замыкают этот вход, соответственно, на «землю» или на питание. Недостатком такого варианта является то, что приходится четко рассчитывать необходимую длительность импульса, иначе дребезг можно пропустить. Вторым недостатком схемы с одновибратором является неопределенность ситуации с размыканием ранее замкнутой кнопки, т. к. если кнопка удерживается в замкнутом состоянии дольше, чем длится импульс, то из-за дребезга при размыкании одновибратор может выдать импульс повторно.
О токоограничивающих резисторах в импульсных схемах
В схемах генераторов на рис. 16.2, формирователей на рис. 16.6 и одновибраторов на рис. 16.7 показан пунктиром дополнительный резистор, ограничивающий ток через защитные диоды микросхемы. С функциональной точки зрения он не требуется, но дело в том, что дифференцирующая RC-цепочка, которая составляет основу этих схем, вырабатывает импульсы не только по нужному переключению сигнала, но и по противоположному, и при этом импульсы выходят за пределы питания, в чем вы можете убедиться, если взглянете на рис. 5.9.
Посмотрим, когда в этих схемах можно обойтись без токоограничивающих резисторов. Типовой допустимый постоянный ток через защитные диоды составляет порядка 10 мА для «классической» КМОП (20–30 мА для быстродействующих серий). Мы знаем, что в режиме короткого замыкания элемент «классической» КМОП выдает примерно 5 мА при 5 В питания, т. е. для серии 561 при низких напряжениях питания ограничительных резисторов не требует. Но та же серия при напряжениях питания 9 В и выше, и тем более серии быстродействующей КМОП, которые гораздо мощнее по выходу, могут перегружать защитные диоды. Тем не менее, как мы знаем, у диодов достаточно высокая перегрузочная способность, если только они не перегреваются, поэтому короткие импульсы им все равно не страшны. Так что при больших выдержках времени или при низких частотах при большом напряжении питания такой резистор лучше поставить, а в остальных случаях можно без него обойтись.
Триггеры, регистры и счетчики
Триггеры и построенные на их основе счетчики и регистры играют огромную роль в электронике. В состав любого процессора, кроме собственно АЛУ на основе комбинационной логики (рассмотренных в главе 15 сумматоров), входят регистры и память, которые являются прямыми родственниками счетчиков, — потому что для построения и тех и других используются триггеры. Вот со знакомства с классическими типами триггеров мы и начнем.
Между прочим, одно из главных «неэлектронных» значений слова «trigger» — спусковой крючок у огнестрельного оружия. В электронике триггер — это устройство для записи и хранения информации в количестве одного бита. Существуют и многостабильные триггеры, которые могут хранить более одного бита, но на практике они почти не используются. Любая элементарная ячейка памяти, будь то магнитный домен на пластинах жесткого диска, отражающая область на поверхности CD-ROM, или конденсаторная ячейка электронного ОЗУ, обязательно обладает триггерными свойствами, т. е. может хранить информацию спустя еще долгое время после того, как она была в нее введена.
Самый простой триггер
Самый простой триггер можно получить, если в схемах одновибраторов на рис. 16.7 удалить RC-цепочку и соединить напрямую выход первого элемента со входом второго. Если схема находится в состоянии, при котором на выходе уровень логической единицы, то кратковременная подача отрицательного уровня на вход, как и в случае одновибратора, перебросит выход в состояние логического нуля. Но теперь уже нет конденсатора, который осуществляет отрицательную обратную связь и в конце концов возвращает схему в исходное состояние, потому в таком состоянии схема останется навечно, если мы что-то не предпримем. Чтобы вернуть ее в исходное состояние, надо подать точно такой же сигнал, но на вход второго элемента, который (вход) в схеме одновибратора у нас отсутствует. Если мы его введем, то получим симметричную схему с двумя входами, которые обозначаются буквами R и S (от слов Reset и Set, т. е. «сброс» и «установка»). Само же устройство носит название RS-триггера. Оба варианта такой схемы на элементах «И-НЕ» и «ИЛИ-НЕ» показаны на рис. 16.8.
Рис. 16.8. Схемы триггеров на элементах «И-НЕ» (а) и «ИЛИ-НЕ» (б)
Нет нужды перебирать все состояния этих схем и приводить соответствующие таблицы истинности, нужно только твердо запомнить, что подача импульса на вход R всегда устанавливает на прямом выходе Q состояние логического нуля. (Легко сообразить, что если поменять все обозначения местами: R на S, а прямой выход Q на инверсный Q¯, то в схеме ничего не изменится.)
Вход S, естественно, здесь означает ровно противоположное — установку выхода Q в состояние логической единицы, но, в отличие от входа R, который всегда означает обнуление, вход S в различных устройствах может использоваться и в несколько иных целях, а чаще вообще отсутствует. Входы R и S могут управляться различными полярностями сигнала в зависимости от построения триггера: для схемы на элементах «И-НЕ» по рис. 16.8, а — это низкий уровень, поэтому входы R и S обозначены с инверсией. Уровни, которые меняют состояние триггера, называются активными, — так, для схемы по рис. 16.8, а активным является низкий уровень. «Более правильная» схема в этом смысле — на элементах «ИЛИ-НЕ» по рис. 16.8, б, в ней активный уровень соответствует положительной логике, т. е. он высокий. Обратите внимание, что установка дополнительных инверторов по входу, казалось бы, превращает схему по рис. 16.8, а в схему по рис. 16.8, б, но только в смысле полярности активных уровней, прямой и инверсный выходы при этом останутся на своих местах.
В схемах RS-триггеров подача активного уровня на R-вход ничего не меняет, если выход Q уже был в состоянии логического нуля, то же самое справедливо для S-входа при выходе в состоянии логической единицы. Однако, пока на соответствующем входе действует напряжение активного уровня, подача активного уровня на второй вход запрещена. Это не означает, что триггер при этом сгорит, просто он потеряет свои триггерные свойства — на обоих выходах установится один и тот же уровень, а после одновременного снятия активного уровня со входов состояние будет неопределенным (точнее, будет определяться тем элементом, который переключится чуть позже другого). Неопределенное состояние будет и после подачи питания, поэтому нужно принимать специальные меры для установки схемы в нужное состояние после включения. Наиболее распространенной такой мерой является подача определенного уровня в начальный момент времени на один из нужных входов с помощью RC-цепочки.
Ввиду практической важности этого способа я приведу варианты соответствующей схемы, несмотря на ее очевидность (рис. 16.9). В них конденсатор в первый момент времени после подачи питания разряжен, и на входе логического элемента оказывается положительный уровень, который устанавливает триггер в состояние логического нуля на выходе Q. Затем конденсатор заряжается, и в дальнейшем RC-цепочка больше не оказывает влияния на работу схемы. Постоянную времени RC лучше выбирать побольше, чтобы к моменту зарядки конденсатора успели пройти все переходные процессы, — на схемах по рис. 16.9 она равна примерно 0,5 мс. Естественно, при этом следует позаботиться, чтобы на «настоящих» RS-входах к моменту окончания заряда конденсатора был неактивный уровень, иначе все пой дет насмарку.
Рис. 16.9. Схемы триггеров с предустановкой при включении питания: на двухвходовых элементах (а) и на трехвходовых элементах (б)
Чтобы избежать нагромождения инверторов, можно в этой схеме использовать трехвходовые элементы (561ЛЕ10), как показано на рис. 16.9, б.
Естественно, RS-триггеры выпускают и в интегральном исполнении (561ТР2 содержит четыре простых RS-триггера). Все более сложные триггеры, а также счетчики в интегральном исполнении, обязательно имеют отдельные асинхронные RS- или хотя бы только R-входы. Причем соответствующий вход у любого устройства, его имеющего — от микропроцессоров до счетчиков — является асинхронным, т. е. вся система обнуляется в момент подачи импульса по входу R, независимо от того, что в этот момент она делает. Говорят еще, что вход Reset — вход обнуления — имеет наивысший приоритет. Именно это происходит, скажем, когда вы нажимаете кнопку Reset на системном блоке вашего компьютера.
Использование RS-триггера является самым кардинальным способом решения проблемы дребезга контактов. Стандартная схема показана на рис. 16.10, а, однако нет никакой нужды городить такую схему с резисторами, относительно которых еще нужно соображать, к чему их подключать (для варианта с «ИЛИ-НЕ» их пришлось бы присоединять к «земле», а не к питанию). На рис. 16.10, б показана упрощенная схема, которая работает точно так же, и при этом в ней можно использовать любые инверторы, в том числе и одновходовые. Общим недостатком схем «антидребезга» как с RS-триггерами, так и с использованием элемента «Исключающее ИЛИ» (см. рис. 15.8, б) является необходимость применения переключающей кнопки с тремя выводами, которых в продаже предлагается гораздо меньше, чем обычных замыкающих и размыкающих с двумя контактами. Попробуйте приспособить двухвыводную кнопку к любой из указанных схем, и вы сами придете к выводу, что это невозможно. Поэтому на практике часто приходится использовать схему «антидребезга» с использованием одновибратора (в том числе реализованного программными способами в микроконтроллерах) — при всех ее недостатках.
Рис. 16.10. Схемы «антидребезга» на RS-триггерах
D-триггеры
D-триггеры получили свое название от слова «delay», что означает «задержка». На самом деле существуют две их разновидности, формально различающиеся только тем, что первая из них управляется уровнем сигнала (статический D-триггер или триггер-защелка), а вторая — фронтом импульса (динамический D-триггер). Фактически же это разные по устройству и области использования схемы.
Для того чтобы отличить статический D-триггер от динамического, мы в обозначении на схеме для первого поставим букву L (от слова «level» — уровень), а для второго — букву «Е» (от слова «edge» — фронт). Эти обозначения не являются общепринятыми, и в дальнейшем мы их использовать не будем, только здесь — для наглядности. Микросхема 561ТМЗ содержит четыре статических триггера-защелки с общим входом синхронизации, а 561ТМ2 — два динамических D-триггера с раздельными дополнительными входами R и S (мы с ней уже знакомы — см. рис. 16.5). Если тип вообще не указывается, то обычно по умолчанию предполагается, что речь идет о динамических D-триггерах.
Статический D-триггер легко получить из RS-триггера путем небольшой модификации его схемы. Если из схемы на рис. 16.11, а исключить вход С (например, объединив входы каждого элемента и превратив их тем самым в простые инверторы), то получится довольно бесполезное устройство, которое на выходе Q будет просто повторять входные сигналы, а на втором выходе, соответственно — выдавать их инверсии. Наличие тактового входа С (от слова «clock», которое в цифровой электронике значит «тактовый импульс») все меняет.
Рис. 16.11. D-триггеры:
а — схема статического D-триггера;
б — схема динамического D-триггера на основе двух статических,
в — счетный триггер на основе динамического D-триггера
Если мы обратимся к диаграммам на рис. 15.8, а, то увидим, что при наличии на этом входе уровня логической единицы входные сигналы будут пропускаться на вход RS-триггера, и схема станет повторять на выходе Q уровни на входе D. Если же мы установим на входе С уровень нуля, то схема немедленно «зависнет» в состоянии выхода, соответствующем входному уровню непосредственно перед приходом отрицательного фронта на вход С, — т. е. запомнит его! Поэтому такой триггер и называют защелкой — при подаче на вход С короткого положительного тактового импульса он как бы «защелкивает» состояние входа. Статический D-триггер можно использовать в качестве буферного регистра для хранения данных — например, результатов счета импульсов на то время, пока идет сам процесс счета. Статическая энергозависимая память (SRAM) также, как правило, использует такие триггеры в качестве элементарных ячеек.
Динамические D-триггеры более универсальны, и область применения у них куда шире, чем у статических. Динамический триггер устроен более сложно. Один из способов построения динамического D-триггера из двух статических показан на рис. 16.11, б. Эта схема работает следующим образом: когда на общем входе С наличествует отрицательный уровень, состояние входа D переписывается на выход первого (слева) триггера, при этом второй триггер заперт. Сразу после положительного фронта на входе С это состояние переписывается во второй триггер и появляется на выходе Q, а первый триггер запирается. Таким образом, запоминание состояния общего D-входа происходит в точности в момент положительного перепада уровней и никогда больше. Если изменить местоположение инвертора и присоединить его ко входу второго триггера, а на первый триггер подавать тактовые импульсы напрямую, то срабатывание станет происходить по отрицательному фронту, и такой тактовый вход будет считаться инверсным. Для того чтобы получить дополнительные входы асинхронной принудительной установки триггера в нулевое и единичное состояние (R- и S-входы), нужно для обоих статических триггеров выходные (правые по схеме рис. 16.11, а) элементы сделать трехвходовыми и объединить соответствующие входы у обоих триггеров. Устанавливать по входам R и S только выходной триггер недостаточно (подумайте почему?).
А на рис. 16.11, в показана самая простая схема счетного триггера на основе динамического D-триггера, уже знакомая нам по рис. 16.5. Из описанного ясно, как она работает, — при каждом положительном перепаде на выход Q будет переписываться состояние противоположного выхода Q¯, т. е. система станет с приходом каждого тактового импульса менять свое состояние на противоположное, в результате чего на выходе мы получим симметричный (независимо от скважности входных импульсов) меандр с частотой, вдвое меньшей, чем входная. Такой триггер можно считать делителем частоты на два или одноразрядным двоичным счетчиком — в зависимости от того, для чего он используется. В отличие от всех остальных типов триггеров (а кроме описанных, распространены еще, например, и так называемые JK-триггеры, но мы их рассматривать не будем), счетные триггеры в интегральном исполнении отдельно не выпускаются (при случае их легко, как вы видели, соорудить, например, из D-триггеров), а выпускаются только готовые многоразрядные двоичные счетчики, из таких триггеров составленные. К рассмотрению счетчиков мы перейдем чуть позднее, а пока кратко остановимся на регистрах.
Регистры
Регистрами называют устройства для хранения одного двоичного числа. Количество разрядов в регистрах, выпускаемых отдельно, обычно не превышает восьми, но в составе других микросхем могут быть и регистры с большей разрядностью — вплоть до 128 или 256 битов в «продвинутых» микропроцессорах. Большинство типов электронных запоминающих устройств, вообще говоря, можно рассматривать как совокупность регистров. Но собственно регистры, как входящие в состав процессоров, так и выпускаемые отдельно, отличаются тем, что позволяют не только записывать и считывать информацию, но и производить некоторые простейшие операции, — например, сдвиг разрядов.
Простейший регистр — это упомянутый ранее статический D-триггер. Четыре таких триггера, входящих в микросхему 561ТМЗ, образуют четырехразрядный регистр с параллельной записью и считыванием, причем тактовый вход в этой микросхеме у всех четырех разрядов общий. Как и сам триггер, такой регистр называют «защелкой».
Если регистр-защелка позволяет осуществлять только параллельную запись, то последовательный регистр (пример — 561ИР2), наоборот, имеет возможность записи только через один вход, который является D-входом самого младшего разряда. Последовательный регистр является неким обобщением конструкции D-триггера. Работу динамического D-триггера можно рассматривать, как процесс сдвига информации от входа через первый триггер ко второму при поступлении соответствующих перепадов на тактовом входе. В последовательном регистре, который в простейшем случае представляет собой просто последовательное соединение таких триггеров, происходит нечто подобное — с каждым фронтом тактового импульса информация сдвигается от младшего разряда к старшему, при этом в младший разряд записывается состояние входа. Считывать информацию при этом можно из каждого разряда в отдельности, как и в случае регистра-защелки. Такие регистры получили еще название сдвиговых. Они широко используются для последовательного ввода и вывода информации — скажем, для вывода восьми битов через последовательный порт RS-232 достаточно записать их в такой регистр, а потом подать на него восемь тактовых импульсов с нужной частотой.
Сдвиговый регистр можно закольцевать — соединить выход старшего разряда со входом младшего и получить нечто подобное слону из анекдота, который засунул хобот себе в известное место. Однако в случае одного сдвигового регистра такое соединение приведет к тому же результату, что и для слона, т. е. оно довольно бесполезно практически, ибо мы без дополнительных ухищрений запись информации производить уже не сможем. Поэтому используют объединение параллельной и последовательной записи/считывания в одном устройстве (пример — четырехразрядный регистр 561ИР9 или восьмиразрядный 561ИР6).
* * *
Заметки на полях
Такие сдвиговые регистры с параллельной записью и последовательным считыванием информации — неотъемлемая часть устройств памяти большой емкости, без них чтение и запись в большие массивы запоминающих ячеек были бы невозможны. Имеются они, например, в матрицах цифровых камер. Интересное применение таких регистров — организация последовательного интерфейса SPI, широко используемого для скоростного обмена информацией между различными микросхемами (например, между энергонезависимой памятью вроде флэш-карточек и микроконтроллером).
В SPI наличествуют два восьмибитовых регистра, соединенных в кольцо входами/выходами, но они разделены пространственно: один регистр находится в одном устройстве, другой — в другом. Если подавать тактовые импульсы на оба регистра одновременно (это осуществляет одно из устройств — ведущее), то после подачи ровно 8 импульсов устройства обменяются содержимым своих регистров.
* * *
Счетчики
Самый простой счетчик можно получить, если соединить последовательно ряд счетных триггеров, как показано на рис. 16.12, а. У этой схемы есть две особенности. В первой из них легко разобраться, если построить диаграмму работы такого счетчика, начиная с состояния, в котором все триггеры находятся в состоянии низкого уровня на выходе («0000»). В самом деле, при подаче первого же импульса триггеры перейдут в состояние со всеми единицами («1111»)! Если строить диаграмму дальше, то Мы увидим, что последовательные состояния будут такими: «1110», «1101» и т. д. В этом легко узнать последовательный ряд чисел 15, 14, 13 — т. е. счетчик получился вычитающим, а не суммирующим.
А как можно получить суммирующий счетчик? Очень просто — надо ко входу каждого следующего триггера подсоединить не прямой выход предыдущего, а инверсный. Порядка ради можно тактовые импульсы подавать также через инвертор (рис. 16.12, б), тогда все разряды счетчика, включая самый младший, будут срабатывать по заднему (отрицательному) фронту входного импульса, а не по переднему (у «настоящих» счетчиков тактовый вход и делается инверсным). В этом случае будет все в порядке — входные импульсы будут суммироваться (см. диаграмму) и мы получим ряд последовательных состояний: «0000», «0001», «00010», «0011» и т. д.
* * *
Заметки на полях
Удивительная все же штука — электроника! Сначала мы получили полную аналогию между абстрактной математической теорией и состояниями переключателей на реле, теперь вот — между не менее абстрактным арифметическим счетом и последовательными состояниями счетчика на триггерах. Чем этот счетчик отличается от дикаря, раскладывающего на земле палочки? Ничем, кроме того, что он раскладывает не палочки, а уровни напряжений, причем выгодно отличается от первобытного сознания тем, что еще и «владеет» позиционной системой счисления. Начинаешь понимать, почему ученые середины прошлого века были так обольщены возможностями электронных схем, что даже заговорили о «машинном разуме». Но это уже другая тема…
* * *
Однако у счетчиков, построенных по такой простейшей схеме, есть один крупный недостаток, которого мы отчасти касались в этой главе. А именно — переключение триггеров происходит асинхронно, сигнал от входа должен пройти всю цепочку, пока на выходе также изменится уровень. Эти, казалось бы, незначительные задержки могут, однако, привести к существенным неприятностям вроде возникновения лишних «иголок» при дешифрировании состояний выхода. А при больших частотах входных импульсов, на пределе возможностей логических элементов, фронты сигналов на выходах могут приобрести совершенно хаотическое расположение относительно входного сигнала, так что дешифрировать состояние счетчика будет невозможно. Поэтому большинство счетчиков в интегральном исполнении делают по иным, синхронным, схемам, когда входной тактовый сигнал подается одновременно на все разряды, и фронты выстраиваются строго «по линеечке», независимо от задержек в том или ином триггере. Подробно изучать синхронные схемы мы не будем, т. к. самим нам их строить не придется, а здесь рассмотрим пару конкретных типов серийно выпускаемых счетчиков.
Рис. 16.12. Схемы асинхронных счетчиков на D-триггерах:
а — вычитающего; б — суммирующего
Первый из счетчиков, который мы рассмотрим подробно, — 561ИЕ10. Микросхема содержит два одинаковых четырехразрядных синхронных счетчика в одном корпусе. Разводка выводов ее показана на рис. 16.13, а, где вроде бы все понятно, кроме назначения вывода Е. Каждый четырехразрядный счетчик, входящий в состав этой микросхемы, работает так: если на выводе Е присутствует напряжение высокого уровня, то счетчик будет переключаться по положительному фронту на входе С.
Однако это касается только первого триггера, все остальные станут работать в соответствии с диаграммой по рис. 16.12, б, т. е. счетчик будет суммировать импульсы. Вывод Е тут является разрешающим («enable») для тактового входа С.
Однако если оставить на входе С напряжение логического нуля, а тактовые импульсы подавать на вход Е, то счетчик будет срабатывать от отрицательного перепада напряжений на этом входе, т. е. диаграмма его окажется в полном соответствии с диаграммой на рис. 16.12, б. В этом варианте вход С будет разрешающим для входа Е. Как видите, можно было бы поменять обозначения Е и С местами, однако в этом случае их следует дополнить знаком инверсии. Поэтому если вы хотите каскадировать два счетчика из этой микросхемы, получив в результате один восьмиразрядный счетчик, то выход Q3 первого счетчика нужно присоединить именно ко входу Е второго, подав на вход С потенциал логического нуля. Учтите, однако, что при этом обе половинки результирующей конструкции (старшая и младшая тетрады) станут работать асинхронно относительно друг друга, и срабатывание четырех старших разрядов будет происходить позднее, чем срабатывание младших.
Рис. 16.13. Разводка выводов счетчиков 561ИЕ10 (а) и 561ИЕ11 (б); организация автоматической предустановки счетчиков типа ИЕ11 (в)
Вывод обнуления R обозначен без инверсии, что означает установку всех разрядов в состояние 0 при подаче высокого уровня на этот вход. Пока этот уровень присутствует, счетчик будет игнорировать любые изменения на тактовых входах. Максимальная рабочая частота микросхемы ИЕ10 при напряжении питания 5 В — 1,5 МГц, минимальная длительность импульса сброса — 250 нс. Кстати, при составлении таблицы в приложении 4 я с некоторым трудом разыскал для нее быстродействующий аналог, и соответствие счетчика 74хх393 (ИЕ19) микросхеме 561ИЕ10 неполное: хотя у них даже совпадают основные выводы корпуса, но ИЕ10 выпускается в корпусе с 16-ю выводами, а 74хх393 — с 14-ю. Отсутствующие в аналоге два вывода у ИЕ10 выполняют как раз функцию разрешения счета Е для двух половинок микросхемы, т. е. в аналоге он отсутствует, а входы тактовых импульсов С — инверсные.
Счетчик 561ИЕ11 более универсален, и управляющих выводов у него значительно больше, поэтому в 16-выводном корпусе умещается только один четырехразрядный счетчик. Разводка и обозначение выводов для него показаны на рис. 16.13, б. Не правда ли, можно запутаться? Однако на самом деле все гораздо проще, чем выглядит.
Если на выводах R, SE, Р¯вх присутствуют низкие уровни напряжения, а на входе U/D¯ — высокий, то счетчик считает по положительному фронту на входе С, в точности так же, как это делает половинка ИЕ10 при высоком уровне на входе Е. Разберемся с действием остальных входов. Со входом обнуления R все понятно — при подаче на него высокого уровня все обнуляется. Вход U/D¯ служит для реверсии (потому такой счетчик еще называется реверсивным) — если на него подать напряжение логического нуля, то счетчик будет не суммировать, а вычитать, подобно тому, как это делает счетчик, показанный на рис. 16.12, а.
Самый интересный — вход SE («set enable» — разрешение установки). Если на него подать напряжение логической единицы, то в триггеры счетчика запишутся значения, установленные на входах S0-S3. Возможность такой параллельной предустановки значительно расширяет возможности счетчика. А вход и выход переноса Р¯вх и Р¯вых предназначены для каскадирования счетчиков — для получения синхронного (в отличие от ИЕ10) счетчика большей разрядности, надо входы С у всех микросхем объединить, а выход Р¯вых предыдущего счетчика соединить со входом Р¯вх следующего. У самого первого счетчика, естественно, Р¯вх присоединяется к «земле».
Сколько удовольствия можно получить от этой схемы! Я покажу только один из вариантов того, как ее использовать. Наличие возможности предустановки произвольного значения позволяет соорудить из этой микросхемы счетчик с любым коэффициентом деления входной частоты (в пределах емкости исходного счетчика) — если используется один корпус ИЕ11, то это значения от 1 до 16. В самом деле, если счетчик считает в стандартном режиме, то частота на выходах Qx будет равна входной, поделенной на 2, 4, 8 и 16. Принцип установки другого коэффициента проще всего показать на примере обратного (вычитающего) режима счета.
Арифметика тут простая: предположим, мы установили на входах предустановки число 3 (0011) и организовали схему так, чтобы в состоянии, когда все выходы Qi равны нулю, это число каждый раз записывалось бы в счетчик. Поскольку режим вычитающий, то при подаче тактовых импульсов на вход счетчик будет последовательно проходить состояния: предустановка (0011) — фронт тактового импульса (0010) — фронт тактового импульса (0001) — фронт тактового импульса (0000) — предустановка (0011) и т. д. То есть после каждых трех тактовых импульсов счетчик будет возвращаться в исходное состояние (если предустановки нет, то он это делает после каждых 16 импульсов).
Таким образом мы получили коэффициент деления, равный 3. Можно резюмировать: в вычитающем режиме коэффициент деления будет такой, каково число на входах предустановки. А что будет, если запустить счетчик в обычном режиме, суммирующем? Нетрудно подсчитать, что коэффициент деления при этом будет равен разности между максимально возможным коэффициентом (16) и установленным числом (3) — в данном случае 13.
Я так подробно на этом останавливаюсь, кроме всего прочего, еще и потому, что счетчики-таймеры в микропроцессорных системах (и в составе микроконтроллеров типа AVR, и в других микроконтроллерах, и системный счетчик в IBM PC, который без изменений воспроизводится во всех системах от Intel) работают совершенно аналогично ИЕ11. И для того чтобы успешно программировать микроконтроллерные системы, необходимо очень хорошо понимать принцип их работы, — без таймеров микроконтроллеры, можно сказать, вообще не нужны. Но в микроконтроллерах все остальное за нас уже сделали, а если вернуться к обычной интегральной логике, то сразу встают два вопроса. Первый их них звучит так: а откуда, собственно, считывать эту поделенную частоту?
При использовании вычитающего режима считывать частоту придется с того выхода счетчика, который соответствует реальной разрядности делителя, — по расписанной «диаграмме» видно, что в случае коэффициента, равного 3, старшие разряды вообще не используются. Это приемлемо, если мы хотим иметь раз и навсегда установленный коэффициент, но в общем случае неудобно — если коэффициент по ходу дела меняется. Поэтому нужно либо использовать суммирующий режим, при котором старший разряд всегда задействован, и результирующая частота снимается именно с него (например, при приведенных значениях счетчик будет все время считать от 3 до 15), либо… либо есть еще одна возможность, для знакомства с которой придется ответить сначала на второй вопрос: как организовать предустановку значения счетчика каждый раз при достижении им состояния «0000»?
Схема на рис. 16.13, в демонстрирует, как можно это сделать (это не единственный вариант, но нам подойдет). Диаграмма работы схемы (справа) показана, начиная с момента, когда вот-вот должен прийти такт, при котором счетчик установится в состояние «0000». В любом другом состоянии на входе четырехвходового элемента «ИЛИ-НЕ» присутствует хотя бы одна единица и на выходе его, соответственно, логический ноль. Выход же элемента «И-НЕ» пребывает по этой причине в состоянии логической единицы, а на входе SE — логический ноль, как и положено при счете.
Как только с очередным положительным тактовым перепадом счетчик установится в состояние «0000», то на выходе элемента «ИЛИ-НЕ» появится логическая единица. Поскольку тактовый импульс пропускается через инвертор, то на нижнем по схеме входе «И-НЕ» в этот момент логический ноль, и на выходе его по-прежнему единица. И только после отрицательного перепада на тактовом входе С (который для остальной схемы является нерабочим) на обоих входах «И-НЕ» установится логическая единица, на выходе — логический ноль, и на SE появится, наконец, долгожданный высокий уровень, разрешающий запись значений, установленных по входам S0-S3. Как только запись произойдет, все немедленно отработает назад, т. к. на выходе «ИЛИ-НЕ» высокого уровня уже не будет. Импульс на входе SE окажется очень кратковременным, но нам длиннее и не надо.
Легко сообразить, что частота положительных импульсов на выходе «ИЛИ-НЕ» (либо коротких импульсов перезаписи на входе SE) как раз в точности равна частному от деления входной частоты на установленный коэффициент. И ее в этом качестве использовать удобнее, чем выходы разрядов, потому что не нужно гадать, с какого разряда снимать частоту при вычитающем режиме. Если поставить многопозиционный переключатель, меняющий код на входах предустановки S0-S3, то можно получить счетчик с изменяемым коэффициентом деления от 1 до 16.
Микросхема 561ИЕ14 полностью аналогична ИЕ11, за исключением того, что у нее есть еще вход переключения двоичного/десятичного счета B/D. Так как все выводы 16-выводного корпуса у ИЕ11 заняты, для этого пришлось пожертвовать входом R, вместо которого имеется вывод B/D. Если на этом входе напряжение низкого уровня, счетчик ИЕ14 считает в двоично-десятичном коде, если высокого — становится полностью аналогичным ИЕ11. Постойте, а как же его обнулять, если вход R отсутствует? Очень просто — надо подать на все входы предустановки S0-S3 потенциал «земли», а импульс обнуления подавать на вход SE вместо R.
Цифровой лабораторный генератор
Напоследок мы рассмотрим одну практическую схему на счетчиках. Это давно обещанный (см. главы 2 и 12) цифровой лабораторный генератор, для которого нам придется использовать еще один тип счетчика, «заточенного» для работы именно в качестве делителя частоты.
Счетчик 561ИЕ16, который мы здесь применим, ничего особенного не представляет и является простым асинхронным счетчиком, подобным показанному на рис. 16.12, б. Мы могли бы спокойно соорудить его сами из отдельных триггеров, но для этого их понадобилось бы целых 14 штук (т. е. семь корпусов типа ТМ2). А микросхема 561ИЕ16 в 16-выводном корпусе не только заключает в себе 14-разрядный счетчик, но и включает специальные буферные усилители по выходу каждого каскада деления, для того, чтобы случайная перегрузка одного каскада внешней нагрузкой не привела к остановке всех последующих. Кроме выходов Q0-Q13, наружу выведен вход тактовых импульсов С и вход сброса R.
Позвольте, спросите вы, но ведь еще два вывода заняты под питание, так что из 16 выводов на выходы Qx приходится всего 12, а не 14, откуда же взять еще два?
Разработчики пошли по пути наименьшего сопротивления — почему-то вместо того, чтобы использовать корпус, например, DIP-20 (заодно еще и вход S вывести, и еще что-нибудь, например, поставить буферный усилитель для входной частоты), они просто исключили выходы второго и третьего каскадов Q1 и Q2. Ну, да ладно, обойдемся и тем, что дают.
Итак, с помощью этого счетчика мы получим генератор, который выдает 13 значений частоты (считая входную), каждая в два раза меньше предыдущей, за исключением небольшого «провала» — частоты с коэффициентом 4 и 8 будут отсутствовать. Чтобы получить при этом самые низкие частоты, кратные целым, без дробных частей, значениям, выраженным в герцах, нужно на входе использовать генератор с частотой, равной какой-нибудь степени двойки. Генератор можно, конечно, соорудить по одной из приведенных ранее схем мультивибраторов, но это не есть приемлемое решение для лабораторного прибора. Для цифрового генератора в данном случае важна именно стабильность частоты, т. к. мы собираемся испытывать с его помощью разные измерительные схемы — это одна из главных причин, почему лучше сделать для себя такой генератор, а не использовать аналоговые серийные приборы с плавной перестройкой частоты. Есть, разумеется, в продаже и точные цифровые генераторы промышленного производства, но они на много порядков дороже того, что мы можем соорудить на двух микросхемах и пяти навесных деталях, — как говорится, одним взмахом паяльника. И при этом функциональность полученного генератора будет перекрывать наши потребности если и не на все 100 %, то по крайней мере на 99 % совершенно точно — исключая редкий случай потребности в частотах порядка мегагерц.
Мы возьмем тот самый кварц, который в народе называют «часовым» (см. разд. «Кварцевые генераторы» ранее в этой главе). Он имеет частоту 32 768 Гц, что есть 215. Чаще всего такие резонаторы встречаются в продаже в малогабаритном цилиндрическом корпусе 8x3 мм, они без проблем работают при напряжениях питания до 12–15 В. Отечественный РК-206 имеет еще меньший корпус 6x2 мм, но и рассеиваемая мощность у него меньше, так что с ним лучше ограничиться напряжением питания 3–6 В.
Пристроив к такому генератору двоичный счетчик из пятнадцати ступеней, мы получим на выходе частоту ровно 1 Гц, которую можно использовать для отсчета времени в привычных нам секундах. Однако на одном счетчике ИЕ16 мы 1 Гц все равно не получим, ибо разрядов у нас только 14, поэтому придется ставить дополнительные делители. Кроме того, длительность положительного или отрицательного импульса с частотой 1 Гц, полученной на выходе счетчика, составляет не секунду, а полсекунды, так что для получения интервала («ворот») длительностью в 1 секунду придется поделить частоту еще раз пополам. Кстати, немаловажной и очень удобной особенностью нашего генератора будет то, что частоты будут точно (ну, почти точно, т. к. счетчик асинхронный) сфазированы, что позволит нам получать импульсы разной скважности, если использовать дополнительные логические элементы.
Сама схема представлена на рис. 16.14. Как видите, она крайне проста, и сборка требует только аккуратности при отсчете выводов микросхем. Если хотите еще упростить схему, то удалите дополнительный счетчик на DD3, тогда придется обходиться минимальной частотой 2 Гц (но не забудьте, что остаются свободные элементы «И-НЕ», и их входы надо присоединить к «земле»). Схему следует собрать на макетной плате и вывести все четырнадцать значений частоты на ее край, оформив в виде клеммника с соединениями под винт. Внешний вид такого клеммника показан на рис. 16.14 сбоку. Клеммники бывают разной конструкции и разных размеров, а также с дюймовым (5,08 мм) или метрическим (5 мм) шагом между выводами, сдвоенные (как на рисунке), строенные или счетверенные, но все отличаются тем, что их можно соединять друг с другом в одну линейку наподобие деталей конструктора «Лего», получая таким образом клеммники с любым количеством выводов. Естественно, каждую клемму следует надписать, чтобы не заниматься каждый раз отсчетом выводов.
Рис. 16.14. Схема цифрового лабораторного генератора
Да, а питание? Отдельного блока питания для этой конструкции делать вовсе не надо. Потребляет вся схема около 150–200 мкА при напряжении питания 5 В, при 15 В потребление возрастает до 1,5 мА. А так как 561-я серия безупречно работает при питании от 3 до 15 В (и менять ее на быстродействующие аналоги в этой конструкции не следует), то целесообразно питать генератор от того же напряжения, что и испытываемые схемы, чтобы сразу получить нужные логические уровни. В случае чего схему несложно запитать от лабораторного источника.
На плату можно отдельно поставить еще одну микросхему с логическими элементами (ЛА7 или ЛЕ5) — они позволят собирать выходы счетчика для получения нужной скважности и для разных других целей. Можно добавить к схеме и ключевой транзистор, т. к. довольно часто приходится подключать различные мощные нагрузки вроде динамика или светодиодов. Если потребуется более высокая частота, то «часовой» кварц можно просто заменить другим резонатором частотой до 1 МГц. В общем, творите, как сумеете.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОК