Засувний годинник
Оцінка - 53 508 (з них активно використовується 36 828 завдяки L-подібній конструкції)
Висока якість запису - https://1drv.ms/u/s!ArQEzxH5nQLKhvt_HHfcqQKo2FODLQ
Golly pattern - https://1drv.ms/u/s!ArQEzxH5nQLKhvwAmwCY-IPiBuBmBw
Керівні принципи -
- Оскільки це був мій перший раз, коли я використовував стільниковий автомат, я уникав з'єднання великих компонентів, що виготовляються попередньо. Одним правильним підходом я не був би двійковий суматор, що починається з нуля і постійно додає його до останнього виходу, а потім бінарний конвертер BCD, демультиплексор дисплея, 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 назавжди. Третій - потік з чотирьох 1s, шести 0s, фаза зміщена на шість нулів. Четвертий - це потік з восьми 0 і двох 1.
Другий трохи складніше, оскільки він має неприємну асиметрію. Однак я помічаю, що (де. Є оператор concat):
0011001100. 0011001100 = 0011001100. НЕ (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 тат, а потім синхронізувати 24-тактні псевдосигнали з 12-та та частотною частотою, після чого прив’язувати 24-татовий годинник до 120-тактного годинника, інакше ворота XOR не працюють .
- Фазовий зсув.
- Фліп-флоп. Один електрон на вході спочатку потрапляє на задану лінію, а потім через дуже конкретний проміжок часу, потрапляє на лінію скидання, даючи точно один імпульс, один імпульс назовні.
- Додавання сюди горбків - у рядку скидання збільшує затримку між встановленням та скиданням на тригер. Кожен зайвий горб дає додатковий імпульс. Внизу в дельфіні є дев'ять зайвих горбків, тому десять імпульсів між набором і скиданням.
- XOR ворота для моєї хитрої 2 ^ 1 одиниці рядків хвилин.
- І-НЕ затвор і дуже конкретна довжина частини означає, що кожен імпульс електрона, який проходить мимо, подвоюється назад на себе і знищує електрон позаду. Половина частоти. Створює 24-тактний годинник із вторинного джерела 12-такт.
- 60-ти ударний вторинний годинник, що фактично робить більшу частину роботи. Просто легше запустити швидкий годинник з повільніше, тому найповільніший годинник (120 ударів) є головним, хоча він ледь не використовується. 60-тактний годинник - серце цієї речі.
- Провід зворотного зв’язку, який несе електрони, лише коли тикає 60-тактний годинник. Він використовується спільно з воротами AND-NOT, щоб зупинити повторний перезапуск годинника від 120-тактного ведучого. Інакше трапляється багато жахливих речей, а Ctrl-Z - рятівник.
- Діод, з якого запускається 60-тактний годинник.
- Весь цей пристрій - це фліп-флоп, і ворота, і ворота AND-NOT разом. Це дає засувку. Один імпульс у ньому запускається, один імпульс у ньому зупиняється.
- Петля дроту для калібрування засувки на 10 імпульсів увімкнено, 10 імпульсів вимкнено для кожного імпульсного входу. Без нього ми отримуємо 12 імпульсів, 8 імпульсів вимикаємо. Ці десять на десяти вимкнених засувках утворюють основні компоненти десятихвилинних блоків так само, як 6-мікронні (1 імпульсні) триггери утворюють основні компоненти хвилинних одиниць.
- Початковий імпульс холодного старту спричинив усілякі проблеми, включаючи два удари поза фазою з тактовими годинниками. Це псує засувки. Цей затвор ТА ловить і виводить із синхронізуючих імпульсів - зокрема пусковий імпульс.
- Це частина дизайну, яку я дещо шкодую в ретроспективі. Він бере електрон, розбиває його на п'ять і знищує п’ять електронів позаду, приймаючи від 111111 до 100000.
- Це бере електрон і прошиває його на передній частині. Дві фази вперед, щоб бути точним. Це займає 100000 і складає 101000. У поєднанні з 16 частиною ми отримуємо 111111 -> 100000 -> 101000. З ретроспективою я хотів би зробити це 111111 -> 101010 -> 101000; він би досягнув такого ж ефекту за меншого простору.
- Описані вище шаблони потім висуваються в нижню засувку, щоб досягти 20, 40 відключення. Це розділяється, половина зміщується по фазі на 20 одиниць, а потім вони утворюють два потоки бітів високого порядку в десятки хвилин.
Частина II: Лічильник годин
Пояснення
Вхід до лічильника годин - це один імпульс електрона, раз на годину. Перший крок - звести це до одиничного імпульсу електронів, раз на дванадцять годин. Це досягається за допомогою декількох примітивів "засувка та улов".
"Засувка" - це 6-мікронний триггер, підключений до AND-NOT та AND-воріт, щоб дати 6-мікронний фіксатор. "Улов" приймає безперервний потік електронів як вхід, пропускає перший наскрізь, а потім знищує кожен другий електрон позаду, поки потік не закінчиться, в який момент скидання скидається.
Розміщення засувки з подальшим уловом послідовно призводить до того, що один електрон увімкне -> вмикає засувку, один електрон виходить на інший кінець (решта, що потрапила під улов). Тоді другий електрон у -> вимикає фіксатор, ловить мовчки скидає. Чистий ефект: перший електрон проходить через, другий електрон знищується, і так далі, і так далі, незалежно від того, яка тривалість затримки між цими електронами .
Тепер ланцюжок два "засувки і лову" в серії, і у вас є лише один з чотирьох електронів, що проходять через.
Далі візьміть третю "засувку і ловіть", але цього разу вставіть цілу четверту засувку і зачепіть за лінію SET, яка перебуває між відкидними панелями AND-NOT та SET. Я залишу вас подумати про те, як це працює, але на цей раз проходить лише кожен третій електрон, незалежно від того, як довго затримується між цими електронами .
Нарешті, візьміть один з чотирьох електронів і другий з трьох, з'єднайте їх із воротами І, і лише один з дванадцяти електронів пройде через. Весь цей розділ - це безладна вилазка доріжок ліворуч угорі лічильника години внизу.
Далі, приймайте електрон кожні дванадцять годин і розділяйте його назад на один кожні години, але виведіть кожен на інший провідник. Це досягається за допомогою довгого спірального провідника з тринадцятьма точками виходу.
Візьміть ці електрони - за годину спускайте різні провідники і натисніть на лінію SET. Лінія RESET на цьому ж відкидному флопі потім потрапляє на провідник наступної години, даючи шістьдесят імпульсів вниз на кожен провід на годину.
Нарешті - візьміть ці імпульси і перенесіть їх у сім з половиною байтів ПЗУ (пам'ять лише для читання), щоб вивести правильні бітові потоки BCD. Дивіться тут для більш детального пояснення WireWorld ROM: http://www.quinapalus.com/wires6.html
Дизайн
- Один електрон на годину введення.
- Перша засувка.
- Перший улов.
- "Latch & catch", вбудований у зовнішню лінію "засувка та улов".
- І ворота.
- Засувка AM / PM (включається / вимикається раз на дванадцять годин).
- Кожна петля дроту довжиною 6х60 = 360 одиниць.
- Фліп / Флоп повернув на бік, щоб створити менший профіль.
- Сім з половиною байтів ПЗУ.
Примітки
- Завдяки своїй електроні в хвилину, 6-мікронній конструкції, запускайте моделювання зі шістьма поколіннями на хвилину (одне покоління кожні 10 секунд) протягом годин у режимі реального часу.
- Лінія AM / PM висока (1) для AM, низька (0) для PM. Це може здатися дещо незвичним способом вибору, але виправдання є. Під час холодного запуску годинника лінія AM / PM початково природно низька (0). Як тільки лінія AM / PM піднімається високо (1), це вказує на те, що підрахунок розпочався о 12:00 ранку. Усі вихідні дані перед цією точкою слід ігнорувати, а всі результати після цієї точки вважаються значимими.
корисні посилання