Комментарии 24
Ещё была мысль сделать в двух цветах (змей каноничного зелёного, а яблоко красного цвета), но почта где-то по пути потеряла RGB-панель…
Люблю олдскул без ардуин.
Кстати, когда я учился, подобный автомат на ROM и регистрах называли «секвенсер», а сейчас нигде почему то такой термин не вижу.
Жду продолжения…
Милота!
Набросай только общие идеи по переводу 4 * 28C16 в более современные ИМС (вплоть до 4 Мб "параллельных флешек", не firmware HUB, с устаревших материнок). Ибо у меня в загашнике есть только 2 (две) штуки 27C16, а эти флэшки нынче найдутся у любого желающего. ИМХО.
Если делать на современных имс, то это скорее будет что-то типа iCEstick. А 28с16 в виде б/у или выпаяных продают китайцы. Если с ними не охота связываться, то в разных магазинах всё ещё встречаются 28c64b, можно взять их если забить на лишние разряды.
Вот прямо ждал что тут будет очередная статья про ардуино! Ан нет. Тут настоящий хардкор! У меня только один вопрос: сколько лет вашему сыну?
Мда… Помню, курсовой по электронике у меня и ещё одного товарища свелся как раз к тому, что вместо разработки набора логики мы использовали одну микросхему-стабилизатор питания и одну eeprom. Но сами дошли что так можно, честно-честно.
Я конечно не буду утверждать, что в 8 это невозможно понять, но все же это больше похоже на материал для очень продвинутого 14-16-летнего
Более развёрнутый ответ надеюсь напишу во второй части.
Если изучаете для себя, то книжка Харрисов — самое то. Для дальнейшего погружения в тему рекомендую Digital Design. Principles and Practices 4th ed. John F. Wakerly.
А если с ребенком, то нужно примерно представлять какие вещи будут легко понятны, а какие стоит пропустить. Тут к сожалению хороших книг не посоветую, опираюсь на свой опыт, что мне самому было понятно в том возрасте, а что уже было тяжело/неинтересно.
Воспользуемся другим трюком — сделаем наоборот: заменим EEPROM на нашу логическую схему и засунем её в программатор.
Гениально! У меня-то первая мысль — сгенерить таблицу на каком-нибудь питоне, но скопировать живую логику я бы не догадался.
Жду второй части. Намного интересней наблюдать, как змейку реализуют с учётом минимизации ресурсов (читай: корпусов), чем на сотую реализацию на FPGA.
В ней нужно иметь «длину тела», которую вначале поставить в одну ячейку массива. Это и будет голова.
И направление, в котором голова поедет в следующем ходу.
А затем все ненулевые ячейки просто уменьшаются с каждым ходом на 1, и светятся только те точки, где не ноль.
В итоге у змеи нет головы и хвоста, а есть только «сегменты», у каждого их которых своё время жизни. И от величины начального значения зависит, сколько тактов он проживёт, а соответственно и видимая длина хвоста. Удлинять просто — вписывай в новые позиции бОльшее число. Обработка коллизий тоже проста — если в новой позиции не ноль, то либо конкретное значение яблока, либо свой же сегмент.
Это, конечно, в битах не вывести, нужна работа с другими элементами. НО как подсказывает мой опыт создания автоматов на логике, тут есть потенциал уменьшить число корпусов.
Если вам удастся в таком варианте уменьшить количество корпусов (без использования фпга), то будет очень интересно посмотреть на такой вариант. Наверное, можно использовать RAM, но обвязка кажется что будет сложнее.
Удачи в вашем начинании!
Собираем игру «Змейка» на макетной плате. Часть 1: конечные автоматы