Как стать автором
Обновить

Собираем игру «Змейка» на макетной плате. Часть 1: конечные автоматы

Время на прочтение6 мин
Количество просмотров10K
Всего голосов 49: ↑49 и ↓0+49
Комментарии24

Комментарии 24

Впечатляет. Будете со временем усложнять, добавляя фон, затем два фона, перемещающихся с разными скоростями, различные звуки, пока по сложности не сравнится с «Пониматом» Коковина?
К сожалению, нет )) Моих сил и интереса ребенка (что важнее) не хватило даже на то чтобы реализовать пересечение с хвостом, мы пошли дальше. Но в теории это всё тоже реально сделать.

Ещё была мысль сделать в двух цветах (змей каноничного зелёного, а яблоко красного цвета), но почта где-то по пути потеряла RGB-панель…
Если следовать zanuda mode, в «Понимате» ПЗУ хранят спрайты, фоны, музыку и сэмплы, но в логике игры не участвуют, а здесь — участвуют. Но зато всё документировано, минималистично и повторяемо.
Отличная работа!
Люблю олдскул без ардуин.
Кстати, когда я учился, подобный автомат на ROM и регистрах называли «секвенсер», а сейчас нигде почему то такой термин не вижу.
Жду продолжения…
А я встречал название «микропрограммный автомат».
про это как раз есть мини-спойлер ))

Милота!
Набросай только общие идеи по переводу 4 * 28C16 в более современные ИМС (вплоть до 4 Мб "параллельных флешек", не firmware HUB, с устаревших материнок). Ибо у меня в загашнике есть только 2 (две) штуки 27C16, а эти флэшки нынче найдутся у любого желающего. ИМХО.

Вообще, я наоборот хотел взять КР573РФ5, но их не нашлось в нужном количестве, да ещё и программатора со стирателем.

Если делать на современных имс, то это скорее будет что-то типа iCEstick. А 28с16 в виде б/у или выпаяных продают китайцы. Если с ними не охота связываться, то в разных магазинах всё ещё встречаются 28c64b, можно взять их если забить на лишние разряды.

Вот прямо ждал что тут будет очередная статья про ардуино! Ан нет. Тут настоящий хардкор! У меня только один вопрос: сколько лет вашему сыну?

8 лет. Для «ноликов и единичек» этого вполне достаточно, требуется только умение складывать и вычитать (он поучаствовал в составлении картинки с сумматорами и писал таблицу с кнопками)

Мда… Помню, курсовой по электронике у меня и ещё одного товарища свелся как раз к тому, что вместо разработки набора логики мы использовали одну микросхему-стабилизатор питания и одну eeprom. Но сами дошли что так можно, честно-честно.

Интересно выполненное устройство. Ему бы ещё на светодиодный экран какое нибудь затемнение, чтобы не было видно не горящих диодов, или чтобы их немного приглушить, оставив как сетку-прицел. А как лучше сделать — тонированным стеклом или матовым, надо на примере смотреть. Странно что этого ещё никто не предложил.
Все же даже для продвинутых 8 лет выкопанная яма слишком глубока. Сложно представить понимание даже трети использованного.

Я конечно не буду утверждать, что в 8 это невозможно понять, но все же это больше похоже на материал для очень продвинутого 14-16-летнего
Вот эта первая часть достаточно хорошо зашла, правда не за одно занятие, в спокойном темпе на это ушло недели 3. А вот вторую часть я по большей части делал сам, на картинках объяснял, но нагружать даже не старался…
А напишите пожалуйста по каким ресурсам изучаете?)) думаю многим было бы полезно узнать (включая меня). спасибо
Тут много рекомендуют книгу Харрис и Харрис. Но для младшего школьного возраста это будет слишком тяжелый материал, я использую её как примерный план и какие-то задачки для иллюстраций (пропуская большие её части, физику транзисторов, весь Verilog/VHDL и ещё много чего).
Более развёрнутый ответ надеюсь напишу во второй части.
спасибо! буду ждать
Во второй части написал основные материалы. Дополнительно к этому скажу, что в детстве сам изучал по такой книжке: МРБ 1097: Основы цифровой техники. Но она на данный момент уже заметно устарела.

Если изучаете для себя, то книжка Харрисов — самое то. Для дальнейшего погружения в тему рекомендую Digital Design. Principles and Practices 4th ed. John F. Wakerly.

А если с ребенком, то нужно примерно представлять какие вещи будут легко понятны, а какие стоит пропустить. Тут к сожалению хороших книг не посоветую, опираюсь на свой опыт, что мне самому было понятно в том возрасте, а что уже было тяжело/неинтересно.
Спасибо)
Воспользуемся другим трюком — сделаем наоборот: заменим EEPROM на нашу логическую схему и засунем её в программатор.

Гениально! У меня-то первая мысль — сгенерить таблицу на каком-нибудь питоне, но скопировать живую логику я бы не догадался.


Жду второй части. Намного интересней наблюдать, как змейку реализуют с учётом минимизации ресурсов (читай: корпусов), чем на сотую реализацию на FPGA.

я думал я знаю что такое конечные автоматы. оказалось что нет)
Интересно, а _другую_ логику этого автомата вы не рассматривали?
В ней нужно иметь «длину тела», которую вначале поставить в одну ячейку массива. Это и будет голова.
И направление, в котором голова поедет в следующем ходу.
А затем все ненулевые ячейки просто уменьшаются с каждым ходом на 1, и светятся только те точки, где не ноль.
В итоге у змеи нет головы и хвоста, а есть только «сегменты», у каждого их которых своё время жизни. И от величины начального значения зависит, сколько тактов он проживёт, а соответственно и видимая длина хвоста. Удлинять просто — вписывай в новые позиции бОльшее число. Обработка коллизий тоже проста — если в новой позиции не ноль, то либо конкретное значение яблока, либо свой же сегмент.

Это, конечно, в битах не вывести, нужна работа с другими элементами. НО как подсказывает мой опыт создания автоматов на логике, тут есть потенциал уменьшить число корпусов.
Таким способом как раз работают многие реализации на ФПГА. Если делать на 1533-ей серии, то на это понадобится как минимум 32 корпуса только на хранение клеток, про коммутацию этого всего я даже боюсь думать…

Если вам удастся в таком варианте уменьшить количество корпусов (без использования фпга), то будет очень интересно посмотреть на такой вариант. Наверное, можно использовать RAM, но обвязка кажется что будет сложнее.
Возможно, вам будет интересно ознакомиться с работой: is.ifmo.ru/download/snake.pdf

Удачи в вашем начинании!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации