11 520 поколений за такт / 10 016 x 6 796 коробок / 24 4596 поп-карт
Вот, пожалуйста ... Было весело.
Ну, дизайн, конечно, не оптимальный. Ни с точки зрения ограничивающего прямоугольника (эти 7-сегментные цифры огромны ), ни из начального подсчета населения (есть некоторые бесполезные вещи, и некоторые вещи, которые, безусловно, можно было бы упростить), и скорость выполнения - ну ... Я Я не уверен.
Но, эй, это красиво. Смотреть:
Запустить его!
Получить дизайн из этой сути . Скопируйте весь текст файла в буфер обмена.
Новое : вот версия с индикаторами AM и PM для требовательных.
Перейти на онлайн-симулятор жизни Конвея JavaScript . Нажмите импорт , вставьте текст дизайна. Вы должны увидеть дизайн. Затем перейдите к настройкам и установите шаг генерации на 512, или что-то около этих строк, или вам придется ждать вечно, чтобы увидеть обновление часов.
Нажмите Run , подождите немного и удивитесь!
Прямая ссылка на версию в браузере.
Обратите внимание, что единственный алгоритм, который делает этот огромный дизайн пригодным для использования, - это hashlife. Но с этим, вы можете добиться полного обхода часов за считанные секунды. При использовании других алгоритмов практически невозможно даже увидеть, как меняется час.
Как это устроено
Он использует технологию P30. Просто базовые вещи, планеры и легкие космические корабли. В основном, дизайн идет сверху вниз:
- На самом верху есть часы. Это часы периода 11520. Обратите внимание, что вам нужно около 10.000 поколений, чтобы обеспечить надлежащее обновление дисплея, но дизайн все еще должен быть стабильным с часами меньшего периода (около 5.000 или около того - часы должны быть кратны 60).
- Затем идет этап распределения часов. Планер часов скопирован в сбалансированном дереве, поэтому в итоге в один и тот же момент на сцену счетчиков прибывают 32 планера.
- Стадия счетчика выполняется с использованием защелки RS для каждого состояния и для каждой цифры (мы считаем в десятичном виде). Таким образом, есть 10 состояний для правой цифры минут, 6 состояний для левой цифры минут и 12 состояний для часов (обе цифры часов объединены здесь). Для каждой из этих групп счетчик ведет себя как сдвиговый регистр.
- После этапа подсчета есть таблицы поиска. Они преобразуют импульсы состояния для отображения действий включения / выключения сегментов.
- Затем сам дисплей. Сегменты просто сделаны с несколькими строками LWSS. Каждый сегмент имеет собственную защелку для поддержания своего состояния. Я мог бы сделать простое логическое ИЛИ из состояний цифр, чтобы узнать, должен ли сегмент быть ВКЛ или ВЫКЛ, и избавиться от этих защелок, но были бы сбои для неизменяющихся сегментов, когда цифры меняются (из-за задержки сигнала). И будут длинные потоки планеров, идущие от таблицы поиска к сегментам цифр. Так что это не было бы так красиво. И это должно было быть. Да.
Во всяком случае, в этом дизайне нет ничего необычного. Там нет удивительных реакций, которые были обнаружены в этом процессе, и нет действительно умных комбинаций, о которых никто не думал раньше. Просто биты, взятые здесь и там и собранные вместе (и я даже не уверен, что сделал это «правильно» - я был совершенно новичком в этом). Однако это потребовало большого терпения. Заставить все эти планеры подняться в нужное время в нужном положении было поцарапать голову.
Возможные оптимизации:
- Вместо того, чтобы копировать и распределять одни и те же корневые часы по n ячейкам счетчика, я мог бы просто поставить один и тот же блок часов n раз (один раз для каждой ячейки счетчика). Это на самом деле было бы намного проще. Но тогда я не смог бы так легко отрегулировать его, меняя часы в одной точке ... И у меня есть опыт работы с электроникой, и в реальной схеме это было бы ужасно неправильно.
- Каждый сегмент имеет свою собственную защелку RS. Для этого требуются таблицы поиска для вывода как R, так и S импульсов. Если бы у нас была защелка, которая просто переключала бы его состояние с общего входного импульса, мы могли бы сделать таблицы поиска вдвое большими. Для точки PM есть такая защелка, но она огромна, и я не могу придумать что-то более практичное.
- Сделайте дисплей меньше. Но это было бы не так красиво. И это должно было быть. Да.