Глава 8. Цифровая логика

8.4. Триггеры и схемы с памятью

Как схема запоминает бит: RS-защёлка из двух вентилей и борьба с дребезгом кнопок; защёлки, двухступенчатые и фронтовые D- и JK-триггеры, окно установления и удержания, делители частоты и пульсирующие счётчики; синхронные автоматы, их запрещённые состояния и диаграммы переходов; синхронизаторы асинхронных сигналов, гонки и короткие ложные импульсы.

≈ 51 мин чтения · пунктирное подчёркивание — наведите или нажмите, чтобы увидеть пояснение

8.4.1Устройства с памятью: триггеры

≈ 10 мин1 упр.
Главное
  • Пара вентилей И-НЕВентиль И-НЕ: на выходе низкий уровень, только когда все входы высокие. В КМОП — n-канальные ключи последовательно, p-канальные параллельно., замкнутых друг на друга крест-накрест, может стоять в одном из двух устойчивых положений — это ячейка на один бит.
  • Кратковременный НИЗКИЙ уровень на записывает , на — стирает в ; пока оба входа ВЫСОКИЕ, бит хранится.
  • Кнопка или тумблер с перекидным контактом, подключённые к такой защёлке, дают выход совсем без дребезгаМногократное замыкание и размыкание механических контактов в течение ~1 мс после переключения — от 10 до 100 «отскоков»..
  • Активировать S и R одновременно нельзя: пока они активны, выходы перестают быть взаимно инверсными, а после снятия результат случаен.

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

Два устойчивых состояния

Возьмём два вентиля И-НЕ и подадим выход каждого на один из входов другого (схема ниже). Свободные входы и пока держим ВЫСОКИМИ. Что окажется на выходах и ?

Попробуем угадать. Допустим, . Тогда у нижнего вентиля ВЫСОКИЕ оба входа (и , и ), и его выход равен Н. Этот НИЗКИЙ приходит на верхний вентиль, а у И-НЕ достаточно одного НИЗКОГО входа, чтобы на выходе была единица, то есть . Предположение подтвердилось само. Но схема симметрична, и точно так же проходит проверку и противоположный вариант: , . А вот вариантов «оба В» и «оба Н» при ВЫСОКИХ и быть не может: каждый из них сразу противоречит работе вентилей.

Итак, у схемы два равноправных устойчивых состояния, её называют бистабильной. Какое из них установлено, зависит от того, что с ней происходило раньше. Это и есть память. Записать в неё значение очень просто: достаточно на мгновение опустить один из свободных входов. Короткий НИЗКИЙ импульс на заставляет верхний вентиль выдать единицу, и после импульса схема остаётся в состоянии , , откуда бы она ни начинала. Импульс на точно так же даёт противоположное состояние.

A (~S)B (~R)&&X (Q)Y (~Q)www.reknow.ru1Верхний И-НЕ. НИЗКИЙ уровень на его свободном входе поднимает — запись единицы2Нижний И-НЕ. НИЗКИЙ уровень на поднимает , то есть записывает ноль3Перекрёстные связи. каждый вентиль держит другой: пока оба свободных входа ВЫСОКИЕ, состояние подпитывает само себя
RS-защёлка из двух элементов И-НЕ. Её входы срабатывают от НИЗКОГО уровня, поэтому их обозначают с чертой: S̅ и R̅.
Что здесь что (3)
  1. Верхний И-НЕ. НИЗКИЙ уровень на его свободном входе поднимает — запись единицы
  2. Нижний И-НЕ. НИЗКИЙ уровень на поднимает , то есть записывает ноль
  3. Перекрёстные связи. каждый вентиль держит другой: пока оба свободных входа ВЫСОКИЕ, состояние подпитывает само себя
Q = 1, Q̅ = 0Q = 0, Q̅ = 1неустойчиво (метастабильно)импульс R̅www.reknow.ru
Триггер похож на шарик на дне одной из двух лунок: сам он оттуда не выкатится, перебросить его в соседнюю лунку может только толчок — входной импульс. Если толчок слишком слабый или пришёл не вовремя, шарик может на какое-то время замереть на гребне. Такое зависание называют метастабильным состоянием.
Как ведёт себя защёлка из двух И-НЕ при разных уровнях на входах.
(A) (B)X (Q)Y ()Что происходит
ВВбит хранится
НВВНзапись 1 (установка)
ВННВзапись 0 (сброс)
ННВВнедопустимо: оба выхода В, после одновременного отпускания — случайный результат

Кнопка, которая «стреляет очередью»

Вот практическая задача, ради которой защёлки ставят на каждой второй плате. Есть поток тактовых импульсов и вентиль И-НЕ, который должен пропускать их на счётчик, пока тумблер разомкнут, и задерживать, когда он замкнут (схема ниже). Тумблер включён между входом вентиля и землёй, а вход подтянут резистором к +5 В.

Почему тумблер замыкает именно на землю, а не на питание? Тому две причины. Первая связана с биполярной ТТЛТранзисторно-транзисторная логика: биполярное семейство, питание +5 В, порог ≈1,3 В, заметный ток покоя. Серии LS, ALS, AS, F.: в НИЗКОМ состоянии из её входа вытекает заметный ток (у серии LS около 0,25 мА), который кто-то должен отвести, а в ВЫСОКОМ состоянии входной ток почти нулевой, так что подтягивающему резистору делать почти нечего. Вторая причина чисто монтажная: земля обычно доступна везде, и все кнопки и переключатели на панели удобно сажать на один общий провод.

Беда в другом. Механический контакт не замыкается одним чистым движением: в первые примерно 1 мс пластины успевают удариться и разойтись, как правило, от 10 до 100 раз. Для человека это мгновение, а для логики со временем переключения в наносекунды это целая серия отдельных включений и выключений. Вместо одного аккуратного перехода на выходе вентиля проскакивают куски тактовой последовательности (временная диаграмма ниже). Если дальше стоит счётчик или сдвиговый регистрСдвиговый регистр, на вход которого заведена сумма по модулю 2 нескольких разрядов, выдаёт псевдослучайную последовательность длиной до тактов — это цифровой генератор шума., он сосчитает каждый такой кусок.

~1 мсдлительность дребезгаПримерно столько контакт «прыгает», прежде чем окончательно сомкнуться.
10–100лишних переключенийКаждое из них для счётчика выглядит как настоящий перепад.
0,25 мАток входа LS в НИЗКОМЕго отводит на землю замкнутый контакт — одна из причин замыкать кнопки на землю.
+5 В10 кОмтакты&Qwww.reknow.ru
Тумблер на землю открывает и закрывает вентиль для тактовых импульсов…
ключвходвыходwww.reknow.ru
…но пока контакт дребезжит, через вентиль проскакивают обрывки тактов (масштаб дребезга преувеличен для наглядности).

Лекарство — переключатель с перекидным контактом (однополюсный на два направления) и та же RS-защёлка (схема ниже). Подвижный контакт заземлён, а два неподвижных подведены к входам и , каждый через свой подтягивающий резистор к питанию. Перекидываем рычаг в положение B: в момент самого первого касания становится НИЗКИМ, и защёлка сбрасывается. Затем контакт отскакивает, и на это время оба входа ВЫСОКИЕ, то есть защёлка просто хранит записанный ноль. Новое касание того же контакта B снова требует сброса, которого уже нечего менять. Чтобы что-то изменилось, подвижный контакт должен коснуться A, а для этого ему нужно пролететь весь зазор. От отскока на такое расстояние он не улетает.

Итог: один переход на выходе на одно переключение, сколько бы раз контакт ни подпрыгнул. Схема настолько распространена, что выпускается готовая микросхема '279 с четырьмя RS-защёлками именно для этой работы. Если же в устройстве есть микроконтроллер, ту же задачу часто решают программно: читают вывод с паузой в несколько миллисекунд. Аппаратная защёлка хороша тем, что срабатывает мгновенно и программе о ней думать не нужно.

Ловушка. Один изъян остаётся и у этой схемы. Тумблер переключается в случайный момент относительно тактов, поэтому первый импульс после разрешения может пройти обрезанным: вентиль открылся, когда импульс уже шёл. С последним импульсом при запрете та же история. Защёлка тут ничем не хуже простого ключа: с ключом без подавления дребезга будет то же самое. Если обрезки недопустимы, нужен синхронизаторТактируемый триггер, приводящий асинхронный внешний сигнал к такту системы., он разобран в последнем пункте этого раздела.
AB+5 В4,7 кОм4,7 кОмк +5 В&&QQwww.reknow.ru1Перекидной контакт. общий вывод на земле; отскочив от B, контакт повисает в воздухе, но до A не достаёт2Подтягивающие резисторы. пока контакт не касается входа, держат его ВЫСОКИМ: «висящий» контакт означает хранение3Защёлка на И-НЕ. первое касание B сбрасывает её, следующие касания того же контакта ничего не меняют4Выход Q. ровно один перепад на одно переключение
Перекидной контакт и RS-защёлка на И-НЕ: выход без дребезга. Рычаг стоит в положении B, поэтому Q НИЗКИЙ.
Что здесь что (4)
  1. Перекидной контакт. общий вывод на земле; отскочив от B, контакт повисает в воздухе, но до A не достаёт
  2. Подтягивающие резисторы. пока контакт не касается входа, держат его ВЫСОКИМ: «висящий» контакт означает хранение
  3. Защёлка на И-НЕ. первое касание B сбрасывает её, следующие касания того же контакта ничего не меняют
  4. Выход Q. ровно один перепад на одно переключение
Модель: дребезг контактов и RS-триггер
Упражнение 8.4.1

Входы и защёлки на И-НЕ управляются двумя выводами микроконтроллера. Пока контроллер стартует после сброса, оба вывода стоят НИЗКИМИ, а потом программа одной командой записи в порт поднимает их одновременно. В каком состоянии окажется защёлка?

Решение

Пока , у каждого вентиля И-НЕ есть НИЗКИЙ вход, и оба выдают единицу: , выходы перестали быть взаимно инверсными. Когда оба входа поднимаются одновременно, каждый вентиль видит на втором входе единицу от соседа и начинает опускать свой выход. Кто опустит первым, тот и выиграет; это решают разброс задержек и шумы. Возможно даже короткое «дрожание» или метастабильноеНеустойчивое промежуточное состояние триггера, когда данные изменились внутри окна установления — удержания: триггер какое-то время «не может решить», в какое состояние перейти. зависание, но в итоге защёлка остановится в одном из двух состояний, и какое это будет, предсказать нельзя. Отсюда правило: не делать S и R активными одновременно, а если без этого не обойтись, строить схему так, чтобы её работа от исхода не зависела. В этом примере достаточно в программе сначала поднять один вывод, а потом другой.

Защёлка на ИЛИ-НЕ и флаги с несколькими входами

Ту же перекрёстную связь можно собрать на вентилях ИЛИ-НЕВентиль ИЛИ-НЕ: на выходе низкий уровень, если высокий хотя бы один вход. В КМОП — n-канальные ключи параллельно, p-канальные последовательно. (схема ниже). Логика у неё зеркальная: активен ВЫСОКИЙ уровень, и единица на любом входе вентиля опускает его выход. Если взять вентили с тремя входами, у каждой половины остаются по два свободных входа. Так получается удобный флаг, который поднимают несколько разных причин и опускают несколько разных команд. Пример: блок защиты зарядного устройства. Флаг ЗАЩИТА взводится по сигналу ПЕРЕГРЕВ от компаратораКомпаратор — схема, которая сравнивает два напряжения и выдаёт логический ответ, какое больше. температуры или по сигналу ПЕРЕГРУЗ от датчика тока и остаётся взведённым, даже когда перегрев прошёл. Снять его может кнопка на панели или команда от микроконтроллера. Подтягивающие резисторы здесь не нужны: все входы приходят с активных логических выходов, а не с механических контактов.

Две разновидности RS-защёлки
Защёлка на И-НЕЗащёлка на ИЛИ-НЕ
Каким уровнем управляетсяНИЗКИМВЫСОКИМ
Бит хранится, когдаоба входа ВЫСОКИЕвсе входы НИЗКИЕ
Недопустимое сочетаниеоба входа НИЗКИЕ, при этом оба выхода ВS и R ВЫСОКИЕ, при этом оба выхода Н
ПЕРЕГРЕВПЕРЕГРУЗКНОПКАСБРОС МК11ЗАЩИТАЗАЩИТАwww.reknow.ru
Флаг защиты на трёхвходовых ИЛИ-НЕ: любая из двух аварий его взводит, любая из двух команд сбрасывает. Активен ВЫСОКИЙ уровень.

8.4.2Тактируемые триггеры

≈ 18 мин2 упр.
Главное
  • Тактируемый триггер смотрит на информационные входы (D или J и K) и меняет выход только по команде тактового входа.
  • Защёлка пропускает вход на выход всё время, пока такт активен; двухступенчатый и фронтовой триггеры реагируют только на перепад такта.
  • Данные должны стоять неизменно не меньше до перепада и после него, иначе триггер может зависнуть в метастабильном состоянии.
  • Триггер в счётном режимеРежим, в котором триггер переключается на каждом такте (JK при J = K = 1, D при D = ) — делитель частоты на 2. делит частоту пополам; цепочка из таких триггеров даёт асинхронный счётчикПульсирующий счётчик: выход каждого триггера тактирует следующий, поэтому разряды меняются не одновременно и возникают ложные коды. на , но с ложными кодами в моменты переходов.

Защёлки из предыдущего пункта называют RS-триггерами (S от set, «установить», R от reset, «сбросить») или асинхронными триггерами. Слово «асинхронный» здесь означает, что выход реагирует на вход сразу, в любой момент, без всякого разрешения.

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

Начнём с простейшего варианта (схема ниже). К знакомой защёлке на И-НЕ добавлены спереди ещё два вентиля И-НЕ, которые работают как ворота: пока ТАКТ НИЗКИЙ, их выходы ВЫСОКИЕ при любых S и R, и защёлка хранит бит. Когда ТАКТ поднимается, ворота открываются, и S и R (теперь уже активные ВЫСОКИМ уровнем) доходят до защёлки. Работу описывает таблица, где — состояние до такта, а — после него:

SRТАКТ&&&&QQwww.reknow.ru
RS-защёлка с разрешающим входом: пара вентилей-«ворот» перед ней пропускает S и R только при ВЫСОКОМ такте.
SR
00
101
010
11неопределённо

Шаг вперёд очевиден: S и R перестали действовать сами по себе, теперь важно, что на них стоит, пока такт разрешает запись. Но присмотритесь к слову «пока». Выход повторяет все движения S и R на протяжении всей единицы такта, а не в какой-то один момент. Если за это время S успеет подняться и опуститься, триггер всё это отработает. Такую схему называют прозрачной защёлкойТактируемый триггер, выход которого повторяет вход всё время, пока такт активен; при неактивном такте хранит последнее значение. (по-английски latch): пока такт активен, она прозрачна, как стекло, и вход виден на выходе насквозь.

У прозрачности есть простое следствие: защёлку нельзя замкнуть саму на себя. Подайте её выход через инвертор обратно на вход, и при открытом такте она начнёт переключаться без остановки, сколько успеет. Чтобы построить счётчик или регистр сдвигаРегистр сдвига — цепочка D-триггеров с общим тактом (выход каждого — на вход следующего): по каждому фронту слово сдвигается на один разряд., нужен триггер, который фиксирует вход в одно мгновение и сразу закрывается. Таких конструкций две: двухступенчатый триггер (схема «ведущий — ведомый») и триггер, запускаемый фронтом. Временная диаграмма ниже показывает разницу.

ТАКТDQ защёлкиQ по фронтуwww.reknow.ru
Один и тот же сигнал D на защёлке и на фронтовом триггере. Защёлка послушно повторяет все изменения D, пока ТАКТ ВЫСОКИЙ, и запоминает то, что было в момент закрытия; фронтовой триггер берёт D только в момент подъёма такта и до следующего подъёма на D не смотрит.

Как поймать одно мгновение: «ведущий — ведомый» и фронтовой триггер

Именно эти два типа встречаются на практике чаще всего. У обоих выход на очередной такт определяется тем, что было на информационных входах ровно в момент перепада тактового сигнала. Готовые триггеры стоят копейки и самому их собирать не приходится, но понимать, что внутри, полезно: это объясняет и их временные ограничения. Возьмём D-триггер, у которого единственный информационный вход D: какой уровень стоит на D в момент перепада, такой и окажется на выходе Q.

Двухступенчатую схему (рисунок ниже) проще всего представить как шлюз на канале с двумя воротами, которые никогда не открываются одновременно. Это две прозрачные защёлки подряд, а такт на вторую подаётся через инвертор. Пока такт ВЫСОКИЙ, первая (ведущая) защёлка открыта и следит за D, а вторая (ведомая) закрыта и держит старое значение на выходе. Когда такт падает, ведущая закрывается, запоминая последнее значение D, а ведомая открывается и переписывает его к себе.

Один период такта в двухступенчатом D-триггере
  1. ТАКТ ВЫСОКИЙведущая ступень прозрачна: её внутренний выход повторяет . Ведомая заперта и показывает на выходе прежнее значение.
  2. ТАКТ падаетведущая ступень запирается и фиксирует D; в ту же наносекунду открывается ведомая и копирует состояние ведущей на выход Q.
  3. ТАКТ НИЗКИЙвыход не может измениться: ведущая ступень, единственный путь от D, закрыта.
  4. ТАКТ снова поднимаетсяведомая запирается с новым значением, ведущая опять начинает следить за входом.

В результате данные попадают на выход только по спаду такта, и сквозного пути от D к Q не бывает никогда: в каждый момент одна из двух дверей заперта.

Фронтовой триггер снаружи неотличим от двухступенчатого: тоже берёт данные в момент перепада. Внутри у него другая схема, три пары перекрёстно связанных вентилей; так устроен, например, классический D-триггер '74, который срабатывает по нарастающему перепаду. Попробуйте сами нарисовать его по справочнику и проследить, почему изменения D после фронта до выхода не доходят. Это хорошая тренировка в чтении логических схем.

DведущаяDCMведомаяDCQQQQТАКТ1открыта при ТАКТ = Воткрыта при ТАКТ = Нwww.reknow.ru1Ведущая защёлка. открыта, пока ТАКТ ВЫСОКИЙ, и всё это время следит за D2Ведомая защёлка. открыта, пока ТАКТ НИЗКИЙ, и копирует то, что запомнила ведущая3Инвертор такта. из-за него защёлки открыты по очереди и никогда вместе4Выход Q. обновляется только в момент спада такта
Двухступенчатый D-триггер как две прозрачные защёлки с противофазными тактами. На уровне вентилей каждая защёлка — четыре элемента И-НЕ. Данные выходят на Q по спаду такта.
Что здесь что (4)
  1. Ведущая защёлка. открыта, пока ТАКТ ВЫСОКИЙ, и всё это время следит за D
  2. Ведомая защёлка. открыта, пока ТАКТ НИЗКИЙ, и копирует то, что запомнила ведущая
  3. Инвертор такта. из-за него защёлки открыты по очереди и никогда вместе
  4. Выход Q. обновляется только в момент спада такта

Среди выпускаемых триггеров есть и срабатывающие по нарастанию такта, и по спаду. Почти у всех предусмотрены ещё асинхронные входы установки S и сброса R. Они действуют в обход такта, сразу, как у простой защёлки, и нужны, например, чтобы при включении питания привести схему в известное состояние. Активный уровень у них бывает и НИЗКИЙ, и ВЫСОКИЙ, в зависимости от серии. На условных обозначениях (рисунок ниже) треугольник у тактового входа означает «срабатывает по перепаду», а кружок означает инверсию: кружок перед треугольником значит «по спаду», кружок на S или R значит «активен НИЗКИЙ уровень».

Три типа, которые встречаются особенно часто:

  • '74 — два D-триггера в корпусе, срабатывают по нарастанию такта, асинхронные S̅ и R̅ активны НИЗКИМ уровнем;
  • 4013 — два КМОПКМОП — комплементарные МОП-транзисторы: n- и p-канальные приборы на одном кристалле. Основа почти всей цифровой логики и аналоговых ключей. D-триггера, тоже по нарастанию, но S и R у них активны ВЫСОКИМ уровнем;
  • '112 — два JK-триггера, срабатывают по спаду такта, S̅ и R̅ активны НИЗКИМ уровнем.
TDCQQSR'74TDCQQ4013SRTTJCKQQSR'112www.reknow.ru1Треугольник у входа C. вход динамический: важен момент перепада такта, а не его уровень2Кружок на S. асинхронная установка активна НИЗКИМ уровнем () и работает без всякого такта3S и R без кружков (4013). у этой КМОП-микросхемы установка и сброс активны ВЫСОКИМ уровнем; если не нужны — на землю4Кружок у входа C ('112). такт инвертирован: JK-триггер срабатывает по спаду5Выход с кружком. инверсный выход
Обозначения трёх распространённых триггеров: '74 (по нарастанию ↑, S̅ и R̅), 4013 (по нарастанию ↑, S и R активны ВЫСОКИМ), '112 (по спаду ↓, S̅ и R̅).
Что здесь что (5)
  1. Треугольник у входа C. вход динамический: важен момент перепада такта, а не его уровень
  2. Кружок на S. асинхронная установка активна НИЗКИМ уровнем () и работает без всякого такта
  3. S и R без кружков (4013). у этой КМОП-микросхемы установка и сброс активны ВЫСОКИМ уровнем; если не нужны — на землю
  4. Кружок у входа C ('112). такт инвертирован: JK-триггер срабатывает по спаду
  5. Выход с кружком. инверсный выход

JK-триггер

Тактируется JK-триггер так же, как D-триггер, но информационных входов у него два, J и K. Удобно читать их как «включить» и «выключить», а таблица ниже объясняет, что происходит при каждом сочетании:

Поведение JK-триггера по очередному тактовому перепаду.
JKЧто делает такт
00ничего, бит хранится
010сбрасывает
101устанавливает
11переворачивает состояние (счётный режим)

Когда J и K разные, триггер после такта принимает значение J, как D-триггер с данными на J. Когда оба нулевые, такт его не трогает. А при двух единицах, в отличие от RS-триггера, ничего недопустимого не происходит: каждый такт меняет состояние на противоположное. Этот режим называют счётным, и на нём построены делители частоты.

Уравнение следующего состояния JK-триггера
Обозначения:состояние после тактасостояние до такта«включить»: из состояния 0 переводит в 1«выключить»: из состояния 1 переводит в 0
Для D-триггера оно вырождается в .

Ловушка единиц у старых двухступенчатых JK-триггеров. Некоторые давние модели запоминают кратковременную помеху. Пока такт держит ведущую ступень открытой, достаточно, чтобы J (или K) на мгновение поднялся и снова опустился: ведущая ступень уже перебросилась и обратно сама не вернётся. По перепаду триггер выдаст на выход это ложное состояние, хотя в момент перепада входы требовали оставить всё как было. В справочных данных об этом обычно не пишут, поэтому эффект удивляет тех, кто о нём не знает. Происхождение у него историческое: такие триггеры рассчитывали на очень узкий тактовый импульс, а реальный такт имеет конечную ширину. Если в старой схеме попался такой триггер, будьте осторожны, а в новой схеме проще взять настоящий фронтовой JK-триггер: '112 (по спаду) или '109 (по нарастанию). Оба сдвоенные, с асинхронными S̅ и R̅, активными НИЗКИМ уровнем.

У '109 есть приятная особенность: его второй вход инверсный, вместо K. Поэтому, соединив J и вместе, получаем готовый D-триггер без внешнего инвертора, а заземлив и подав единицу на J, получаем счётный режим.

Деление частоты на 2

Счётный режим сразу даёт делитель частоты пополам (рисунок ниже). Вариантов два:

  • JK-триггер, у которого J и K постоянно ВЫСОКИЕ, переворачивается на каждом такте;
  • D-триггер, у которого вход D соединён с собственным инверсным выходом , к каждому перепаду получает на D противоположность своего текущего состояния и потому тоже переворачивается.
Совет. В обоих вариантах на выходе получается ровно половина входной частоты, причём со скважностью строго 50%, какой бы формы ни были входные импульсы: выход переключается по одинаковым перепадам, и обе половины периода равны. Это самый простой способ получить точный меандр из короткой импульсной последовательности.
TTJCKQQSR'112++входвыходwww.reknow.ru
а) JK-триггер с J = K = 1
TDCQQ4013входвыходwww.reknow.ru
б) D-триггер с обратной связью D = Q̅ (S и R на земле)
входвыходwww.reknow.ru
в) Сигналы делителя на 2 (показан триггер, срабатывающий по нарастанию, как 4013).

Когда триггер «смотрит» на вход: установление и удержание

В делителе на D-триггере (вариант «б» выше) скрыт вопрос с подвохом. Такт поднялся, триггер переключился, и сразу же, через считанные наносекунды, поменялся , а с ним и D. Не путает ли это триггер? Ведь вход изменился почти в тот самый момент, когда его нужно было прочитать.

Чтобы ответить, нужно знать, что такое на самом деле «момент перепада». Он не бесконечно короткий: у любого тактируемого элемента в справочнике указаны два интервала. Время установленияВремя установления — время, после которого выход входит в заданную окрестность конечного значения (±1 %, ±0,1 %) и больше её не покидает. — сколько данные должны простоять неизменными до тактового перепада. Время удержания — сколько они должны оставаться неизменными после него (временная диаграмма ниже). Для 74HC74 это 20 нс и 3 нс соответственно. Вместе они образуют окно, в котором D трогать нельзя.

20 нс у 74HC74Столько D должен стоять неизменным перед фронтом такта.
3 нс у 74HC74Столько D не должен меняться после фронта; во многих сериях .
10 нснаименьшая задержка от такта до выходаПоэтому триггер, замкнутый сам на себя, своё удержание не нарушает.

Теперь проверим делитель. Установление: новое значение должно появиться на D не позже чем за 20 нс до следующего фронта, то есть такты не должны идти слишком часто. Удержание: здесь и кроется кажущийся подвох, но расчёт его снимает. Даже самый быстрый экземпляр 74HC74 меняет выход не раньше чем через 10 нс после фронта, значит, D гарантированно стоит неизменным 10 нс, а нужно всего 3. Запас 7 нс. В современных сериях эта проблема чаще всего вообще не возникает: время удержания у них нулевое.

Ловушка. Если всё-таки поменять D внутри запретного окна, триггер может попасть в метастабильное состояние: его выход на неопределённое время зависает между уровнями или переключается с большой задержкой, как шарик, замерший на гребне. Именно поэтому окно установления и удержания нужно соблюдать с запасом.
DТАКТ−tусттакт ↑+tудwww.reknow.ru
Окно установления и удержания: пока такт не прошёл через это окно, данные на D должны стоять неподвижно (у 74HC74 — 20 нс до фронта и 3 нс после).
Упражнение 8.4.2

Частоту кварцевого генератора синтезатора нужно поделить пополам D-триггером, включённым по схеме . По справочнику задержка от такта до выхода у этого триггера лежит в пределах 8–18 нс, время установления 12 нс, время удержания 4 нс. До какой частоты генератора делитель гарантированно работает? Не нарушается ли удержание?

Решение

После фронта новый уровень доходит до D через задержку триггера, в худшем случае 18 нс. Потом он должен простоять на входе время установления, 12 нс, и только тогда может прийти следующий фронт: нс, МГц.

С удержанием считаем наоборот, по самому быстрому экземпляру: D начнёт меняться не раньше чем через 8 нс после фронта, а неподвижность требуется 4 нс. Запас 4 нс, всё в порядке. Обратите внимание: для проверки установления берут наибольшую задержку, а для проверки удержания наименьшую. Поэтому в хорошем справочнике приводят обе границы.

Деление на 4, 8, 16…: пульсирующий счётчик

Если один счётный триггер делит на 2, то два подряд делят на 4, три на 8, а штук на . Достаточно подать выход каждого триггера на тактовый вход следующего (схема ниже). Такую цепочку называют двоичным счётчиком, и вот почему: прочитайте выходы как двоичное число. После каждого входного импульса оно увеличивается на единицу: 0, 1, 2 … 15, а затем снова 0. Младший разряд (МЗРМЗР — младший значащий разряд: самый мелкий шаг преобразователя, . Погрешности ЦАП и АЦП меряют в долях МЗР.) — , старший (СЗРСЗР — старший значащий разряд: его вес — половина шкалы преобразователя.) — , а на выходе получается меандр с частотой в 16 раз ниже входной.

Одна деталь: следующий разряд должен переключаться в тот момент, когда предыдущий переходит из 1 в 0 (так при сложении единица переносится в старший разряд). Значит, триггеры должны срабатывать по спаду; на схеме это показывает кружок у тактового входа.

Каждый разряд двоичного счётчика делит частоту вдвое
Обозначения:частота на выходе разряда номер разряда, младший — 0частота входных импульсов
При четырёх разрядах даёт 1/16 входной частоты.
TTJCKQQ++TTJCKQQ++TTJCKQQ++TTJCKQQ++тактыQ0Q1Q2Q3www.reknow.ru1Разряд Q₀. JK-триггер с J = K = 1: переворачивается по спаду каждого входного импульса2Q₀ тактирует Q₁. каждый разряд ждёт предыдущего, поэтому задержки по цепочке складываются3Кружок у входа C. срабатывание по спаду: разряд меняется, когда предыдущий падает из 1 в 0, как при переносе4Q₃ — старший разряд. меандр с частотой в 16 раз ниже входной
Что здесь что (4)
  1. Разряд Q₀. JK-триггер с J = K = 1: переворачивается по спаду каждого входного импульса
  2. Q₀ тактирует Q₁. каждый разряд ждёт предыдущего, поэтому задержки по цепочке складываются
  3. Кружок у входа C. срабатывание по спаду: разряд меняется, когда предыдущий падает из 1 в 0, как при переносе
  4. Q₃ — старший разряд. меандр с частотой в 16 раз ниже входной
тактQ0Q1Q2Q3www.reknow.ru
Четырёхразрядный пульсирующий (асинхронный) счётчик на JK-триггерах, срабатывающих по спаду, и его сигналы: каждый разряд переключается спадом соседа справа.

Счётчики нужны так часто, что выпускаются десятками разновидностей: четырёхразрядные двоичные, двоично-десятичные (считают от 0 до 9), многодекадные. О готовых микросхемах подробно говорится в разделе 8.6. Из нескольких счётчиков и цифрового индикатора получается счётчик событий, например деталей на конвейере. А если открывать вход счётчика ровно на одну секунду и затем показывать результат, получится частотомер: число на индикаторе и есть частота в герцах. Выпускаются и частотомеры в одной микросхеме: генератор, схема управления и вывод на индикатор на одном кристалле.

У простой цепочки, где каждый триггер тактируется соседом, есть серьёзный недостаток: задержки складываются. Разряды переключаются не одновременно, а один за другим, как падающие костяшки домино. Посмотрите, например, на переход от 7 (0111) к 8 (1000): по пути на выходах мелькают числа, которых не должно быть.

Что на самом деле видно на выходах при переходе 7 → 8
0111 = 7до такта
0110 = 6через упал Q₀
0100 = 4ещё через упал Q₁
0000 = 0упал Q₂
1000 = 8поднялся Q₃ — только через после такта
Ловушка. ДешифраторПо -разрядному коду возбуждает один из выходов (у '138 — выбранный выход НИЗКИЙ)., который следит за таким счётчиком (скажем, ловит код 0 или 4), примет эти мелькающие коды за настоящие и выдаст короткие ложные импульсы. Поэтому в серьёзных схемах предпочитают другой подход: один общий такт подаётся сразу на все триггеры. Это синхронные схемы, о них следующий пункт.
Модель: асинхронный счётчик — задержки и ложные состояния
Упражнение 8.4.3

Лабораторный счётчик импульсов собран из пяти триггеров в пульсирующую цепочку; задержка каждого триггера 12 нс. За счётчиком стоит дешифратор с задержкой 18 нс, и его выход должен успеть успокоиться до следующего входного импульса. а) Через какое наибольшее время после импульса код на выходах счётчика становится окончательным? б) Какая наибольшая частота входных импульсов допустима для всей системы? в) Сколько ложных промежуточных кодов появляется при переходе 31 → 0?

Решение

а) Хуже всего переходы, при которых переворачиваются все пять разрядов (15 → 16 или 31 → 0): каждый разряд ждёт предыдущего, нс.

б) Затем 18 нс отрабатывает дешифратор: нс, МГц. Заметьте, что сам счётчик способен считать гораздо быстрее, ведь каждый его триггер работает только на своей, уже поделённой частоте. Ограничение возникает, когда состояние счётчика нужно прочитать: читать можно лишь после того, как цепочка успокоилась.

в) 31 = 11111 → (упал ) 11110 = 30 → 11100 = 28 → 11000 = 24 → 10000 = 16 → 00000. Ложных кодов четыре: 30, 28, 24 и 16.

8.4.3Последовательностная логика — объединение памяти и вентилей

≈ 14 мин3 упр.
Главное
  • Синхронный автомат = регистр из D-триггеров с общим тактом + комбинационнаяКомбинационная схема: выход в каждый момент определяется только текущими входами — памяти нет. Строится из одних вентилей. логика, которая по текущему состоянию вычисляет следующее.
  • Порядок проектирования: назначить коды состояниям → выписать, что должно попасть на D-входы → построить логику (например, картой КарноТаблица истинности, разложенная по двум осям в порядке кода Грея (00, 01, 11, 10): соседние клетки отличаются одной переменной, и группы единиц дают простые произведения.).
  • Неиспользуемые коды обязательно проверить: автомат, попавший в них при включении, не должен там застрять.
  • Предел быстродействия: .

У нас есть вентили, которые умеют вычислять, и триггеры, которые умеют помнить. Соединив их, получаем самую общую форму цифровой схемы: от светофора на перекрёстке до процессора. Остаётся понять, как соединять их так, чтобы схема вела себя предсказуемо.

Синхронные системы: все меняются по одному сигналу

Пульсирующий счётчик показал, чем плохо, когда триггеры тактируют друг друга по цепочке. Противоположный подход называется синхронным: все триггеры получают один и тот же такт. Тогда все изменения происходят сразу после тактового фронта, и каждое из них определяется тем, что было в системе непосредственно перед этим фронтом. Похоже на хор под управлением дирижёра: голоса вступают по взмаху палочки, а не тогда, когда услышат соседа.

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

Схема выглядит почти примитивно, а возможности у неё огромные: в эту форму укладывается любой автомат с конечным числом состояний. Её целиком можно поместить в одну регистровую ПМЛПрограммируемая матричная логика (PAL): программируемая матрица И, фиксированная матрица ИЛИ. Например, 16L8 — до 16 входов, 8 выходов., о которой говорится в разделе 8.6.

входыкомбинационнаялогика (вентили)Dрегистр(D-триггеры)такт ↑Q (состояние)выходыwww.reknow.ru1Комбинационная логика. по текущему состоянию Q и внешним входам вычисляет следующее состояние (на D) и выходы2Регистр D-триггеров. общий такт: по фронту все D одновременно переписываются в Q3Такт. единственный момент, когда автомат меняет состояние; что творится между фронтами, ему безразлично4Обратная связь по Q. текущее состояние возвращается на вход логики: так автомат помнит, где находится
Общий вид синхронного автомата: регистр хранит состояние, комбинационная логика вычисляет следующее.
Что здесь что (4)
  1. Комбинационная логика. по текущему состоянию Q и внешним входам вычисляет следующее состояние (на D) и выходы
  2. Регистр D-триггеров. общий такт: по фронту все D одновременно переписываются в Q
  3. Такт. единственный момент, когда автомат меняет состояние; что творится между фронтами, ему безразлично
  4. Обратная связь по Q. текущее состояние возвращается на вход логики: так автомат помнит, где находится

Пример: делитель на 3

Делитель на 2 и на 4 получается сам собой, а вот деление на 3 требует подумать: трёх состоянийВыход с третьим состоянием «обрыв» (высокий импеданс): по сигналу разрешения выход отключается от линии. Основа шин данных. одним двоичным разрядом не описать. Возьмём два D-триггера с общим тактом, на который подаётся входной сигнал. Их D-входы назовём , , выходы , . Проектирование идёт по одному и тому же рецепту:

Синхронный автомат за четыре шага
  1. Назначить коды состояниямнапример, : ; четвёртый код, 11, остаётся лишним
  2. Выписать таблицу D-входовна D каждого триггера должно стоять его следующее значение
  3. Построить логикув общем случае картой Карно; здесь ответ виден сразу: ,
  4. Проверить лишние кодыкуда пойдёт автомат, если окажется в ?

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

0001
0110
1000

Столбец совпадает со столбцом , значит, , простой провод. Столбец равен единице только при , а это функция ИЛИ-НЕ: . Вся логика — один вентиль (схема ниже).

TDCQQTDCQQтактQ₁Q₂1www.reknow.ru
Синхронный делитель на 3: D₁ = Q₂, D₂ = НЕ(Q₁ + Q₂). На выходе Q₂ — частота такта, делённая на 3.

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

тактQ₁Q₂www.reknow.ru
Делитель на 3 в работе: коды 00 → 01 → 10 → 00 сменяются по фронтам такта; и на Q₁, и на Q₂ получается один импульс на каждые три такта.

Почему синхронные схемы так ценят? Главная причина — устойчивость к помехам.

  • Каждый триггер смотрит на свои входы только в узком окне вокруг фронта. Если в это окно данные уже успокоились, то наводки от соседних переключающихся проводников, ёмкостные выбросы и прочий мусор между фронтами просто никто не замечает.
  • Неодинаковые задержки вентилей по-прежнему существуют: после фронта выходы логики какое-то время «дрожат», принимая промежуточные значения. Но к следующему фронту всё успокаивается, и ни один триггер этих промежуточных значений не запоминает. Задача проектировщика сводится к одному условию: период такта должен быть длиннее самого медленного пути.

Лишние коды и как не застрять

В делителе на 3 два триггера, а значит четыре кода, из которых используются три. Может ли схема оказаться в ? Ещё как может: при включении питания триггеры встают в случайное состояние, а помеха может перебросить их и посреди работы. Подставим 11 в нашу логику: , . Первый же такт переводит схему в 10, а это уже рабочий цикл. Здесь повезло.

Ловушка. Везение — не метод. Каждый неиспользуемый код надо проверить при проектировании: иначе автомат может однажды попасть в него и остаться там навсегда (или зациклиться среди лишних кодов). Второй надёжный путь — явно задать переходы из всех лишних кодов в рабочий цикл или сбрасывать регистр при включении.

Нагляднее всего такие вещи видны на диаграмме состоянийГраф: кружки — состояния автомата, стрелки — переходы по такту с условиями на входах. (рисунок ниже). Каждое состояние — кружок, каждый возможный переход — стрелка. Если на переход влияют входные сигналы, условие пишут прямо у стрелки; из одного состояния может выходить несколько стрелок в разные стороны. На такой картинке сразу видно, есть ли у каждого кружка выход и не образуют ли лишние коды свою отдельную петлю.

00011011www.reknow.ru
Диаграмма состояний делителя на 3: три кода образуют рабочий цикл, а лишний код 11 уже на первом такте уходит в 10.
Модель: синхронные автоматы — делитель на 3 и реверсивный счётчик
Упражнение 8.4.4

Делитель на 3 для трёхфазного генератора нужно собрать на двух JK-триггерах совсем без вентилей, с циклом : . Код 00 не используется, но именно в нём оба триггера окажутся после сигнала сброса при включении питания. На каждый из входов J и K можно подать только постоянный уровень (0 или 1) или один из выходов . Сколько всего существует таких схем и в скольких из них автомат после сброса так и останется в 00?

ПодсказкаДля каждого перехода выпишите, какие J и K ему нужны: 0→1 требует J = 1 (K любой); 1→0 — K = 1 (J любой); 0→0 — J = 0 (K любой); 1→1 — K = 0 (J любой).
Решение

Требования на каждом переходе рабочего цикла (X — безразлично):

след.
01111XX0
1110X0X1
1001X11X

важен только в состоянии 01, где нужна единица. В этом состоянии равны единице три допустимых источника: , и , значит, три варианта. важен в 11 (нужен 0) и в 10 (нужна 1); эти состояния различаются только , и подходит единственный источник: . важен в 01 (нужен 0) и в 11 (нужна 1), они различаются : , тоже единственный вариант. важен только в 10, где нужна единица: , или , три варианта. Всего схем.

Теперь подставим код 00. и при любом выборе. Первый триггер станет 1, если или , и останется 0 при . Второй станет 1, если или , и останется 0 при . Автомат застрянет в 00, только если выбраны одновременно и : одна схема из девяти. Остальные восемь из 00 уходят в 01, 10 или 11, то есть сразу в рабочий цикл. Здесь лишний код совпадает с состоянием после сброса, так что неудачный выбор не позволит делителю даже запуститься.

Упражнение 8.4.5 задача

Шаговым двигателем с двумя обмотками управляют две линии , и при полношаговом режиме состояния обмоток должны идти в коде ГреяКод, в котором соседние числа отличаются ровно одним разрядом: 000, 001, 011, 010, 110… Исключает ложные промежуточные коды в датчиках угла и счётчиках.: для вращения в одну сторону и в обратном порядке для вращения в другую. Спроектируйте синхронный автомат на двух D-триггерах с тактовым входом ШАГ и входом направления U/: при ВЫСОКОМ U/ последовательность прямая, при НИЗКОМ — обратная.

Решение

Выпишем следующее состояние для обоих направлений ( — уровень на входе направления):

000110
011100
111001
100011

. При следующее для состояний 00, 01, 11, 10 равно 0, 1, 1, 0 — это в точности . При оно равно 1, 0, 0, 1, то есть . Объединяя: .

. При получаем 1, 1, 0, 0 — это ; при — 0, 0, 1, 1, то есть . Значит, .

Итого: два D-триггера с общим тактом ШАГ, вентиль Исключающее ИЛИ на () и Исключающее ИЛИ-НЕ (или Исключающее ИЛИ плюс инвертор) на . Лишних кодов нет: все четыре комбинации входят в цикл, так что застревать негде. Приятный бонус кода Грея: на каждом шаге меняется только один разряд, поэтому даже если выходы читает асинхронная схема, промежуточных ложных кодов она не увидит. Для двигателя это означает, что за один шаг переключается одна обмотка.

Упражнение 8.4.6

Контроллер светофора собран как синхронный автомат в ПЛИС. Задержка триггеров от такта до выхода 9 нс, между выходами регистра и его D-входами самый длинный путь проходит через три уровня логики по 6 нс, время установления триггеров 5 нс. С какой наибольшей частотой можно тактировать автомат?

Решение

За один период сигнал должен пройти весь путь «фронт такта → выход триггера → логика → D-вход» и ещё простоять на D время установления: нс, МГц. Так считают быстродействие любой синхронной схемы: ищут критический путь, то есть самую длинную цепочку логики между двумя регистрами. Чтобы ускорить автомат, сокращают именно её, а остальные пути на частоту не влияют.

Проектируем от диаграммы состояний

Диаграмма состояний — не только средство отладки. С неё удобно начинать, когда у автомата много путей: из одного состояния можно попасть в разные в зависимости от входов, и держать всё это в голове трудно. Работа идёт в три этапа:

От диаграммы к схеме
  1. Перечислить состоянияи дать каждому двоичный код; триггеров нужно не меньше , где — наименьшее целое, при котором не меньше числа состояний
  2. Нарисовать все переходыдля каждого состояния указать, при каких условиях в него попадают и при каких из него уходят
  3. Решить комбинационную задачупо диаграмме выписать таблицу «текущее состояние + входы → следующее состояние» и упростить, например картами Карно
Сколько нужно триггеров
Обозначения:число триггеровчисло состояний автомата

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

Ждём«1»«10»Есть!10101001www.reknow.ru
Автомат, распознающий «101» в потоке битов. Подпись у стрелки — значение входного бита на очередном такте; в состоянии «Есть!» выход равен 1. Состояний четыре, значит, хватит двух триггеров.

Регистровые ПМЛ. Программируемые логические матрицы (ПМЛ и ПЛМПрограммируемая логическая матрица (PLA): программируются и матрица И, и матрица ИЛИ., о них в разделе 8.3) бывают и в варианте с D-триггерами на том же кристалле, тактируемыми общим сигналом. Такая регистровая ПМЛ — это готовая заготовка под схему «регистр плюс логика», показанную выше: остаётся только запрограммировать уравнения. Работа с ними разобрана в разделе 8.6.

8.4.4Синхронизатор

≈ 9 мин3 упр.
Главное
  • Синхронизатор — тактируемый триггер, который «пересаживает» внешний асинхронный сигнал на такт системы.
  • D-триггер, срабатывающий по спаду входных импульсов, открывает вентиль только в паузах между ними — на выход попадают лишь целые импульсы.
  • Тот же триггер, срабатывающий по фронту, при остановке выпускает короткий ложный импульс длиной в свою задержку.
  • Ложный импульс — результат гонки: два сигнала, вызванных одним событием, приходят к вентилю с разной задержкой.

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

Пример: пропускать только целые импульсы

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

Решение — поставить между защёлкой и вентилем D-триггер (схема ниже). Кнопки ПУСК и СТОП переключают RS-защёлку (вентиль 1), но её выход идёт не прямо на вентиль 3, а на вход D триггера. Тактом для триггера служит сам входной сигнал, причём триггер срабатывает по его спаду (в модели ниже — вариант «по спаду входного сигнала»). Нажали ПУСК в произвольный момент — защёлка переключилась сразу, а Q триггера остаётся НИЗКИМ до ближайшего спада входа. В этот момент вход уже НИЗКИЙ, следующий импульс ещё не начался, и вентиль 3 открывается в паузе. Значит, первым через него пройдёт целый импульс. Точно так же при СТОП вентиль закроется в паузе, и последний импульс тоже не будет обрезан.

Стрелки на временной диаграмме связывают причину и следствие: Q меняется сразу после спада входа, в тот отрезок, когда вход НИЗКИЙ и вентилю 3 всё равно нечего пропускать.

ПУСКСТОП(подтяжки к +5 В не показаны)&&12TDCQQвход (импульсы)&3www.reknow.ru1Кнопки ПУСК и СТОП. перекидной контакт, дребезг гасит защёлка из вентилей 1 и 22Вентиль 1 (выход защёлки). ВЫСОКИЙ после ПУСК, НИЗКИЙ после СТОП; переключается в любой момент3D-триггер по спаду. переносит разрешение в Q только по спаду входа, когда вход уже НИЗКИЙ4Вентиль 3 (И-НЕ). пропускает вход (с инверсией), пока Q ВЫСОКИЙ; Q меняется только в паузах, импульсы целые
Синхронизатор пачки импульсов: D-триггер, срабатывающий по спаду входа, открывает и закрывает вентиль 3 только в паузах.
Что здесь что (4)
  1. Кнопки ПУСК и СТОП. перекидной контакт, дребезг гасит защёлка из вентилей 1 и 2
  2. Вентиль 1 (выход защёлки). ВЫСОКИЙ после ПУСК, НИЗКИЙ после СТОП; переключается в любой момент
  3. D-триггер по спаду. переносит разрешение в Q только по спаду входа, когда вход уже НИЗКИЙ
  4. Вентиль 3 (И-НЕ). пропускает вход (с инверсией), пока Q ВЫСОКИЙ; Q меняется только в паузах, импульсы целые
входD (ПУСК)Qвыходwww.reknow.ru
Сигналы синхронизатора: Q переключается по спаду входного импульса, поэтому на выход (вентиль И-НЕ, с инверсией) попадают только полные импульсы.

Гонки и короткие ложные импульсы

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

Вход поднимается, и этот же фронт тактирует триггер, чтобы тот опустил Q. Но триггеру нужно время, порядка 20 нс у серий HC или LS. Всё это время Q ещё ВЫСОКИЙ, вентиль 3 открыт, а вход уже ВЫСОКИЙ, и на выходе успевает проскочить узкий импульс длиной в задержку триггера. Такие импульсы называют иголками или глитчами (от английского glitch). Причина — гонка сигналов: одно событие (фронт входа) порождает два сигнала, которые приходят на вентиль разными путями и с разной задержкой, и на короткое время вентиль видит комбинацию, которой по замыслу быть не должно.

Откуда берётся иголка
Фронт входавход стал ВЫСОКИМ, и вентиль 3 видит это сразу
Q пока ВЫСОКИЙтриггеру нужно около 20 нс, чтобы отработать тот же фронт
Узкий импульс на выходеего длительность равна задержке триггера
Q падаетвентиль закрылся, но импульс уже проскочил
Модель: синхронизатор по спаду и по фронту — где появляется всплеск
входD (СТОП)Qвыходwww.reknow.ru
Тот же синхронизатор с триггером, срабатывающим по фронту входного сигнала: при остановке на выход проскакивает иголка длиной примерно в задержку триггера (выделена цветом).
Ловушка. Иголки — одна из самых неприятных неисправностей цифровых схем. Они так узки, что на осциллографе с обычной развёрткой их легко не заметить, и можно долго не подозревать об их существовании. При этом триггеры и счётчики, на которые они попадают, исправно срабатывают от них в случайные моменты. Проходя через цепочку вентилей и инверторов, иголка может и расшириться, и сузиться, вплоть до полного исчезновения, поэтому сбой появляется и пропадает от прикосновения щупа. Лучшая защита — проектировать так, чтобы гонок не было вовсе, как в синхронизаторе по спаду.
Упражнение 8.4.7 задача

Импульсный датчик расхода выдаёт импульсы длительностью 250 нс с паузами 750 нс, и их нужно пропускать на счётчик пачками по кнопкам ПУСК и СТОП через синхронизатор из схемы выше (D-триггер срабатывает по спаду входных импульсов). Докажите, что ни при пуске, ни при остановке, в какой бы момент ни нажали кнопку, на выходе не появится ни обрезанных импульсов, ни иголок. Какому условию должна удовлетворять задержка триггера?

Решение

Выход вентиля 3 (И-НЕ) становится НИЗКИМ, то есть выдаёт импульс, только когда одновременно ВЫСОКИЕ вход и Q. Меняться Q может лишь по спаду входа, спустя задержку . Значит, к моменту любого изменения Q вход уже НИЗКИЙ, вентиль 3 заперт по второму входу, и изменение Q на выход не попадает — ни при пуске (Q: 0 → 1), ни при остановке (Q: 1 → 0). Момент нажатия кнопки определяет только то, на каком спаде переключится Q, но не форму выходных импульсов: проходят лишь целые.

Условие: Q должен успеть установиться, пока вход ещё НИЗКИЙ, то есть нс (длительности паузы). Кроме того, к моменту спада сигнал на D должен простоять время установления. Если кнопку нажали прямо в этом окне, триггер может на мгновение стать метастабильным или переключиться только на следующем спаде; оба исхода безопасны, ведь всё происходит в паузе. Для серии HC с задержкой порядка 20 нс запас огромный. А вот если бы паузы были короче задержки триггера, Q менялся бы уже при ВЫСОКОМ входе, и иголки вернулись бы.

Упражнение 8.4.8 задача

Для отладки учебного процессора нужна кнопка «три такта»: после каждого нажатия она должна пропустить на процессор ровно три полных положительных импульса от тактового генератора и больше ничего, а следующая порция — только после того, как кнопку отпустят и нажмут снова (кнопка уже избавлена от дребезга). Предложите схему.

Решение

Объединим идею синхронизатора со сдвиговым регистром, который отсчитывает импульсы. Возьмём четыре D-триггера A, B, C и E, все тактируемые спадом тактовых импульсов. Их асинхронные входы сброса подключим к кнопке так, чтобы при отпущенной кнопке все четыре были сброшены.

  • A: на D подаётся сигнал КНОПКА (уже после защёлки от дребезга). становится 1 на первом спаде после нажатия, то есть в паузе, поэтому следующий импульс пройдёт целиком.
  • B: D = ; становится 1 спадом в конце первого пропущенного импульса.
  • C: D = ; становится 1 в конце второго.
  • E: D = ; становится 1 в конце третьего.

Выход: (трёхвходовый И). Проходят импульсы, начавшиеся после установки A и до установки E, — ровно три. Иголок нет по той же причине, что и в синхронизаторе по спаду: и меняются только после спада такта, когда сам такт НИЗКИЙ. После отпускания кнопки регистр сбрасывается асинхронно. Если это случится посреди импульса, а уже был 1, вентиль и так заперт, и ничего не проскочит; опасен лишь случай, когда кнопку отпустили раньше, чем прошли все три импульса, — тогда последний из них может оборваться. Чтобы исключить и это, сброс тоже проводят через синхронизирующий триггер. Для импульсов нужен сдвиговый регистр длиной , а для больших выгоднее счётчик с дешифратором.

Практические замечания

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

Ловушка. Как в любой логической схеме, у триггеров-синхронизаторов нужно правильно подключить все неиспользуемые входы. Асинхронные S и R не должны вмешиваться в работу: у '74 их подключают к ВЫСОКОМУ уровню, у 4013 — к земле. Входы, которые на выход не влияют (например, входы свободных вентилей в корпусе), у ТТЛ иногда оставляют неподключёнными. У КМОП так делать нельзя никогда: висящий вход принимает промежуточный потенциал, и через выходной каскад течёт сквозной токСквозной ток (ток класса А) КМОП — импульс тока от питания на землю, пока вход проходит середину диапазона и открыты оба транзистора.. Их обязательно сажают на землю или на питание (подробнее — в разделе 9.1).

Существовала даже специальная микросхема с двумя синхронизаторами, 74120, но она так и не прижилась: обычный D-триггер справляется с этой задачей не хуже.

Упражнение 8.4.9

На макетной плате нужен D-триггер, чтобы защёлкивать бит готовности датчика, а под рукой есть только '109 — JK-триггер с инверсным вторым входом . Как подключить его входы?

Решение

Если , то . При получаем , — установка; при получаем , — сброс. Это и есть D-триггер, причём без внешнего инвертора: именно для этого у '109 сделан инверсный вход. Вариант « на землю» при единице на J даёт , , то есть счётный режим, а вариант « к инверсии данных» превращает вход в : триггер либо хранит, либо переворачивается.