Программирование Xilinx Gameduino: игровой адаптер для микроконтроллеров Tue, April 16 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Gameduino: игровой адаптер для микроконтроллеров Печать
Добавил(а) microsin   

Маленькие микроконтроллеры наподобие Atmel AVR, которые используются в Arduino, сегодня намного мощнее, чем 8-битные компьютеры из 1980-х годов. Так почему мы не используем их для видеоигр?

Gameduino является игровым адаптером для Arduino - или любой другой платформы, в которой есть интерфейс SPI. Gameduino построен как одиночный шилд (shield), который навешивается сверху на Arduino (на втором фото как раз показана установка gameduino на плату metaboard). Gameduino имеет коннекторы для подключения монитора VGA и стереофонической акустики (stereo audio). Картинка и звук передаются в Gameduino от управляющего адаптера через SPI, поэтому вместо metaboard или Arduino можно подключить любой микроконтроллер, у которого имеется интерфейс SPI.

gameduino-views-1-5

Звук и графика выглядят в лучших традициях старой школы (old-school) компьютерных игр, однако благодаря современной технологии FPGA возможности отображения спрайтов на шаг опережают возможности машин прошлых лет.

screenshot-chessboard screenshot-collision screenshot-sprites256 screenshot-asteroids
screenshot-wireframe screenshot-selftest screenshot-ball screenshot-splitscreen-scroll
screenshot-bgcolor screenshot-manicminer screenshot-frogger screenshot-dna

[Характеристики видеовыхода]

- 400x300 точек, 512 цветов.
- вся цветовая информация обрабатывается внутри с точностью 15 бит.
- поддерживается совместимость с любым стандартным монитором VGA (800x600, 72 Гц).

Фоновая графика (background graphics):
- поддерживается фоновая графика.
- символьный фон 512x512 точек.
- 256 символов, каждый имеет независимую 4-цветную палитру.
- плавная круговая попиксельная прокрутка по осям X и Y.

Основная графика (foreground graphics):
- каждый спрайт имеет разрешение 16x16 попиксельной прозрачностью.
- каждый спрайт может использовать 256, 16 или 4 цвета.
- четырехсторонний поворот (rotate) и зеркальное отображение (flip).
- можно использовать 96 спрайтов на строку сканирования (scan-line), 1536 текселей на строку.
- поточечное детектирование коллизий спрайтов.

[Характеристики аудиовыхода]

- стереофонический 12-битный синтезатор частоты.
- 64 независимых голоса 10 .. 8000 Гц.
- привязка к голосу синусоидального сигнала или белого шума.
- канал воспроизведения семпла (sample playback).

Адаптер Gameduino управляется через операции чтения/записи SPI, и выглядит для управляющего CPU (например, для микроконтроллера AVR Arduino) как 32-килобайтное RAM, доступное по SPI. В отличие от большинства 8-битных машин здесь нет ограничений на то, когда Вы можете получить доступ к этой RAM. На постере показано, как работает вся система - устройство карты памяти, как отображается в память экран, как кодируются цвета в точках, какие имеются регистры, как происходит управление спрайтами и другая полезная информация.

poster

[Описание возможностей]

Проект Gameduino создан на основе программируемой логической матрицы FPGA фирмы Xilinx семейства Spartan-3A, микросхеме XC3S200A-4VQG100C. Конфигурационные данные для логики FPGA хранятся во внешней микросхеме памяти на 4 мегабита AT45DB041B-SC. Эта микросхема устарела, и я её заменил на AT45DB041D-SU. Сигналы R, G, B формируются с помощью резисторного ЦАП (на каждый цвет 3 разряда, что дает 8 градаций, всего получается 2^(3+3+3) = 512 физических цветов), сигналы стереофонического аудиовыхода L и R формируются с помощью ШИМ.

Gameduino имеет открытую аппаратуру (open-source hardware, лицензия BSD), и весь код открыт под лицензией GPL. Однако по ссылке автора со странички "Making a Gameduino" [2] доступны не все исходные файлы проекта. Полностью проект для Xilinx ISE WebPack 14.1 можно скачать по ссылке [3], инструкции по сборке, компиляции исходного кода Verilog, запуске проектов с помощью metaboard см. по ссылке [4].

Gameduino неплох не только как gamedev-кит для создания игрушек на embedded-платформах, но и как недорогая тренировочная платформа для освоения программирования ПЛИС (FPGA) Xilinx серии Spartan-3A - благодаря наличию открытых verilog-исходников проекта и принципиальной схемы. Можно повторить gameduino самостоятельно, с нуля, и даже переделать логику работы платы под свои нужды.

Подробное описание проекта gameduino можно найти на сайте автора [5] - FAQ, техническое описание аппаратуры, коннекторы, интерфейс SPI, подсистема графики, звук, регистры, организация памяти, описание программного интерфейса API, рабочие примеры скетчей и другая информация.

[Словарик]

Arduino популярная hobby-платформа для разработки любительских микропроцессорных устройств.

shield шилд, дословный перевод "щит". Означает дочернюю плату, которая работает вместе с макетной платой Arduino.

sprite спрайт - растровая маленькая картинка, которая используется для анимации объектов в игре или программе.

texel тексел - элементарный пиксел текстуры.

[Ссылки]

1. Gameduino questions site: answers.gameduino.com - вопросы и ответы по Gameduino (FAQ, Q&A).
2. Making a Gameduino site:excamera.com - изготовление Gameduino.
3120621gameduino-public.zip - проект Verilog Gameduino для Xilinx ISE WebPack 14.1, документация, схема, разводка печатной платы, GDI-библиотека с примерами скетчей Arduino, видеофайлы демонстрационных программ.
4. Gameduino: сборка, компиляция исходного кода Verilog, тестирование.
5. Gameduino: a game adapter for microcontrollers site:excamera.com.

 
Top of Page