Занимательная микроэлектроника — страница 46 из 117

а это низкий уровень, потому входы R и S обозначены с инверсией, согласно положительной логике (уровни, которые меняют состояние триггера, называются активными, так, для схемы по рис. 9.6, а активным является низкий уровень). «Более правильная» схема в этом смысле — на элементах «ИЛИ-НЕ» по рис. 9.6, б, где активный уровень — высокий.

В схемах RS-триггеров подача активного уровня на R-вход ничего не меняет, если выход Q уже был в состоянии логического нуля, то же самое справедливо для S-входа при выходе Q в состоянии логической единицы. Однако пока на соответствующем входе действует напряжение активного уровня, подача активного уровня на второй вход запрещена. Это не означает, что триггер при этом сгорит, просто он потеряет свои триггерные свойства — на обоих выходах установится один и тот же уровень, а после одновременного снятия активного уровня со входов состояние будет неопределенным (точнее, будет определяться тем элементом, который переключится чуть позже другого).

Неопределенное состояние будет и после подачи питания, поэтому следует принимать специальные меры для установки схемы в нужное состояние после включения. Наиболее распространенной такой мерой является подача определенного уровня в начальный момент времени на один из требуемых входов с помощью RC-цепочки. Ввиду практической важности этого способа я приведу вариант соответствующей схемы, несмотря на ее очевидность (рис. 9.7, а). Лишние элементы необходимы для того, чтобы сохранить возможность произвольного сброса по отдельному R-входу, хотя на практике часто входы внешнего сброса и сброса по питанию объединены.



Рис. 9.7.Схемы триггеров с предустановкой при включении питания


В этой схеме конденсатор в первый момент времени после подачи питания разряжен и на входе логического элемента оказывается положительный уровень, который устанавливает триггер в состояние «О» на выходе Q. Затем конденсатор заряжается и в дальнейшем RC-цепочка больше не оказывает влияния на работу схемы. Постоянную времени RC лучше выбирать побольше, чтобы к моменту зарядки конденсатора успели пройти все переходные процессы, на схемах по рис. 9.7 она равна примерно 0,5 мс. Естественно, при этом следует позаботиться, чтобы на «настоящих» RS-входах к моменту окончания заряда конденсатора был неактивный уровень, иначе все пойдет насмарку. Чтобы избежать нагромождения элементов, в этой схеме предпочтительнее использовать трехвходовые элементы (561 ЛЕЮ), как показано на рис. 9.7, б.

Естественно, RS-триггеры выпускают и в интегральном исполнении (561ТР2 содержит четыре простых RS-триггера). Все более сложные триггеры, а также счетчики в интегральном исполнении обязательно имеют отдельные R-, S- или хотя бы только R-асинхронные входы.

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



Рис. 9.8. Схемы «антидребезга» на RS-триггерах


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


D-триггеры

D-триггеры получили свое название от слова «delay», что означает «задержка». На самом деле их существует две разновидности, формально различающиеся только тем, что первая (статический D-триггер или триггер-защелка) управляется уровнем сигнала, как и все схемы, рассмотренные ранее, а вторая (динамический D-триггер) управляется фронтом импульса. Фактически же это разные по устройству и области применения схемы, потому объединение их под одним названием представляется не совсем удачным. Так, микросхема 561ТМЗ содержит четыре статических триггера-защелки, а ТМ2 — два динамических D-триггера с дополнительными входами R и S. Если тип не указывается, то обычно по умолчанию предполагается, что речь идет о динамических D-триггерах.

Статический D-триггер легко получить из RS-триггера путем небольшого усложнения его схемы (рис. 9.9, а). При наличии на входе С уровня логической единицы входные сигналы будут пропускаться на вход RS-триггера и схема будет повторять на выходе Q уровни на входе D. Если же мы установим на входе С уровень логического нуля, то схема немедленно «зависнет» в состоянии выхода, соответствующем входному уровню непосредственно перед приходом отрицательного фронта на вход С — то есть запомнит его! Поэтому такой триггер и называют защелкой — при подаче на вход С короткого тактового импульса он как бы «защелкивает» состояние входа.



Рис. 9.9. D-триггеры:

а — схема статического D-триггера; б — схема динамического D-триггера на основе двух статических; в — счетный триггер на основе динамического D-триггера


Динамические D-триггеры более универсальны и область применения у них куда шире, чем у статических. Динамический триггер сложнее по устройству. Один из способов построения динамического D-триггера из двух статических показан на рис. 9.9, б. Эта схема работает следующим образом: когда на общем входе С присутствует отрицательный уровень, состояние входа D переписывается на выход первого (слева) триггера, при этом второй триггер заперт. Сразу после положительного фронта на входе С это состояние переписывается во второй триггер и появляется на выходе Q, а первый триггер запирается. Таким образом, запоминание состояния общего D-входа происходит в точности в момент положительного перепада уровней и никогда больше. Если изменить местоположение инвертора и присоединить его ко входу второго триггера, а на первый триггер подавать тактовые импульсы напрямую, то срабатывание будет происходить по отрицательному фронту и такой тактовый вход будет считаться инверсным. Для того чтобы получить дополнительные входы принудительной установки триггера в нулевое и единичное состояния (R- и S-входы), нужно оба статических триггера реализовать на трехвходовых элементах и объединить соответствующие входы у обоих триггеров — устанавливать по входам R и S только выходной триггер недостаточно (подумайте, почему?).


Счетный триггер

На рис. 9.9, в показана самая простая схема счетного триггера на основе динамического D-триггера. Из сказанного ясно, как она работает: при каждом положительном перепаде на выход Q будет переписываться состояние противоположного выхода Q¯, т. е. с приходом каждого тактового импульса система изменяет свое состояние на противоположное, в результате чего на выходе сформируется симметричный (независимо от скважности входных импульсов) меандр с частотой, вдвое меньшей, чем входная. Такой триггер можно считать делителем частоты на два или одноразрядным двоичным счетчиком — в зависимости от того, для чего он используется. В отличие от всех остальных типов триггеров (а кроме описанных, распространены еще и т. н. JK-триггеры, на которых мы здесь не останавливаемся), счетные триггеры в интегральном исполнении отдельно не выпускают (их легко получить, например, из D-триггеров), а изготавливают только готовые многоразрядные двоичные счетчики, из таких триггеров составленные. К рассмотрению счетчиков мы перейдем чуть далее, а пока кратко остановимся на регистрах.


Регистры

Регистрами называют устройства для хранения двоичных чисел. Количество разрядов в регистрах, выпускаемых отдельно, обычно не превышает восьми, но в составе других микросхем могут быть и регистры с большей разрядностью — вплоть до 128 бит в процессорах типа Pentium или Athlon.

Простейший одноразрядный регистр— это описанный в предыдущем разделе статический D-триггер. Большинство регистров в микроконтроллерах, а также ячеек статической памяти (SRAM) представляют собой именно такие триггеры-защелки. Вообще большинство типов электронных ЗУ, за исключением таких устройств, как магнитные или оптические диски, можно рассматривать как совокупность регистров. Например, четыре триггера-защелки, входящие в микросхему 561ТМЗ, образуют четырехразрядный регистр с параллельной записью и считыванием, причем тактовый вход в этой микросхеме у всех четырех разрядов общий. Как и сам триггер, такой регистр называют защелкой.

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

Последовательный регистр является неким обобщением конструкции D-триггера. Работу динамического D-триггера можно рассматривать, как процесс сдвига информации от входа через первый триггер ко второму при поступлении соответствующих перепадов на тактовом входе. В последовательном регистре, который в простейшем случае представляет собой просто соединение таких триггеров друг за другом, происходит нечто подобное: с каждым фронтом тактового импульса информация сдвигается от младшего разряда к старшему, при этом в младший разряд записывается состояние входа. Считывать (и записывать) информацию при этом обычно можно и из каждого разряда в отдельности, как и в случае регистра-защелки, и через единый последовательный вход и выход. Такие регистры получили еще название сдвиговых (пример — 561ИР2). Они широко используются для последовательного ввода и вывода информации. Скажем, для вывода восьми бит через последовательный порт RS-232 достаточно записать их в такой регистр, а потом подать на него восемь тактовых импульсов с нужной частотой (см.