
Вот уже третий год, когда компания 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-клавиатурой и Бейсиком было интереснее, но ретрокомпьютерщики вспоминают оба мира — и домашних компьютеров, и консолей. И наверное, это правильно.
Источник
СЛУЧАЙНЫЕ СТАТЬИ
Поделки на тему зима — подборка интересных мастер-классов для детей с фото примерами
Совместное творчество с детьми благотворно влияет на гармоничные отношения в семье. Зимняя пора особенно способствует уютным посиделкам за рукодельем. Из…
Преимущества домов из бруса
Преимущества домов из бруса Содержание статьи: 1 Преимущества домов из бруса 1.1 Недостатки домов из бруса Сегодня, как никогда, строительство…
Как выбрать болгарку
Угловая шлифовальная машина или болгарка применяется для резки камня, металла, шлифовки различных поверхностей. Этот инструмент является часто востребованным в ремонтных…
Лучшие септики для частного дома
Лучшие септики для частного дома Содержание статьи: 1 Лучшие септики для частного дома 1.1 Септик Топас С 4 Пр 1.2…
ИК обогреватели. Польза и преимущества приборов
Вопрос обогрева помещения становится актуальным с приходом холодной погоды. Потому как централизованное отопление не дает гарантии максимального комфорта. Инфракрасные обогреватели.…
Покраска дерева и металла, шпаклевка
Редко когда в ремонтных работах (интерьерных) не имеется деревянных или металлических элементов. Для дерева и металла есть свои грунты и…