Есть ли что-то характерное для числа 110? Если вы изучите последовательность, то увидите, что число 110 является первым в ряду чисел, которые начинаются с двух единиц.
Как мы можем сказать счетчику: «Когда в столбце В появится 1 и в столбце С также будет 1, необходимо сброситься до 0000?» Слово «и» здесь должно дать вам подсказку. Логический элемент И выдает высокий уровень на выходе, тогда и только тогда, когда на двух его входах высокие уровни. Именно это нам и нужно.
Можем ли мы воспользоваться этим прямо сейчас? Разумеется, поскольку все микросхемы серии 74НСхх можно легко комбинировать друг с другом. На рис. 4.140 вы видите, что я добавил элемент И. Конечно, на макетной плате вам придется добавить соответствующую микросхему — 74НС08. Она содержит четыре элемента И, из которых нам нужен только один. Поэтому, помимо подвода питания, необходимо заземлить неиспользуемые входы. Это непросто, но я покажу вам, как это сделать, после того как мы реализуем несколько дополнений и улучшений. (Неиспользуемые выходы должны остаться без подключения.)
Замечание
Изменить коэффициент пересчета счетчика можно с помощью логической микросхемы (или логической комбинации микросхем), отыскав характерную конфигурацию выходных состояний и направив сигнал обратно на вывод сброса.
Отказ от семисегментного дисплея
Для отображения значений игральных костей я мог бы использовать семисегментный дисплей, который считает от 1 до 6. Но здесь есть проблема, поскольку счетчик считает от 0 до 5. Я не знаю простого способа преобразовать двоичное число 000 в семисегментную цифру 1, число 001 — в цифру 2, и т. д.
Можем ли мы как-то заставить счетчик пропускать двоичное значение 000? Возможно, но я не знаю в точности, как. Наверное, применив трехвходовый элемент ИЛИ, который мог бы подавать сигнал обратно на тактовый вход для перевода счетчика на следующее значение, но тогда возник бы конфликт с обычными тактовыми сигналами. Все это выглядит как нагромождение сложностей.
В любом случае, меня не воодушевляет отображение цифр на семисегментном индикаторе в данном устройстве, поскольку это не похоже на реальный кубик. Почему бы не использовать обычные светодиоды, которые выглядят как точки на настоящем игральном кубике (рис. 4.141)?
Можете ли вы придумать способ преобразования двоичного выходного сигнала счетчика, чтобы светодиоды горели таким образом?
Логическая схема
Я начну с самого простого случая. Если соединить выход А счетчика (см. рис. 4.134) со светодиодом, который соответствует центральной точке в игральном кубике, то все будет работать хорошо, поскольку центральная точка зажигается только для комбинаций 1,3 и 5 и не горит для 2, 4 и 6. Именно так ведет себя выход А.
Далее все немного усложняется. Мне нужно зажечь диагональную пару точек для конфигураций 4, 5 и 6, а также другую диагональную пару для конфигураций 2, 3, 4, 5 и 6. Но как?
На рис. 4.142 показано мое решение этой задачи. Вы увидите, что я добавил еще пару логических элементов: трехвходовый ИЛИ-HE и двухвходовый ИЛИ. Рядом я показал последовательность двоичных чисел и конфигурации точек, которые создают каждое число на кубике.
Чтобы все заработало, я должен начать с комбинации 6, когда счетчик начинает отсчет с двоичного числа 000. Последовательность состояний в действительности не имеет значения, если только представлены все варианты. В любом случае они будут выбираться в случайном порядке.
На рис. 4.143 показано, как выходы счетчика включают различные конфигурации точек. Чтобы было еще понятнее, на рис. 4.144-4.146 я изобразил высокие и низкие состояния в схеме, когда счетчик считает по возрастанию от 000 к 101. Я расположил эти иллюстрации по две в каждой колонке страницы и опустил элемент И, поскольку он не делает ничего во время счета от 000 до 101. Он реагирует только тогда, когда счетчик пытается перейти к значению 110 — в этот момент элемент И сбрасывает счетчик до 000.