Собираем декадный (BCD) счётчик
← Все статьи

Собираем декадный (BCD) счётчик

5 мин

Проблема: 4 бита естественным образом считают до 15

Блок CNT4 в Boolflow считает от 0 до 15, прежде чем переполниться, потому что 4 бита дают ровно 16 состояний. Чтобы управлять семисегментным индикатором обычным BCD, нужен счётчик, считающий от 0 до 9 и возвращающийся к 0, — декадный, или BCD-счётчик.

Декодируем 10, а не 9

У CNT4 есть асинхронный вход RST: как только RST=1, счёт немедленно сбрасывается в 0, независимо от такта. Классический трюк — декодировать значение 10 (двоичное 1010 — оба бита Q3 и Q1 равны 1) одним вентилем AND и подать результат прямо на RST. Счётчик считает как обычно до 9, а в момент достижения 10 срабатывает RST и сбрасывает его обратно в 0 ещё до прихода следующего тактового фронта.

CNT4Q0Q1Q2Q3ANDRST

Почему декодировать именно 10, а не 9

Если бы RST был подключён к декодированию 9, счётчик сбрасывался бы в тот же момент, как достигал 9, и наблюдатель никогда бы не увидел цифру 9 на самом деле. Декодирование 10 позволяет счётчику по-настоящему пройти через 9 как через стабильное, видимое состояние — значение 10 счётчик затрагивает лишь на то почти мгновенное мерцание, которое требуется асинхронному сбросу, чтобы сработать, — на практике незаметное. Это ровно тот приём, который классические микросхемы декадных счётчиков вроде 7490 используют внутри себя.

Попробуйте сами

Подключите Q1 AND Q3 блока CNT4 обратно на его же вход RST в редакторе схем, подайте счёт на индикатор SEG7 и убедитесь, что цифра циклически проходит от 0 до 9 и обратно к 0, вместо того чтобы продолжать до 15.

Собрать декадный счётчик в редакторе схем →