Электроника:Цифровая электроника/Схемы последовательностей/Асинхронные счётчики

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Макаров В. (valemak)
Проверка/Оформление/Редактирование: Мякишев Е.А.


Асинхронные счётчики[1]

В предыдущем разделе мы рассмотрели схему, использующую один JK-триггер, который ведёт обратный отсчёт в двухбитной двоичной последовательности: 11 → 10 → 01 → 00.

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

Раз уж нам известно, что любая последовательность при двоичном счёте следуют схеме деления частоты на октаву (коэффициент 2), и что мультивибраторы с JK-триггерами, настроенные в режиме «тумблер», способны выполнять этот тип деления частоты, мы можем представить себе схему, состоящую из нескольких JK-триггеров, соединённых каскадом для получения четырёх битов на выходе.

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

Итак, снова изучим четырёхбитную последовательность двоичного счёта, обращая внимание на паттерны, предшествующие «переключению» бита с 0 на 1 (или с 1 на 0):

Рис. 1. От 0000 до 1111.
Рис. 1. От 0000 до 1111.

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

Маленькие стрелки указывают на те места в последовательности, где бит переключается, а острие стрелки указывает на переход предыдущего бита из «высокого» (1) состояния в «низкое» (0):

Рис. 2. От 0000 до 1111.
Рис. 2. От 0000 до 1111.

Итак, нужны четыре JK-триггера, подключённых таким образом, чтобы они всегда находились в режиме «тумблер». Требуется определить, как именно соединить тактовый C-вход таким образом, чтобы каждый последующий бит переключался, когда бит справа от него переходит из 1 в 0.

Выходы Q каждого триггера будут служить соответствующими двоичными битами окончательного четырёхбитного счёта:

Рис. 3. Выходы Q каждого триггера служат соответствующими двоичными битами окончательного четырёхбитного счёта.
Рис. 3. Выходы Q каждого триггера служат соответствующими двоичными битами окончательного четырёхбитного счёта.

Если бы мы использовали триггеры с запуском по отрицательному фронту (на схемах их можно узнать по символам «пузырьков» на тактовых входах), мы могли бы просто соединить тактовый вход каждого триггера с выходом Q триггера перед ним, так что, когда предыдущий бит меняется с 1 на 0, «отрицательный фронт» этого сигнала будет «тактировать» следующий триггер для переключения следующего бита:

Четырёхбитный счётчик «от меньшего к большему»

Рис. 4. Четырёхбитный счётчик «от меньшего к большему».
Рис. 4. Четырёхбитный счётчик «от меньшего к большему».

Эта схема будет давать следующие формы выходных сигналов при «тактировании» источником повторяющихся импульсов от генератора:

Рис. 5. Формы выходных сигналов при «тактировании» источником повторяющихся импульсов от генератора.
Рис. 5. Формы выходных сигналов при «тактировании» источником повторяющихся импульсов от генератора.

Первый триггер (тот, что с выходом Q0) имеет тактовый вход, запускаемый по положительному фронту, поэтому он переключается с каждым нарастанием фронта тактового сигнала. Обратите внимание, что тактовый сигнал в этом примере имеет рабочий цикл менее 50%.

Я показал сигнал таким образом, чтобы показать, что тактовый сигнал не обязательно должен быть симметричным для получения надёжных, «чистых» выходных битов в нашей четырёхбитной двоичной последовательности.

В самой первой схеме триггера, показанной в этой главе, я использовал сам тактовый сигнал в качестве одного из выходных битов.

Однако это плохая практика при проектировании счётчиков, поскольку она требует использования сигнала прямоугольной формы с коэффициентом заполнения 50% (суммарное время «высоких» сигналов = суммарному времени «низких» сигналов), чтобы получить счётную последовательность, в которой после каждого шага следует пауза такой же продолжительности.

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

Как показано всеми остальными стрелками на импульсной диаграмме, каждый последующий выходной бит переключается за счёт изменения предыдущего бита, переходящего из «высокого» (1) в «низкое» (0) состояние.

Это как раз тот шаблон, что нужен для создания последовательности счёта «от меньшего к большему».

Менее очевидное решение для генерации восходящей последовательности с использованием триггеров, запускаемых положительным фронтом, состоит в том, чтобы «тактировать» каждый триггер, используя выход Q' предыдущего триггера, а не выход Q.

Поскольку выход Q' всегда будет полностью противоположным состоянию выхода Q в JK-триггере (как вы помните, возникновение недопустимых состояний для этого типа триггера исключено в принципе), переход с «высокого» уровня на «низкий» на выходе Q будет сопровождать переход с «низкого» уровня на «высокий» на выходе Q'.

Другими словами, каждый раз, когда выход Q триггера переходит из 1 в 0, выход Q' того же триггера будет переходить из 0 в 1, обеспечивая положительный тактовый импульс, который нам нужен для переключения по положительному фронту при срабатывании триггера в нужный момент:

Альтернативный четырёхбитный счетчик «от меньшего к большему»

Рис. 6. Альтернативная схема счётчика «от меньшего к большему».
Рис. 6. Альтернативная схема счётчика «от меньшего к большему».

Один из способов, с помощью которого мы могли бы расширить возможности обеих этих счётных схем, заключается в том, чтобы рассматривать выходы Q' как ещё один набор из четырёх двоичных битов.

Если мы взглянем на диаграмму импульсов такой схемы, то увидим, что выходы Q' генерируют последовательность обратного счёта, а выходы Q генерируют последовательность прямого счёта:

Счётчик, одновременно являющийся «от меньшего к большему» и «от большего к меньшему»

Рис. 7. Выходы Q генерируют последовательность и прямого и обратного счёта.
Рис. 7. Выходы Q генерируют последовательность и прямого и обратного счёта.
Рис. 8. «Восходящая» (прямая) и «нисходящая» (обратная) счётные последовательности.
Рис. 8. «Восходящая» (прямая) и «нисходящая» (обратная) счётные последовательности.

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

Этот эффект наблюдается в некоторых типах двоичных сумматоров и схем преобразования данных и возникает из-за накапливающихся задержек распространения между каскадными вентилями.

Когда выход Q триггера переходит из 1 в 0, он даёт команду следующему триггеру переключиться.

Если следующее переключение триггера является переходом от 1 к 0, он также даст команду триггеру после него переключиться и так далее.

Однако, поскольку всегда имеет место некоторая небольшая задержка распространения между командой на переключение (тактовый импульс) и фактическим ответом на переключение (Q и Q' выводят изменяющиеся состояния), любые последующие переключаемые триггеры будут переключаться через некоторое время после того, как самый первый триггер переключился. Таким образом, когда несколько битов переключаются в двоичной последовательности счёта, они не все переключаются в одно и то же время:

Недостаток схемы асинхронного счетчика: задержка распространения

Рис. 9. Диаграмма пульсации показывает задержку распространения.
Рис. 9. Диаграмма пульсации показывает задержку распространения.

Как видите, чем больше битов переключается с заданным тактовым импульсом, тем больше накопленное время задержки от младшего значащего бита (МЗБ) к старшему (СЗБ).

Когда в такой момент перехода возникает тактовый импульс (скажем, при переходе от 0111 к 1000), выходные биты будут «пульсировать» в последовательности от МЗБ к СЗБ, поскольку каждый последующий бит переключается и даёт команду следующему биту также переключиться (с небольшой задержкой распространения между каждым переключением битов).

Если внимательно посмотреть на этот эффект во время перехода от 0111 к 1000, то увидим, что за короткий период времени, когда имеет место эффект «пульсации», будут генерироваться ложные выходные значения:

Рис. 10. В течение кратковременных проявлений эффекта «пульсации» генерируются ложные подсчёты выходных данных.
Рис. 10. В течение кратковременных проявлений эффекта «пульсации» генерируются ложные подсчёты выходных данных.

Вместо чёткого перехода от выхода «0111» к выходу «1000», схема счётчика будет очень быстро колебаться от 0111 до 0110, затем от 0100 до 0000, до 1000, т.е. от 7 до 6, затем до 4, потом до 0, а затем до 8. Из-за такого поведения эту схему называют счётчиком пульсаций или асинхронным счётчиком.

Схема счётчика сигналов стробирования

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

Если бы всё, что мы хотели сделать, это управлять набором светоизлучающих диодов (LED) с выходами счётчика, например, то эта краткая пульсация не имела бы вообще никакого значения.

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

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

Большинство схем декодера и мультиплексора оснащены по крайней мере одним входом, который называется «разрешающим».

Выход(-ы) такой схемы будет активен только тогда, когда активен вход разрешения.

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

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

Рис. 11. Стробирующий сигнал может быть тем же тактовым импульсом, который управляет схемой счетчика.
Рис. 11. Стробирующий сигнал может быть тем же тактовым импульсом, который управляет схемой счетчика.

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

Как только тактовый импульс становится «высоким», схема приёма перестает реагировать на выход схемы счётчика.

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

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

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

Недостаток схемы асинхронного счетчика: ограниченная скорость

Еще одним недостатком асинхронной (пульсирующей) схемы счётчика является ограниченная скорость.

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

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

Решением этой проблемы является схема счётчика, полностью исключающая пульсации.

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

Конструкция схемы такого счетчика является предметом изучения в следующем разделе.

Итог

  • Счётчик «от меньшего к большему» можно создать, подключив тактовые входы JK-триггеров, запускаемых по положительному фронту, к выходам Q' предшествующих триггеров. Другой способ – использовать триггеры, запускаемые по отрицательному фронту, соединяя тактовые входы с Q-выходами предыдущих триггеров. В любом случае входы J и K всех триггеров подключены к VКК или VСС, что позволяет им всегда быть «высокими».
  • Счётные схемы, состоящие из каскадных JK-триггеров, где каждый тактовый вход получает свои импульсы с выхода предыдущего триггера, неизменно демонстрируя эффект пульсации, когда между некоторыми шагами последовательности счёта генерируются ложные выходные отсчёты. Эти типы счётчиков называются асинхронными счётчиками или счётчиками пульсаций.
  • Стробирование – это метод, применяемый к схемам, получающим выходной сигнал асинхронного (пульсирующего) счётчика, чтобы ложные отсчёты, генерируемые во время пульсаций, не оказывали вредного воздействия. По существу, разрешающий вход такой схемы подключён к тактовому импульсу счётчика таким образом, что он включается только тогда, когда выходы счётчика не изменяются, и отключается в те периоды изменения выходов счётчика, когда возникают пульсации.

См.также

Внешние ссылки