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

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

Перевод: Макаров В. (valemak) Контакты:</br>* Habr: @vakemak</br>* Сайт: www.valemak.com</br>Перевёл статей: 656.
Проверка/Оформление/Редактирование: Мякишев Е.А.


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

Что такое синхронный счётчик?

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

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

Рис. 1. Единственный способ построить схему синхронного счётчика из JK-триггеров – объединить все тактовые входы.
Рис. 1. Единственный способ построить схему синхронного счётчика из JK-триггеров – объединить все тактовые входы.

Теперь вопрос в том – а что нам делать с входами J и K? Мы знаем, что нам по-прежнему необходимо поддерживать тот же частотный шаблон деления на два, чтобы вести счёт в двоичной последовательности, и что этот шаблон лучше всего достигается с использованием режима «тумблер» триггера, поэтому очевиден тот факт, что входы J и K должны быть (иногда) «высокими».

Однако, если мы просто подключим все входы J и K к положительной шине источника питания, как мы это сделали в асинхронной схеме, это явно не сработает, потому что все триггеры будут переключаться одновременно: при каждой пульсации тактового сигнала!

Рис. 2. Триггеры будут переключаться одновременно с каждым тактовым импульсом.
Рис. 2. Триггеры будут переключаться одновременно с каждым тактовым импульсом.

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

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

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

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

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

Этот шаблон также можно использовать при разработке схемы счётчика.

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

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

Рис. 4. Все триггеры в этой схеме тактируются точно в одно и то же время.
Рис. 4. Все триггеры в этой схеме тактируются точно в одно и то же время.

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

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

Поскольку первый триггер (для МЗБ) должен переключаться при каждом тактовом импульсе, его входы J и K подключены к VКК или VСС, где они все время будут «высокими».

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

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

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

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

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

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

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

Рис. 6. JK-триггер оснащён выходом Q', а также выходом Q.
Рис. 6. JK-триггер оснащён выходом Q', а также выходом Q.

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

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

Рис. 7. Используем вентили ИЛИ для объединения выходов вентилей И с входами J и K каждого последующего триггера.
Рис. 7. Используем вентили ИЛИ для объединения выходов вентилей И с входами J и K каждого последующего триггера.

Эта схема не так сложна, как может показаться на первый взгляд. Входная линия управления «Вверх/Вниз» просто позволяет верхней или нижней цепочке логических элементов И передавать выходы Q/Q' на последующие каскады триггеров.

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

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

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

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

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

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

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

Рис. 10. Импульсы «тактируют» схему счётчика для отслеживания общего движения.
Рис. 10. Импульсы «тактируют» схему счётчика для отслеживания общего движения.

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

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

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

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

Если мы перепроектируем энкодер так, чтобы он имел два набора пар светодиод/фототранзистор, причём эти пары выровнены так, что их прямоугольные выходные сигналы сдвинуты по фазе друг к другу на 90°, мы получим то, что известно как квадратурный выходной энкодер. Слово «квадратура» просто относится к угловому разделению 90°.

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

Рис. 11. Схема обнаружения фазы может быть выполнена из D-триггера.
Рис. 11. Схема обнаружения фазы может быть выполнена из D-триггера.

Когда энкодер вращается по часовой стрелке, прямоугольный сигнал на входе «D» опережает прямоугольный сигнал на входе «C», а это означает, что вход «D» уже будет «высоким», когда «C» переходит из «низкого» состояния в «высокое», таким образом устанавливая триггер D-типа (делая выход Q «высоким») с каждым тактовым импульсом.

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

И наоборот, когда энкодер реверсирует вращение, вход «D» будет отставать от входного сигнала «C», что означает, что он будет «низким», когда сигнал «C» переходит от «низкого» к «высокому», «сбрасывая» D-триггер (делая выход Q «низким») с каждым тактовым импульсом.

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

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

Такие приложения очень распространены в робототехнике, управлении станками с ЧПУ и других приложениях, связанных с измерением обратимого механического движения.

См.также

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