
Вот уже третий год, когда компания 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-клавиатурой и Бейсиком было интереснее, но ретрокомпьютерщики вспоминают оба мира — и домашних компьютеров, и консолей. И наверное, это правильно.
СЛУЧАЙНЫЕ СТАТЬИ
Как сделать 3D шар из бумаги. Оригами — Кусудама
Как сделать шар из бумаги? Все очень просто и в этом нам поможет техника оригами, полученные шарообразные модели относят к…
Из чердака в жилую комнату
Само слово «мансарда» вошло в обиход россиян не так давно. Как правило, отведённая под неё площадь, выполняла роль то ли…
Лучшие стиральные машины с вертикальной загрузкой | ТОП-15: Рейтинг 2022 +Отзывы
Недостатком современных стиральных машин были и остаются их крупные габариты. Кроме того, машинам с фронтальным расположением люка требуется наличие свободного…
Зрительно увеличиваем комнату!
www.seashell1.narod.ru Выставка — продажа «Морские раковины» Для того чтобы это сделать, вовсе не надо быть дизайнером. Достаточно знать несколько хитростей.…
Установка ванны из акрила или пластика
Акриловую ванну установить проще, чем стальную хотя процесс практически не отличается, но все же акрил или пластик гораздо легче. Управиться…
Кухня: выбираем отделочные материалы
Все остальные способы отделки стен на кухне в совокупности уступают самому народному – оклеиванию обоями. Это очень просто, не требует…