
Вот уже третий год, когда компания Hackaday устраивает очередную конференцию, она следует доброй традиции: раздаёт участникам бейджи, одновременно являющиеся довольно мощными вычислительными системами. Устройства входят в цену билетов. Выпускаются они промышленно малыми сериями, но являются открытым аппаратным обеспечением, а значит, каждый, кто не сможет попасть на конференцию, может при наличии желания и возможностей изготовить себе такой же бейдж как самоделку своими руками. Команда разработчиков на этот раз довольно большая: это авторы Hackaday.io под никами Lutetium, Aleksandar Bradic, Mike Szczys, Sophi Kravitz, Mike Walters, Sprite_tm, Elliot Williams, de∫hipu, Kumar Abhishek, Piotr Esden-Tempski, Voja Antonic, Zapp, Roger, Hyr0n, Sylvain Munaut и Sean Cross. И да, Войя Антонич — снова тот самый, разработчик теперь уже винтажного, а когда-то — нового домашнего компьютера Galaksija.
Если в предыдущие разы бейдж был выполнен в форм-факторе, похожем на Cybiko или клавиатурный QWERTY-телефон вроде Nokia Asha 200, и на нём можно было запускать эмулятор Z80, операционную систему CP/M и интерпретатор языка Basic, то теперь он больше напоминает карманную игровую консоль вроде Game Boy. И даже позволяет подключать 40-выводные картриджи. А выполнен он в этот раз на ПЛИС Lattice LFE5U-45F.
Повторение устройства следует начинать с аппаратной части. Первым делом надо скачать все файлы отсюда и установить необходимое ПО, в первую очередь — KiCad. Открыть в нём схему (файл hadbadge2019.sch) и приобрести все входящие в её состав компоненты, предварительно ознакомившись с примечаниями (файл hadbadge2019-bom-notes.txt). Открыть рисунок печатной платы (файл hadbadge2019.kicad_pcb) и экспортировать в формат Gerber. Заказать изготовление платы в какой-либо компании соответствующего профиля. Даже если вы в совершенстве владеете ЛУТом, в данном случае он не поможет. В мастерской по ремонту смартфонов заказать монтаж на плату компонентов в корпусах BGA. Все остальные компоненты вы без труда впаяете сами, ориентируясь на приведённую ниже фотографию, помня, что некоторые компоненты, например, светодиоды — полярные.

В ПЛИС нужно залить программатором загрузчик, скачав все необходимые для этого файлы отсюда. После этого всё дальнейшее взаимодействие вашего ПК с платой будет происходить по интерфейсу USB. Чтобы полностью «оживить» ПЛИС, нужно скачать инструментарий отсюда, а код для реализации на ПЛИС процессора RISC-V и взаимодействия с периферийными устройствами — отсюда. Скомпилировать и залить код.
После этого плата будет определяться как обычная флешка, и на неё можно будет помещать файлы с предназначенными для неё программами. Хранящиеся в памяти платы программы можно выбирать кнопками через экранное меню.
Картридж изготавливать необязательно. Это — очень простая плата, которую можно выполнить ЛУТом, а то и даже на perfboard’е. Ниже приведены схема картриджа и рисунок его платы:


На картридж можно установить микросхему флеш-памяти, и тогда при его установке загрузка с неё начнётся при включении автоматически. Также на плате картриджа предусмотрены площадки для подключения различной периферии. Файлы, необходимые для повторения картриджа, лежат здесь, а KiCad, если вы повторили сам бейдж, у вас уже есть.
Если вы — не программист, то у вас всё готово. Можете брать примеры здесь и здесь и экспериментировать. Если же вы решили написать какое-либо ПО для бейджа самостоятельно, разработчики знакомят всех желающих с приёмами обращения их пользовательских программ к периферии.
Названия кнопок состоят из слова BUTTON, знака подчёркивания и одного из следующих слов: UP, DOWN, LEFT, RIGHT, A, B, SELECT, START.
Пример кода для опроса кнопки:
if ((MISC_REG(MISC_BTN_REG) & BUTTON_RIGHT)) {
//Do something when right button is pressed.
}
Пример кода для считывания показаний таймера, считающего вверх с частотой в 60 Гц:
uint32_t counter60hz(void) {
return GFX_REG(GFX_VBLCTR_REG);
}
Пример кода для считывания числа из аппаратного генератора случайных чисел:
MISC_REG(MISC_RNG_REG)
Пример кода для управления светодиодами:
MISC_REG(MISC_LED_REG)=0xF;
Наиболее полная информация по графическому движку устройства приведена в этом файле. Графика — тайловая и спрайтовая (как на NES). Изображение на экране состоит из четырёх слоёв (перечислены сверху вниз): слой спрайтов, слой B, слой A и слой фона. Наборы тайлов, каждый из которых имеет суммарное разрешение в 256×512 пикселей, состоят из квадратных тайлов со стороной в 16 пикселей. Палитра — 16-битная.
Слой вмещает 64х64 тайла, но на экране видно окно размером в 30×20 тайлов. Когда слой выбран, все изменения в нём становятся видимыми незамедлительно. Окно можно плавно перемещать относительно слоя.
Слои с тайлами можно масштабировать и искажать, в файле main.c приведены действующие примеры. Работа со слоем спрайтов пока не реализована, будет сделана ближе к конференции. Примеры после этого поместят в тот же файл.
Вот такая у команды разработчиков получилась интересная конструкция. Кто-то скажет, что в предыдущие разы с QWERTY-клавиатурой и Бейсиком было интереснее, но ретрокомпьютерщики вспоминают оба мира — и домашних компьютеров, и консолей. И наверное, это правильно.
СЛУЧАЙНЫЕ СТАТЬИ
Открытый бассейн для лета
Когда наступает лето, всегда хочется избавиться от жары и знойной погоды. И такое желание особенно часто возникает, когда температура на…
Различия в ремонте. Виды услуг строительных компаний
Ремонт может носить самый разный характер и зависеть от достигаемых целей и поставленных задач. Основные и самые востребованные направления ремонта…
Самодельный снегоход из бензопилы
Снегоход с двигателем от бензопилы “Урал”, от парней канала «KREOSAN»: пошаговые фото и описание постройки снегохода своими руками. Если у…
Преимущества газобетонных блоков
Современные технологии, которые применяются при изготовлении строительных материалов, пошли очень далеко. Благодаря таким технологиям, традиционный, основной материал строительства, кирпич, начинает…
Фермерские бензопилы STIHL
Инструменты для работы в саду, в парке от известной немецкой фирмы STIHL уже достаточно давно завоевали в России широкую известность.…
Пластиковые окна в серии дома И-700А как символ комфорта и престижа
В начале 80-х годов в столице было развернуто строительство многоэтажных панельных домов башенного вида (И-700А). Планировка в них отличается комфортабельностью…