В гостях у Самоделкина! » Электроника » Каким будет бейдж для конференции Hackaday в 2019 году, и как изготовить себе такой же

Каким будет бейдж для конференции Hackaday в 2019 году, и как изготовить себе такой же



Вот уже третий год, когда компания 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 и слой фона. Наборы тайлов, каждый из которых имеет суммарное разрешение в 256x512 пикселей, состоят из квадратных тайлов со стороной в 16 пикселей. Палитра - 16-битная.

Слой вмещает 64х64 тайла, но на экране видно окно размером в 30x20 тайлов. Когда слой выбран, все изменения в нём становятся видимыми незамедлительно. Окно можно плавно перемещать относительно слоя.

Слои с тайлами можно масштабировать и искажать, в файле main.c приведены действующие примеры. Работа со слоем спрайтов пока не реализована, будет сделана ближе к конференции. Примеры после этого поместят в тот же файл.

Вот такая у команды разработчиков получилась интересная конструкция. Кто-то скажет, что в предыдущие разы с QWERTY-клавиатурой и Бейсиком было интереснее, но ретрокомпьютерщики вспоминают оба мира - и домашних компьютеров, и консолей. И наверное, это правильно.

Источник
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Простой генератор сигналов своими руками

Многостабильный триггер, он же - радиокнопка

0
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.