Журнал РАДИОЛОЦМАН, август 2014
В 2011 году на портале Kickstarter был запущен и успешно завершен проект платы расширения Arduino, которая превращала последнюю в игровую приставку. Проект получил название Gameduino и на тот момент времени его автор Джеймс Боуман позиционировал плату расширения как модуль VGA для Arduino. И вот, два года спустя автор представляет новую версию платы Gameduino 2, отличающейся от предыдущей более высокой производительностью и функциональностью (Рисунок 1). В конце 2013 года проект Gameduino 2 на портале Kickstarter был успешно завершен.
Рисунок 1. | Gameduino 2 - полноценная персональная карманная игровая консоль с открытым кодом. |
В статье мы постараемся немного подробнее рассказать о возможностях и ключевых особенностях проекта Gameduino 2. Но сначала, для полноты картины, мы напомним основные характеристики предыдущей версии.
Плата Gameduino (модуль VGA для Arduino), выполнен на основе программируемой логической матрицы FPGA компании Xilinx семейства Spartan-3A, имеет разъемы для подключения VGA монитора и стерео акустики (Рисунок 2). Данные конфигурации для логики FPGA хранятся во внешней микросхеме памяти, формирование видео изображения выполняется с помощью резистивного ЦАП, формирование звука выполнено на основе ШИМ. Применение FPGA позволяет выполнять одновременную обработку до 256 спрайтов, однако сильно усложняет процесс управления и программирования (используется язык Verilog).
![]() |
|
Рисунок 2. | Первая версия Gameduino выполнена на FPGA и рассчитана на подключение к стандартному VGA монитору. |
Отличительные особенности Gameduino:
- VGA видео выход с разрешением 400×300 точек, 512 цветов;
- вся цветовая гамма обрабатывается в FPGA с 15-разрядной точностью;
- фоновая графика:
- область символьной фоновой графики 512×512 точек;
- 256 символов, каждый с независимой 4-цветной палитрой;
- реализован эффект заворачивания текстовых строк с пиксельным сглаживанием;
- графика переднего плана:
- каждый спрайт имеет разрешение 16×16 точек;
- каждый спрайт может иметь 256-, 16- или 4-цветную палитру;
- поддержка алгоритмов 4-стороннего вращения и горизонтального вращения;
- 96 спрайтов на растровую строку, 1536 элементов текстуры на растровую строку;
- механизм обнаружения возможных пересечений спрайтов;
- аудио выход:
- 12-разрядный двухканальный синтезатор частоты;
- 64-голосая полифония в частотном диапазоне 10 – 8000 Гц.
Изображение выводится на экран стандартного VGA монитора с разрешением 400×300 точек, сохраняется совместимость с любыми стандартными VGA мониторами с разрешением 800×600 точек. Реализованный программно в FPGA стековый 16-разрядный сопроцессор, имеющий небольшой набор арифметический инструкций и достаточно высокую производительность (50 MIPS), позволяет ускорить копирование и очистку видео памяти, прорисовку линий, окружностей и треугольников.
Отличительные особенности сопроцессора FPGA:
- 16-раздная внутренняя шина;
- 8-разрядный интерфейс памяти;
- операции умножения 16-разрядных значений выполняются за один машинный цикл;
- встроенная многорегистровая схема циклического сдвига;
- быстрый и эффективный процессор со стековой организацией.
Плата расширения Gameduino 2 превращает Arduino в современную карманную игровую консоль: сенсорный интерфейс управления, 3-осевой акселерометр, слот карты памяти microSD, аудио выход на наушники и сногсшибательная графика на ярком 4.3'' ЖК дисплее (Рисунок 3). Использование платформы Arduino не является обязательным условием, платe Gameduino 2 можно подключать к любому микроконтроллеру или микроконтроллерной плате с интерфейсом SPI. Теперь, все что необходимо для создания привлекательных игр находится у вас в руках:
- видео выход с 24-битной глубиной цвета и разрешением 480×272 точек;
- набор команд в стиле OpenGL;
- обработка до 2000 спрайтов любого размера одновременно;
- видео память 256 Кбайт;
- функции вращения и масштабирования спрайтов с поддержкой сглаживания и билинейной фильтрации;
- функции аппаратной прорисовки окружностей и линий с поддержкой 16X-сглаживания;
- аппаратная загрузка JPEG изображений;
- встроенные функции обработки градиентов, текста, изображений кнопок и графической клавиатуры.
|
|||||
Рисунок 3. | Графические возможности Gameduino 2 в игровых приложениях. |
Основным элементом платы Gameduino 2 является высокопроизводительный графический контроллер FT800 компании FTDI (Рисунок 4). Компания FTDI Chip представила графический контроллер серии FT800 «EVE» (Embedded Video Engine) в начале 2013 года. Кроме графических функций, микросхема включает в себя контроллер резистивного сенсорного экрана и аудиоконтроллер с встроенной библиотекой готовых звуковых эффектов. FT800 за год своего существования завоевал несколько наград на выставках, благодаря не только своим уникальным возможностям, но и всесторонней поддержке со стороны производителя: готовые примеры, программные библиотеки функций и завершенные аппаратные решения в виде готовых дисплейных модулей.
Рисунок 4. | Gameduino 2 выполнена на графическом контроллере FT800, имеет ЖК дисплей, сенсорный экран и поддерживает набор команд в стиле OpenGL. |
Отличительные особенности графического контроллера FT800:
- технология (Embedded Video Engine) с поддержкой виджетов;
- интегрирован контроллер 4-проводного резистивного сенсорного интерфейса с поддержкой дополнительных функций;
- стандартный последовательный интерфейс SPI или I2C для связи с основным процессором или микроконтроллером;
- встроенный программируемый контроллер прерываний;
- встроенный осциллятор 12 МГц и ФАПЧ;
- поддержка дисплеев WQVGA (480×272) и QVGA (320×240) в режимах Data Enable (DE) и VSYNC/HSYNC;
- функции декодирования изображений в формате JPEG;
- множество программируемых параметров позволит подключать к контроллеру различные дисплеи;
- выход ШИМ для управления подсветкой дисплея;
- встроенный аудиоконтроллер и звуковой синтезатор;
- низкое энергопотребление и встроенная схема управления питанием.
Дополнительно, из ПЗУ графического контроллера пользователю доступны несколько типов высококачественных шрифтов в 6 размерах, образцы звуков восьми музыкальных инструментов, воспроизводимых по MIDI нотам, и образцы звуков 10 ударных инструментов. Но при разработке игровых приложений пользователь не ограничивается только базовым набором, оперативная память объемом 256 Кбайт позволяет загружать свои собственные шрифты и звуки.
Возросшая, благодаря графическому контроллеру FT800, производительность обработки графики не единственное преимущество Gameduino 2. Дополнительные возможности платы повышают ее функциональность и улучшают потребительские качества:
- более простая графическая система в стиле OpenGL;
- встроенный 3-осевой акселерометр и резистивный сенсорный экран для управления в играх и приложениях;
- встроенный усилитель звука и разъем для подключения наушников;
- слот карт памяти microSD для хранения медиа ресурсов для игр (графические объекты, звуки и карты);
- встроенный преобразователь логических уровней позволяет использовать плату с Arduino платформами, имеющих напряжение питания 3.3 В и 5.0 В.
Разработку собственных игровых приложений пользователи смогут очень быстро освоить благодаря бесплатной библиотеке функций Gameduino 2 для интегрированной среды разработки Arduino IDE, набору готовых приложений и примеров с исходными кодами и подробного руководства пользователя. После установки библиотеки Gameduino 2 пользователю также будут доступно несколько утилит для платформы Arduino, например утилита калибровки резистивного сенсорного экрана.
Плата Gameduino 2 уже доступна для заказа в нескольких онлайн-магазинах. Принципиальная схема и проект печатной платы доступны для скачивания на официальном сайте проекта.
На плате Gameduino 2 установлен аналоговый акселерометр, поэтому его выходы (X, Y, Z) подключаются к аналоговым входам Arduino (АЦП). Функции воспроизведения звука и работы пользовательского сенсорного интерфейса возложены на графический контроллер FT800.
Напряжение питания Gameduino 2 должно быть в диапазоне 5.0 – 7.0 В/200 мА. Встроенный регулятор напряжения обеспечивает напряжение питания 3.3 В для графического контроллера.
Демонстрационное видео