Найти тему
Робототехника

Создаем схему недвоичного счетчика.

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

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

-2

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

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

Для быстрого знакомства есть видеообзор алгоритма за 3 минуты, и мы его сейчас разберем.

Но это очень краткий обзор, более детальное видео будет в конце статьи.

А теперь приступаем к реализации:

1. Возьмем любой код в двоичной системе, но отличный от обычного суммирующего. Я взял за основу код грея для 4-х разрядов.

-3

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

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

-4

Стоит заметить, что во второй таблице последним состоянием будет начальное состояние выходов первой таблицы - 0000. Проверьте, что всё верно и переходите дальше.

3. Далее составляем третью таблицу с учетом переключений - динамическую таблицу состояний:

-5

Преобразование происходит с помощью маленькой таблицы переходов. Так, если в первой таблице X =0 и во второй тоже X=0, то и в третьей таблице останется состояние 0 (это хранение, по сути). Аналогично для единицы. А вот если из 0 переходим в 1, то имеет место передний фронт - стрелка вверх. Это значит, что триггер в режиме установки 1. Аналогично и для заднего фронта. После этого обязательно проверяем результат.

4. Следующий этап. Строим диаграмму Вейча, или берем из Интернета. Выглядит она следующим образом:

-6

Каждая позиция показывает, на пересечении каких состояний у нас находится код. Так, например, 0000 находится в левом нижнем углу на пересечении Не(Q0) Не( Q1) Не(Q2) Не(Q3) (все они выделены черным фоном). А код 1111 на пересечении Q0 Q1 Q2 Q3. И таким образом всё заполняется.

После того, как таблица заполнена, переписываем номера строчек в таблице, которым соответствует данный код.

-7

Так например, комбинация 0000 стоит на 0 -ом такте, а 1100 на 8-ом такте. И так заполняем 16 ячеек.

Далее начинается самое интересное.

5. Рисуем Карты Карно. Схематически это выглядит так:

-8

На этой картинке я показал, как появилась исходная таблица с нумерацией, и далее, как мы третий столбец динамической таблицы записываем в третью таблицу, заполняя по номерам. Можно сразу вставлять в диаграмму Вейча, но там можно запутаться. После этого у нас для каждого разряда есть своя таблица, в которой мы вписали 0,1,🔽,🔼

На этом первый этап закончен.

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

-9

При желании можно и самостоятельно её составить, но она есть в справочниках.

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

-10

То есть по каждому разряду мы получаем две новых таблицы: для J и для K, Это потребует времени и внимательности, но за это мы получаем уже практически готовое решение. А мы движемся далее.

7. Далее стоит задача выделить 1-цы в группы, исключая нули. Вот пример для входа J1 на первом разряде:

-11

А теперь посмотрим, по какому принципу из этих таблиц можно получить формулы.

-12

Чем меньше область, тем больше выходов Q используем. Так, если у нас нет 0, то можно взять всю область, и тогда на вход смело подаем "1". Если мы можем взять только Q0, то туда войдут 8 элементов, и так далее. Для одной ячейки необходимо задействовать все 4 выхода.

В нашем примере J1 можно найти, объединив по 2 ячейки и сложив их.

-13

Получим вот такую формулу. Аналогично находим для остальных входов.

Получим такой набор уравнений:

-14

А теперь просто берем и преобразуем логическое выражение в схему. В конце статьи прикладываю ролик, где произведено полное моделирование. Все уравнения верны и проверены, можете взять их за основу. Итоговая схема выглядит так:

Её работу и создание, можете посмотреть на видео.
Её работу и создание, можете посмотреть на видео.

Её работу и создание можете посмотреть на видео:

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

У меня на этом всё. Благодарю за внимание.

99 товаров для электронщика.

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

99 товаров для электронщика.