Для начала вспомним, что означает понятие "счётчик." Это простое электронное последовательное устройство (то есть зависящее не только от текущего состояния входных сигналов, но и от своего предыдущего состояния, иначе - обладающее элементами памяти), которое преобразует число входных импульсов в двоичный код. Пример диаграммы, иллюстрирующей работу счетчика, можно увидеть на следующем рисунке:
Схема для такого счетчика может иметь самый простой вид. Существуют варианты последовательного и параллельного суммирующих счетчиков.
В интернете встречается множество таких схем, и большой проблемы в их реализации нет. Гораздо интереснее построить счетчик, в котором состояния изначально могут меняться произвольным образом. При этом получается, что не важно, каким он будет - суммирующим или вычитающим.
Существует методика, которая позволяет взять любую таблицу истинности и построить на выбранных элементах (JK, D, T - триггерах) планируемый счетчик.
Для быстрого знакомства есть видеообзор алгоритма за 3 минуты, и мы его сейчас разберем.
Но это очень краткий обзор, более детальное видео будет в конце статьи.
А теперь приступаем к реализации:
1. Возьмем любой код в двоичной системе, но отличный от обычного суммирующего. Я взял за основу код грея для 4-х разрядов.
Его идея состоит в том, что поступление одного входного тактового импульса изменяет состояние выходной комбинации не более чем в одном разряде. Либо в сторону увеличения, либо в сторону уменьшения.
2. Рисуем рядом вторую таблицу, которая должна получиться из первой. Таким образом мы получим две таблицы.
Стоит заметить, что во второй таблице последним состоянием будет начальное состояние выходов первой таблицы - 0000. Проверьте, что всё верно и переходите дальше.
3. Далее составляем третью таблицу с учетом переключений - динамическую таблицу состояний:
Преобразование происходит с помощью маленькой таблицы переходов. Так, если в первой таблице X =0 и во второй тоже X=0, то и в третьей таблице останется состояние 0 (это хранение, по сути). Аналогично для единицы. А вот если из 0 переходим в 1, то имеет место передний фронт - стрелка вверх. Это значит, что триггер в режиме установки 1. Аналогично и для заднего фронта. После этого обязательно проверяем результат.
4. Следующий этап. Строим диаграмму Вейча, или берем из Интернета. Выглядит она следующим образом:
Каждая позиция показывает, на пересечении каких состояний у нас находится код. Так, например, 0000 находится в левом нижнем углу на пересечении Не(Q0) Не( Q1) Не(Q2) Не(Q3) (все они выделены черным фоном). А код 1111 на пересечении Q0 Q1 Q2 Q3. И таким образом всё заполняется.
После того, как таблица заполнена, переписываем номера строчек в таблице, которым соответствует данный код.
Так например, комбинация 0000 стоит на 0 -ом такте, а 1100 на 8-ом такте. И так заполняем 16 ячеек.
Далее начинается самое интересное.
5. Рисуем Карты Карно. Схематически это выглядит так:
На этой картинке я показал, как появилась исходная таблица с нумерацией, и далее, как мы третий столбец динамической таблицы записываем в третью таблицу, заполняя по номерам. Можно сразу вставлять в диаграмму Вейча, но там можно запутаться. После этого у нас для каждого разряда есть своя таблица, в которой мы вписали 0,1,🔽,🔼
На этом первый этап закончен.
6. На этом шаге мы выбираем базу - триггер, на котором мы будем реализовывать данный счетчик. Я взял JK-триггер, поэтому выбираю для него таблицу переходов:
При желании можно и самостоятельно её составить, но она есть в справочниках.
С помощью этой таблицы получаем из 4 таблиц или карт Карно, 8 карт для каждого входа. Картина будет выглядеть так:
То есть по каждому разряду мы получаем две новых таблицы: для J и для K, Это потребует времени и внимательности, но за это мы получаем уже практически готовое решение. А мы движемся далее.
7. Далее стоит задача выделить 1-цы в группы, исключая нули. Вот пример для входа J1 на первом разряде:
А теперь посмотрим, по какому принципу из этих таблиц можно получить формулы.
Чем меньше область, тем больше выходов Q используем. Так, если у нас нет 0, то можно взять всю область, и тогда на вход смело подаем "1". Если мы можем взять только Q0, то туда войдут 8 элементов, и так далее. Для одной ячейки необходимо задействовать все 4 выхода.
В нашем примере J1 можно найти, объединив по 2 ячейки и сложив их.
Получим вот такую формулу. Аналогично находим для остальных входов.
Получим такой набор уравнений:
А теперь просто берем и преобразуем логическое выражение в схему. В конце статьи прикладываю ролик, где произведено полное моделирование. Все уравнения верны и проверены, можете взять их за основу. Итоговая схема выглядит так:
Её работу и создание можете посмотреть на видео:
Данный материал только кажется простым, на самом деле в нём есть много интересных моментов. С помощью данного алгоритма на J-K триггерах вы можете создавать не только схемы счетчиков, но и схемы других динамических устройств.
У меня на этом всё. Благодарю за внимание.
⭐ 99 товаров для электронщика.
Создал недавно тему, в которую собираю все товары с Алика, могут быть полезны тем, кто увлекается электроникой.
⭐ 99 товаров для электронщика.