Часы с замком
Оценка - 53 508 (из них только 36 828 активно используются из-за L-образного дизайна)
Высококачественная запись - https://1drv.ms/u/s!ArQEzxH5nQLKhvt_HHfcqQKo2FODLQ
Шаблон Golly - https://1drv.ms/u/s!ArQEzxH5nQLKhvwAmwCY-IPiBuBmBw
Руководящие принципы -
- Так как я впервые использовал сотовый автомат, я избегал связывать вместе большие готовые компоненты. Один из подходов, который я бы не использовал, был бы двоичным сумматором, начинающимся с нуля и непрерывно добавляющим один к последнему выходу, сопровождаемым двоичным преобразователем в двоично-двоичные разряды, демультиплексором дисплея, 7-сегментным декодером и 7-сегментным дисплеем.
- Должен быть возможен холодный запуск часов. Я наложил на себя дополнительное ограничение, что одна электронная головка, помещенная в определенную ячейку проводника, должна правильно запускать часы. Я не хотел требовать тщательной ручной синхронизации многих разнородных триггеров и отдельных элементов синхронизации перед началом симуляции.
Часть I: Счетчик минут
Математика
Подсчет от 0 до 9 в двоичном виде (для младшего разряда минут) происходит следующим образом:
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
Считая, что в качестве столбцов наименее значимый (поток битов 2 ^ 0) идет 01010101, поток 2 ^ 1 идет 0011001100, поток 2 ^ 2 идет 0000111100, а поток 2 ^ 3 идет 0000000011.
Первое легко - просто флип-флип 01 навсегда. Третий - это поток из четырех единиц, шести нулей, сдвинутый по фазе на шесть нулей. Четвертый - это поток из восьми нулей и двух единиц.
Второй немного сложнее, так как у него неприятная асимметрия. Тем не менее, я замечаю, что (где оператор concat):
0011001100. 0011001100 = 0011001100. NOT (1100110011) = 00110011001100110011 XOR 00000000001111111111 = 5 (0011) XOR 00000000001111111111
(Между прочим, как упоминалось позже, большинство моих часов работает на 60-битном тикере. Волна двойной длины 00000000001111111111 - это то, где возникает необходимость в 120-битном тикере).
дизайн
Выходные потоки сверху вниз идут в минутах (2 ^ 0, 2 ^ 1, 2 ^ 2, 2 ^ 3), затем в десятки минут (2 ^ 0, 2 ^ 2, 2 ^ 1). Обратите внимание, что нижние два провода пересекаются.
- 120-тактные основные часы.
- Где разместить электрон для холодного старта. Без какого-либо хвоста электрона он расщепляется в двух направлениях, но диод, находящийся выше, ловит одно из них, давая хороший циклический электрон, вращающийся вокруг 120-разрядной петли.
- 12-ти тактные вторичные часы.
- Катушка проводник + диод запускает вторичные 12-разрядные часы. Слова не могут описать, насколько неприлично синхронизировать этот маленький кусочек. Вы должны синхронизировать тактовые импульсы 120 и 60 битов, а затем синхронизировать в псевдо-тактах с 12-битным частотным делителем и частотой 24 бита, а затем привязать 24-битные тактовые импульсы к 120-тактовым тактам, иначе вентиль XOR не работает ,
- Сдвиг фазы.
- Резкий поворот. Один электрон на входе сначала попадает на заданную линию, затем через очень определенное время попадает на линию сброса, давая ровно один импульс, один импульс.
- Добавление горбов здесь - на линии сброса, увеличивает задержку между установкой и сбросом на триггере. Каждый дополнительный горб дает дополнительный импульс. Триггер ниже имеет девять дополнительных горбов, так что десять импульсов между установкой и сбросом.
- Ворота XOR для моей хитрой линии 2 ^ 1 минуты.
- Затвор «И-НЕ» и очень специфическая длина части означают, что каждый прошедший электронный импульс удваивается обратно на себя и уничтожает электрон позади. Частота Halver. Создает 24-битные часы из 12-битного вторичного источника.
- 60-ти тактные вторичные часы, которые фактически выполняют большую часть работы. Просто проще запустить быстрые часы с более медленных, поэтому самые медленные часы (120 ударов) являются основными, хотя они почти не используются. Часы с 60 ударами - сердце этой вещи.
- Провод обратной связи, который переносит электроны только тогда, когда тикают 60-тактовые часы. Он используется вместе с логическим элементом И-НЕ, чтобы остановить повторный запуск часов с 120-битного мастера. В противном случае происходит много ужасных вещей, и Ctrl-Z спаситель.
- Диод, с которого запускаются 60-битные часы.
- Все это устройство представляет собой триггер, ворота И и И-НЕ вместе. Это дает защелку. Один импульс запускает его, один импульс останавливает его.
- Петля проволоки для калибровки защелки на 10 импульсов, 10 импульсов для входа один на десять. Без него мы получаем 12 импульсов, 8 импульсов выключены. Эти десять на десять защелок образуют основные компоненты десятиминутных блоков таким же образом, как 6-микронные (1 импульс) триггеры формировали основные компоненты минутных блоков.
- Начальный импульс холодного пуска вызвал всевозможные проблемы, в том числе сдвиг по фазе по отношению к тактам, которые он запускает. Это портит защелки. Этот логический элемент И захватывает и удаляет несинхронные импульсы, в частности, стартовый импульс.
- Это часть дизайна, о котором я немного сожалею в ретроспективе. Он берет электрон, разбивает его на пять и уничтожает пять электронов позади, занимая 111111-100000.
- Это берет электрон и сшивает это на фронте. Два этапа впереди, если быть точным. Он берет 100000 и составляет 101000. В сочетании с частью 16 мы получаем 111111 -> 100000 -> 101000. Оглядываясь назад, я хотел бы, чтобы я сделал 111111 -> 101010 -> 101000; он бы достиг того же эффекта в меньшем пространстве.
- Вышеприведенные шаблоны затем вставляются в нижнюю защелку для достижения 20 включений, 40 выключений. Это разделено, половина сдвинута по фазе на 20 единиц, и затем они формируют два потока битов высокого порядка из десятков минут.
Часть II: Счетчик часов
объяснение
Вход в счетчик часов представляет собой одиночный электронный импульс, один раз в час. Первым шагом является сведение этого к одному электронному импульсу, один раз каждые двенадцать часов. Это достигается с помощью нескольких примитивов "latch & catch".
«Защелка» - это 6-микронный триггер, подключенный к И-НЕ и вентилю И, чтобы получить 6-микронную защелку включения / выключения. «Улов» принимает непрерывный поток электронов в качестве входных данных, пропускает их сначала, а затем уничтожает каждый второй электрон, пока поток не закончится, и в этот момент улов сбрасывается.
Установка защелки с последующим улавливанием последовательно приводит к тому, что один электрон входит в>> защелку, а один электрон - с другого конца (остальное улавливается уловом). Затем второй электрон в -> выключает защелку, ловит молча, сбрасывает. Чистый эффект: первый электрон проходит через, второй электрон аннигилирует, и так далее, и так далее, независимо от того, как долго задержка между этими электронами .
Теперь последовательно соедините две цепочки «защелки и уловы», и у вас будет проходить только один из четырех электронов.
Затем возьмите третью «защелку и защелку», но на этот раз вставьте целую четвертую защелку и зафиксируйте на линии SET триггера, между вентилем AND-NOT и SET триггера. Я оставлю вас думать о том, как это работает, но на этот раз только один из трех электронов проходит, независимо от того, как долго задержка между этими электронами .
Наконец, возьмите один из четырех электронов и один из трех, объедините их с логическим элементом И, и только один из двенадцати электронов пройдет через них. Весь этот раздел представляет собой грязные путаницы путей в верхнем левом углу счетчика часов ниже.
Затем возьмите электрон каждые двенадцать часов и делите его на один каждый час, но выводите каждый на другой проводник. Это достигается с помощью длинного спирального проводника с тринадцатью точками выхода.
Возьмите эти электроны - один час по разным проводникам и попали на линию SET триггера. Линия RESET на том же триггере попадает в проводник следующего часа, давая шестьдесят импульсов вниз по каждому проводу в час.
Наконец - возьмите эти импульсы и передайте их в семь с половиной байтов ПЗУ (постоянное запоминающее устройство) для вывода правильных битовых потоков BCD. Смотрите здесь для более подробного объяснения ROM WireWorld: http://www.quinapalus.com/wires6.html
дизайн
- Один электрон в час на входе.
- Первая защелка.
- Первый улов.
- «Защелка и защелка» встроена во внешнюю строку «Защелка и защелка».
- И ворота.
- Защелка AM / PM (включается / выключается каждые двенадцать часов).
- Каждая петля провода имеет длину 6x60 = 360 единиц.
- Флип / Флоп повернул на бок, чтобы создать меньший профиль.
- Семь с половиной байтов ПЗУ.
Заметки
- Благодаря 6-микронному дизайну с одним электроном в минуту, симуляция запускается со скоростью шесть поколений в минуту (одно поколение каждые 10 секунд) для часов реального времени.
- Линия AM / PM является высокой (1) для AM, низкой (0) для PM. Это может показаться немного необычным способом выбора, но есть основания. Во время холодного пуска часов линия AM / PM изначально низка (0). Как только линия AM / PM становится высокой (1), это означает, что отсчет начался в 12:00. Весь вывод до этой точки должен игнорироваться, весь вывод после этой точки считается значимым.
Полезные ссылки