Вот уже третий год, когда компания 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.…
По какой причине стоит выбрать мебель из искусственного ротанга
Благодаря новым технологиям на рынке можно отыскать различную продукцию, которая имеет длительный срок службы. Мебель из искусственного ротанга представляет собой…
Особенности строительства деревянного дома
Несмотря на большой ассортимент современных стройматериалов, деревянные дома остаются наиболее востребованными. Их отличает надежность, красота и экологичность. Выбрав дерево в…
Как выбрать рабочую поверхность для кухни
Рабочий стол должен выдерживать механическое воздействие и давление. Ведь в ходе готовки его легко поцарапать или повредить, и это неминуемо,…
Производство клинкерного кирпича
Многие люди, приобретая клинкерный кирпич, задаются одним и тем же вопросом: в связи с чем он имеет такую высокую стоимость?…