Счётчики относятся к функциональным узлам последовательностного типа, логическое состояние которых определяется последовательностью поступления входных сигналов. Счётчики применяются в различных цифровых устройствах. Назначение счётчика очевидно: это подсчёт числа некоторых событий или временных интервалов, либо упорядочение событий в хронологической последовательности. Счётчики могут выполнять и другие функции, например, их можно использовать для адресации, в качестве делителей частоты и элементов памяти.
Счётчик характеризуются прежде всего модулем счёта (ёмкостью) М. Он переходит при поступлении входных сигналов из состояния в состояние, после каждых М сигналов возвращаясь к началу цикла. Счётчики классифицируют по значению модуля, направлению счёта, способу организации межразрядных связей, по способу подачи тактового импульса.
По значению модуля счёта различают двоичные (М=2n), двоично-кодированные (с произвольным модулем, но кодированием состояний двоичными кодами), счётчики с одинарным кодированием и др.
По направлению счёта счётчики делят на суммирующие (прямого счёта), вычитающие (обратного счёта) и реверсивные (с изменением направления счёта).
По способу организации межразрядных связей различают счётчики с последовательным, параллельным и комбинированными переносами. Параллельные счётчики называют синхронными, а последовательные - асинхронными.
Цифровую схему, выполняющую функцию счёта, можно собрать из триггеров. Рассмотрим некоторые схемы счётчиков.
Счётчики со сквозным переносом
Процедура двоичного и десятичного счёта показана в табл. 13.1. Используя 4 двоичных разряда (D, C, B и A) можно считать от 0000 до 1111 (от 0 до 15 в десятичной системе). Столбец А соответствует самому младшему разряду, а столбец D самому старшему разряду. Если нужен счётчик, который считает от 0000 до 1111 (в двоичной системе), у него должно быть 16 различных выходных состояний, т.е. нужен счётчик с модулем 16. На рис.13.1 показана схема счётчика по модулю 16, составленная из 4JK‑триггеров. Каждый JK‑триггер работает в режиме переключения (J=K=1). Пусть в начальный момент состояние выходов счётчика соответствует двоичному числу 0000 (счётчик очищен). При поступлении тактового импульса 1 на синхронизирующий вход (C) триггера T1 этот триггер переключается (при прохождении среза импульса) и на индикаторе появляется двоичное число 0001. Тактовый импульс 2 возвращает триггер T1 в исходное состояние 0 (Q=0), что в свою очередь приводит к переключению триггера T2 в состояние 1 (Q=1). На индикаторе появится число 0010. Счёт продолжается: срез сигнала на выходе каждого триггера запускает следующий триггер.
Таблица 13.1.
Таблица двоичного и десятичного счета
Рис.13.1. Схема счетчика по модулю 16
Из табл.13.1 видно, что цифры (1 или 0) в столбце А изменяется на каждом шаге счёта, т.е. триггер T1 переключается с приходом каждого нового тактового импульса. Из столбца В видно, что триггер T2 переключается в два раза реже триггера T1. Каждый более старший разряд «переключается» в 2 раза реже предыдущего.
На рис.13.2 показаны временные диаграммы при работе счётчика в процессе счёта до 10 (двоичное число 1010).
Рис.13.2. Временные диаграммы работы счетчика по модулю 16
Синхронизирующему входу состветствует верхняя диаграмма. Диаграммы для выходов Q триггеров T1, T2, T3, T4 приведены ниже. Под диаграммами указаны двоичные числа, соответствующие различным состояниям счётчика. Из рис.13.2 видно, что тактовые импульсы запускают только триггер T1, триггер T1 запускает триггер T2, триггер T2 запускает триггер T3 и т.д. Каждый триггер воздействует только на один (следующий за ним триггер), поэтому для переключения всех триггеров необходимо некоторое время. Например, на импульсе 8 (рис.13.2) тактовый импульс запускает триггер T1, вызывая его переключение в состояние 0. Это в свою очередь приводит к переключению триггера T2 из состояния 1 в состояние 0. Затем точно также переключается T3. В момент установки на выходе Q триггера T3 уровня логического 0 запускается триггер T4, который переключается из состояния 0 в состояние 1. Таким образом, изменение состояний последовательно распространяется по цепочке триггеров. Рассматриваемый счётчик называют счётчиком со сквозным переносом. Кроме этого данный счётчик можно назвать асинхронным, поскольку предыдущий триггер вырабатывает для последующего тактовые импульсы. По направлению счёта счётчик, изображённый на рис.13.1 является суммирующим (прямого счёта).
Асинхронные счётчики по модулю 10
Счётчик по модулю 10 считает от 0000 до 1001 (от 0 до 9 в десятичной системе), т.е. до черты в табл.13.1. Для построения такого счётчика трёх триггеров недостаточно (10>23), поэтому он содержит 4 триггера, но имеет обратные связи, останавливающие счёт при коде 9=1001. На рис.13.3 показана схема счётчика по модулю 10, в которую кроме 4 триггеров включён логический элемент И‑НЕ, для установки всех триггеров в нулевое состояние (очистки счетчика) с приходом десятого импульса.
Рис.13.3. Схема асинхронного счетчика по модулю 10
Рассмотрим принцип работы данной схемы (рис.13.3). Из табл.13.1 видно, что за числом 1001 следует 1010 (10 в десятичной системе). При подаче логической 1, содержащейся в разрядах двоек и восьмерок двоичного числа 1010, на входы элемента И‑НЕ, этот элемент подаст логический 0 на входы R четырех триггеров. Таким образом, все триггеры установятся в состояние 0 и счетчик снова начинает считать от 0000 до 1010. Подобное использование логического элемента И‑НЕ позволяет создать счетчики с некоторыми другими значениями модуля. Счетчик, изображенный на рис.13.3 называют также декадным (десятичным) счетчиком.
Синхронные счетчики
В синхронных счетчиках все триггеры получают тактовый импульс одновременно, поскольку тактовые входы их соединяются параллельно. Такие триггеры переключаются практически одновременно. В асинхронных счетчиках каждый триггер вносит в процесс счета определенную задержку, поэтому младшие разряды результирующего кода появляются на выходах триггеров не одновременно, т.е. несинхронно с соответствующим тактовым импульсом. Например, для четырехразрядного асинхронного счетчика код 1111 появится на выходах триггеров уже после того, как поступит шестнадцатый тактовый импульс. Код 1111 сформируется не одновременно.
Рассмотрим схему 3‑разрядного счетчика по модулю 8 (рис.13.4). Все синхронизирующие входы триггеров (C) соединены параллельно, тактовые импульсы поступают непосредственно на синхронизирующий вход каждого триггера.
Рис.13.4. Схема синхронного счетчика по модулю 8
Последовательность двоичных чисел, проходимая счетчиком за один цикл счета (счетная последовательность) приведена в табл.13.2.
Таблица 13.2.
Счетная последовательность импульсов
Рассмотрим принцип работы данного счетчика в течение одного цикла счета. На каждом шаге цикла входной импульс поступает на синхронизирующий вход каждого триггера.
Импульс 1 — строка 2 табл.13.2. Переключается только триггер T1, поскольку только у него на входах J и K действует уровень логической 1. T1 переходит из состояния 0 в состояние 1.
Результат: на выходе счетчика 001.
Импульс 2 — строка 3. Переключаются два триггера T1 и T2, поскольку на входах J и K этих триггеров действует уровень логической 1. T1 переходит из состояния 1 в состояние 0, T2 — из состояния 0 в состояние 1.
Результат: на выходе 010.
Импульс 3 — строка 4. Переключается только один триггер. T1 переходит из состояния 0 в состояние 1. T2 не переключается, поскольку на входах J и K действует уровень логического 0.
Результат: на выходе 011.
Импульс 4 — строка 5. Все триггеры меняют свое состояние на противоположное. T1 и T2 переходят из 1 в 0. T3переключается из 0 в 1.
Результат: на выходе 100.
Импульс 5 — строка 6. Триггер T1 переходит из состояния 0 в состояние 1.
Результат: на выходе 101.
Импульс 6 — строка 7. Переключаются два триггера. T1 переходит из 1 в 0, T2 - из 0 в 1.
Результат: на выходе 110.
Импульс 7 — строка 8. Триггер T1 переходит из состояния 0 в состояние 1.
Результат: на выходе 111.
Импульс 8 — строка 9. Все триггеры меняют свое состояние, переходя из 1 в 0.
Результат: на выходе 000.
Следует заметить, что в данном счетчике JK‑триггеры используются как в режиме переключения (J=K=1), так и в режиме блокировки (J=K=0).
Вычитающие счетчики
Помимо суммирующих счетчиков (прямого счета), рассмотренных выше, существуют счетчики которые считают в обратном направлении - вычитающие.
Рассмотрим схему асинхронного вычитающего счетчика по модулю 8 (рис.13.5).