Игра «Жизнь» На Логических Элементах.

Заранее предупрежу: картинок довольно много.

В данной статье речь пойдет о реализации игры «Жизнь» с использованием логических элементов в симуляторе «Атануа».

«Игра жизни», пожалуй, один из самых узнаваемых клеточных автоматов.

О ней написана не одна статья, в том числе и на Хабрахабр .

Когда-то я тоже ею интересовалась, но как-то это длилось недолго.

Напомню, что такое «Жизнь»: Существует некая матрица ячеек, которая называется «вселенная» (в идеале бесконечная).

На каждой итерации (называемой «днями») любая ячейка может быть «живой» или «мертвой», а ее состояние зависит от предыдущей итерации по следующим правилам:

  • Клетка оживает, если рядом с ней находятся 3 живые клетки.

  • Клетка продолжает жить, если рядом с ней живы 2 или 3 клетки.

  • В других случаях клетка погибает.
Окрестностью клетки считаются 8 окружающих ее клеток (см.

двумерная окрестность Мура порядка 1 ).

Более подробную информацию о «Жизни» можно найти в Википедия .

Позже я где-то услышал, что современные компьютеры имеют ограничение скорости, вызванное, в том числе, наличием какого-то канала связи между памятью и вычислительным ядром.

В качестве решения было предложено собрать счетную память.

Не помню точно, помнил ли я сам «Жизнь», или она упоминалась в той статье, но мне хотелось смоделировать ее в логической схеме (точнее, в матрице одинаковых схем).

Почему «Жизнь»? Основными причинами стали ее распространенность и популярность, а также то, что «вселенные» в ней являются полными по Тьюрингу, что позволяет производить на ней любые расчеты и решать различные задачи.

Оказывается, на основе этого клеточного автомата можно создать компьютер.

В качестве инструмента был выбран симулятор Атануа ( официальный сайт ), так как он довольно прост в освоении и отображает состояние всех линий.

Конечным результатом было следующее: Диаграмма одной ячейки

Игра «Жизнь» на логических элементах.
</p><p>

Одной из удобных особенностей симулятора Atanua является то, что вы можете подключать схемы как своего рода микросхемы к другим проектам.

Этим я и воспользовался, собрав матрицу для отладки и экспериментов.

Клеточная матрица

Игра «Жизнь» на логических элементах.
</p><p>

Для более детального просмотра верхнего левого угла:

Игра «Жизнь» на логических элементах.
</p><p>

Кнопка «r» используется для сброса схемы.

Кнопки с надписью «0» используются для перевода ячейки в активное состояние.

Хочу отметить, что сброс повторным нажатием пока не реализован.

Три нижних заземления используются в качестве ограничителей цепи для предотвращения появления различных артефактов.

В Атануа провод может иметь 4 состояния:

  • темно-зеленый: лог.

    0;

  • светло-зеленый: лог.

    1;

  • красный: подключен неправильно;
  • белый: не подключен (неопределенное состояние).

При этом если на вход логического элемента подается неопределенное состояние, то кто-то может распознать его как 0, а кто-то как 1. Для этого были установлены ограничители в виде установки неиспользуемых выводов в 0. Не обращайте внимания на верхнее заземление.

Исходная версия схемы требовала инициализации, для чего и использовался этот вывод. На данный момент это рудимент (чтобы не переделывать матрицу), и ее состояние может быть любым.

Еще один провод, выходящий за край рисунка, — это выход тактового сигнала.

Он идет к набору генераторов, на которых проверял максимальную скорость.

Теперь давайте более подробно рассмотрим расположение ячеек.

В связи с проблемами с качеством скриншотов, предоставлю фотографии отдельных узлов.



регистр



Игра «Жизнь» на логических элементах.
</p><p>

На рисунке выше показан 2-битный сдвиговый регистр с циклическим циклом на триггерах D, который действует как память.

С этим связан один неприятный момент, который мне еще предстоит исправить: во время работы схема как будто моргает, так как в активном состоянии (когда в этот регистр записывается информация, то есть в состоянии живой ячейки) , триггеры обмениваются между собой 0 и 1 и получается, что на выходе F (выход для индикации состояния, например, на светодиод) у нас либо 0, либо 1 (это видно на видео в конце статья).

RST — вход сброса.

SET – вход для перевода ячейки в состояние живой клетки.

Как уже говорилось, индивидуальный сброс ячеек пока недоступен.

Вверху слева находится тактовый сигнал.

Подробнее о двух соседних проводах ниже.



Проверить блок



Игра «Жизнь» на логических элементах.
</p><p>

В блоке проверки проверяется состояние игры.

Сверху к рождению, снизу к выживанию.

Особенность этого блока в том, что его можно подстраивать под другие правила, организуя тем самым аналогичные клеточные автоматы.

Выходы сумматоров находятся слева, а два провода, идущие к регистру, — снизу.

Фактически они подключены к участку одной из линий передачи регистра.



Сумматоры



Игра «Жизнь» на логических элементах.
</p><p>

Пожалуй, самая большая и противоречивая часть схемы — это сумматоры параллельного типа.

Реализовав его, я решил задачу проверки необходимых условий «в лоб», суммируя все входы А0-А7 из соседних ячеек и проверяя результат на соответствие условиям.

В этом случае сначала суммируются входы A0+A1+A2, A5+A6+A7, затем результатом второй суммы являются выводы A3 и A4 и так далее.

В итоге у нас получилось 6 сумматоров и 1 полусумматор.

Стоит отметить, что один из сумматоров можно заменить и полусумматором, поскольку один из его входов не используется.

Не помню, почему я сделал один заземленный вход (тёмно-зелёный внизу слева, выходящий за границы картинки).

Изначально я хотел упростить ее с помощью DNF или CNF, но решать карту Карно 16x16 у меня пока нет желания.

Так что я не исключаю, что этот модуль может иметь альтернативный вид. С — это вход такой частоты, он не имеет никакого отношения к суммирующей схеме, он идет на регистр.

Про Init я писал выше — рудимент от предыдущей версии.



Нижняя граница

Я не считаю Игру Жизни достойным клеточным автоматом для реализации счетной памяти, так как «программа» для такого компьютера занимала бы довольно много места и была бы сложна в реализации.

Но все же схема позволяет мечтать о микросхеме с реализацией ячеек этой игры.

Думаю, было бы весьма интересно увидеть аппаратную реализацию этого клеточного автомата.

И я имею в виду не микроконтроллеры с программой, а исключительно на ячейках из логических элементов.

Что касается схемы, то в ней конечно много недостатков, но для экспериментов вполне достаточно.

Улучшу ли я его? Честно говоря, я не знаю, как почувствует мое сердце.

Напоследок немного видео работы: Планер: Маленький корабль: Для пятидесятиборья также подходят: Файлы проекта на Гугл Диске.

Некоторые пояснения по содержанию: live.atanua – клетка; LiveFieldM.atanua — матрица; LiveField.atanua — небольшой матричный элемент (8x8), из которого был создан LiveFieldM. Края не заземлены.

Для обнаружения поместите их в одну папку.

Если не поможет, отредактируйте файлы в любом текстовом редакторе (по структуре, обычном XML).

Теги: #игра в жизнь #логические схемы #Аномальное программирование #Алгоритмы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.