В Киевском Политехническом Институте прошел хакатон нового типа, с одновременной разработкой и программной (Си, ассемблер), и схемотехнической (Verilog) частей системы, синтезируемой для реализации в микросхемы реконфигурируемой логики (ПЛИС/FPGA). Хакатон также поддерживался одной из кафедр Киевского Национального Университета и Imagination Technologies, разработчиком графического процессора PowerVR внутри Apple iPhone. Результат хакатона превзошел ожидания (об этом ниже), и сейчас разрабатываются планы повторить его в других местах, в частности в Томске или Новосибирске.

Хакатон в КПИ по MIPSfpga был экспериментальным в том смысле, что обычно в хакатонах участники или просто программируют (например решения SaaS), или делают устройства из готовых фиксированных микросхем и программируют их (Ардуино, STM32 Discovery). Здесь же участники и писали программу, и разрабатывали схему, интерфейсный блок на уровне регистровых передач (Register Transfer Level — RTL), после чего встраивали этот блок в синтезируемую систему с процессорным ядром MIPS microAptiv UP и шиной AHB-Lite, и реализовывали эту систему в FPGA.
Вот как это выглядело на экранах их ноут��уков, на FPGA-плате и концептуально:


Такие упражнения помогут вырастить инженеров систем, знакомых и с разработкой схемотехники, и с программированием, что необходимо в 21 веке, эпохе систем-на-кристалле (СнК — System-on-Chip, SoC). Также это путь к прототипированию специализированных микросхем ASIC (Application Specific Integrated Circuits), таких же, которые стоят в разнообразных встроенных системах — от кофеварок до спутников. Потом украинские исследователи в КПИ и КНУ смогут работать с европейским сервисом Europractice и производить опытные микросхемы на фабрике через MPW shuttle. Если при этом исследователи придумают что-нибудь коммерчески интересное, то они могут использовать такой прототип для привлечения венчурного капитала и создания стартапов в определенных нишах, например нише «умных датчиков» для интернета вещей.

Перед хакатоном по MIPSfpga было три дня семинаров Nanometer ASIC и лекций по MIPSfpga. На Nanometer ASIC записалось больше сотни человек и пришло более восьмидесяти:

На лекционную часть про MIPSfpga тоже пришло довольно много людей, причем опрос выявил, что среди них довольно много владеют Verilog, знаниями про архитектуру и микроархитектуру:
На хакатон остались самые целеустремленные:

С фейсбука ключевого организатора хакатона (Відкрита лабораторія електроніки Lampa КПИ):

И еще одна команда:
Посмотреть 50 фотографий с Nanometer ASIC и MIPSfpga в Киеве
Теперь поговорим про техническую часть.
Пару слов для тех читателей, которые не знакомы с тем, что такое Verilog, ASIC и FPGA:
Из поста на Geektimes «Оруженосцы микроэлектроники. Видеорепортаж с конференции по проектированию электроники в Сан-Франциско»:

Из поста на Habrahabr Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция:

Если вы хотите изучить такой материал с нуля, вы можете бесплатно скачать Harris & Harris, чрезвычайно популярный учебник, скачивание русского перевода которого положило британский сайт Imagination два раза (первый раз, второй раз).
Если учебник для вас слишком большой и вам хочется просто бегло понять основные концепции, вы можете скачать набор слайдов (тоже бесплатно), которые помогают преподавателям читать лекции на основе Harris & Harris. Эти слайды являются дополнением к учебнику, они также эффективны для самообразования и быстрого введения в предмет.
И наконец, по пожеланиям читателей, в дополнение к бесплатной электронной версии Harris & Harris, в новогоднюю ночь выйдет бумажная версия Harris & Harris, правда не бесплатная (целлюлоза дороже электронов):

Правда Харрис-энд-Харрис помогает в основном если вы хотите изучить фронт-энд (то бишь логическое проектирование цифровых микросхем и микроархитектуру). Если же вы хотите получить ликбез по физической части проектирования и производства, то вы можете скачать перевод на русский язык слайдов Чарльза Данчека.
Кроме этого, eNANO (дочка РОСНАНО по образовательным программам) собирается добавить видео лекций Чарльза Данчека (с синхронным переводом на русский) вот в этот каталог:

Но вернемся к хакатону в КПИ:
Главными организаторами хакатона были Кафедра конструирования электронно-вычислительной аппаратуры Факультета электроники КПИ, Відкрита лабораторія електроніки Lampa КПИ, Студентський простір Belka и Кафедра компьютерной инженерии Факультета радиофизики, электроники и компьютерных систем Киевского национального университета имени Тараса Шевченко.
На фотографии слева доцент Киевского Университета КНУ Александр Барабанов, он переводил на русский язык часть Harris & Harris, а также значительную часть материалов по MIPSfpga, Nanometer ASIC и Connected MCU. Справа Евгений Короткий, руководитель Лампы КПИ:

В качестве примера участникам хакатона был показан код для интеграции датчика освещения — Digilent PmodALS — Ambient Light Sensor. Вот так выглядит датчик:

Для передачи данных датчик использует последовательный протокол SPI. Вариант протокола, используемого сенсором — довольно прост; его описание в документации с сайта компании-производителя Digilent занимает всего два абзаца текста:
Заметим, что протокол сенcора (SPI) — последовательный, а протокол шины процессора (AHB-Lite) — параллельный. Сравним:
По протоколу SPI данные передаются и принимаются бит за битом. Это экономит количество сигналов, что важно для протоколов, передающих данные между микросхемами:

По протоколу AHB-Lite биты данных передаются параллельно. Кроме этого, данные в этом протоколе связаны с адресом, причем биты адреса тоже передаются параллельно. Вот диаграммы для части сигналов транзакций чтения и записи на шине AHB-Lite:
Чтение:

Запись:

Для интеграции сенсора в систему нужно спроектировать три компонента:
Код на верилоге для хардверного модуля, который принимает данные по протоколу SPI и складирует их в регистр текущего значения:

Вот в какую схему превращается этот код во время логического синтеза с помощью Altera Quartus II версии 16.0 (после анализа, но перед mapping-ом и оптимизацией):

Хакатон по MIPSfpga оказался еще более интересным мероприятием для всех участвующих, чем ожидалось:
Посему есть идея повторить такой Хакатон в других странах. Для повторения в России: в Москве лежит 16 плат Altera / Terasic DE0-CV, которые можно использовать для таких мероприятий. В Казахстане и Украине тоже можно чего-нибудь придумать. Если есть идеи, просьба сообщать в комментариях.


Хакатон в КПИ по MIPSfpga был экспериментальным в том смысле, что обычно в хакатонах участники или просто программируют (например решения SaaS), или делают устройства из готовых фиксированных микросхем и программируют их (Ардуино, STM32 Discovery). Здесь же участники и писали программу, и разрабатывали схему, интерфейсный блок на уровне регистровых передач (Register Transfer Level — RTL), после чего встраивали этот блок в синтезируемую систему с процессорным ядром MIPS microAptiv UP и шиной AHB-Lite, и реализовывали эту систему в FPGA.
Вот как это выглядело на экранах их ноут��уков, на FPGA-плате и концептуально:


Зачем нужны такие задачи?
Такие упражнения помогут вырастить инженеров систем, знакомых и с разработкой схемотехники, и с программированием, что необходимо в 21 веке, эпохе систем-на-кристалле (СнК — System-on-Chip, SoC). Также это путь к прототипированию специализированных микросхем ASIC (Application Specific Integrated Circuits), таких же, которые стоят в разнообразных встроенных системах — от кофеварок до спутников. Потом украинские исследователи в КПИ и КНУ смогут работать с европейским сервисом Europractice и производить опытные микросхемы на фабрике через MPW shuttle. Если при этом исследователи придумают что-нибудь коммерчески интересное, то они могут использовать такой прототип для привлечения венчурного капитала и создания стартапов в определенных нишах, например нише «умных датчиков» для интернета вещей.

Фотографии и видео с хакатона
Перед хакатоном по MIPSfpga было три дня семинаров Nanometer ASIC и лекций по MIPSfpga. На Nanometer ASIC записалось больше сотни человек и пришло более восьмидесяти:

На лекционную часть про MIPSfpga тоже пришло довольно много людей, причем опрос выявил, что среди них довольно много владеют Verilog, знаниями про архитектуру и микроархитектуру:
На хакатон остались самые целеустремленные:

С фейсбука ключевого организатора хакатона (Відкрита лабораторія електроніки Lampa КПИ):
… А пока вот видосик с одним из победителей, Денисом Солдатовым, который первым закончил разработку устройства и получил в подарок плату DE0-CV и фирменную флешку MIPSfpga.
Денис интегрировал ультразвуковой дальномер от Digilent (https://goo.gl/Txoxl6) в систему-на-кристалле MIPSfpga. Написал на Verilog интерфейсный модуль, который работает с сенсором по аппаратному uart и имеет управляющие регистры, отображенные в адресное пространство MIPSfpga посредством шины AMBA. Также Денис написал управляющую программу, которая считывает показания датчика из упомянутых регистров и при превышении порога подает звуковой сигнал определенной частоты. ...
Фоточки с еще одной командой победителей!
Сергей Сачов и Валера Марченко интегрировали в систему-на-кристалле MIPSfpga клавиатуру от Digilent (https://goo.gl/Xmbba6). Ребята написали на Verilog интерфейсный модуль, который работает с клавиатурой по 16-пиновому интерфейсу и имеет регистр, содержащий код нажатой клавиши, отображенный в адресное пространство MIPSfpga посредством шины AMBA. Также была написана управляющая программа, которая считывает код нажатой клавиши из упомянутого регистра и выводит соотвествующее клавише число на семисегментный индикатор.

И еще одна команда:
Посмотреть 50 фотографий с Nanometer ASIC и MIPSfpga в Киеве
Теперь поговорим про техническую часть.
Предварительные разъяснения к технической части
Пару слов для тех читателей, которые не знакомы с тем, что такое Verilog, ASIC и FPGA:
Из поста на Geektimes «Оруженосцы микроэлектроники. Видеорепортаж с конференции по проектированию электроники в Сан-Франциско»:
Пока мы обсудили кульминацию микроэлектронного проекта — изготовление микросхемы на фабрике. Но как такой проект начинается?
В последние 25 лет дизайн микросхемы чаще всего пишется на языке описания аппаратуры Verilog ([ранее] в Европе и у военных — VHDL), после чего специальная программа (logic synthesis) превращает дизайн в граф из проводов и логических примитивов, другая программа (static timing analysis) сообщает дизайнеру, вписывается ли он в бюджет скорости, а третья программа (place-and-route) раскладывает этот дизайн по площадке микросхемы.
Когда дизайн проходит все этапы: кодирование на верилоге, отладка, верификация, синтез, static timing analysis, floorplanning, place-n-route, parasitics extraction и т.д. — получается файл под названием GDSII, который отправляют на фабрику, и фабрика выпекает микросхемы. Самые известные фабрики этого типа принадлежат компании Taiwan Semiconductor Manufacturing Company или TSMC.

Из поста на Habrahabr Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция:
В самом простом варианте FPGA состоит из матрицы однородных ячеек, в функцию каждой из которых можно поменять с помощью мультиплексоров, подсоединенных к битам конфигурационной памяти. Одна ячейка может стать гейтом AND с четырьмя вводами и одним выводом, другая — однобитным регистром и т.д. Загружаем в конфигурационную память последовательность битов из памяти — и в FPGA образуется заданная электронная схема, которая может быть процессором, контроллером дисплея и т.д.
ПЛИС-ы / FPGA — не процессоры, «программируя» ПЛИС (заполняя конфигурационную память ПЛИС-а) вы создаете электронную схему (хардвер), в то время как при программировании процессора (фиксированного хардвера) вы подсовываете ему цепочку написанных в память последовательных инструкций программы (софтвер).

Если вы хотите изучить такой материал с нуля, вы можете бесплатно скачать Harris & Harris, чрезвычайно популярный учебник, скачивание русского перевода которого положило британский сайт Imagination два раза (первый раз, второй раз).
Если учебник для вас слишком большой и вам хочется просто бегло понять основные концепции, вы можете скачать набор слайдов (тоже бесплатно), которые помогают преподавателям читать лекции на основе Harris & Harris. Эти слайды являются дополнением к учебнику, они также эффективны для самообразования и быстрого введения в предмет.
И наконец, по пожеланиям читателей, в дополнение к бесплатной электронной версии Harris & Harris, в новогоднюю ночь выйдет бумажная версия Harris & Harris, правда не бесплатная (целлюлоза дороже электронов):

Правда Харрис-энд-Харрис помогает в основном если вы хотите изучить фронт-энд (то бишь логическое проектирование цифровых микросхем и микроархитектуру). Если же вы хотите получить ликбез по физической части проектирования и производства, то вы можете скачать перевод на русский язык слайдов Чарльза Данчека.
Кроме этого, eNANO (дочка РОСНАНО по образовательным программам) собирается добавить видео лекций Чарльза Данчека (с синхронным переводом на русский) вот в этот каталог:

Но вернемся к хакатону в КПИ:
Организация хакатона
Главными организаторами хакатона были Кафедра конструирования электронно-вычислительной аппаратуры Факультета электроники КПИ, Відкрита лабораторія електроніки Lampa КПИ, Студентський простір Belka и Кафедра компьютерной инженерии Факультета радиофизики, электроники и компьютерных систем Киевского национального университета имени Тараса Шевченко.
На фотографии слева доцент Киевского Университета КНУ Александр Барабанов, он переводил на русский язык часть Harris & Harris, а также значительную часть материалов по MIPSfpga, Nanometer ASIC и Connected MCU. Справа Евгений Короткий, руководитель Лампы КПИ:

Накануне хакатона Евгений Короткий разослал следующее письмо:
Шановні учасники хакатону, привіт!
Сподіваємось ви вже ознайомились з MIPSfpga та переліком периферії запропонованої для інтеграції.
Кілька організаційних моментів.
Задача хакатону.
Необхідно інтегрувати периферійний пристрій в систему на кристалі на основі MIPSfpga. Інтеграція полягає у відображенні регістрів периферійного пристрою в адресний простір MIPSfpga. Необхідно написати на Verilog / VHDL періфеійний модуль, який буде висіти на шині AHB-Lite, буде містити набір регістрів, що повторюють регістри пристрою і синхронізувати вміст цих регістрів з регістрами пристрою. Ну і виконувати обмін даними з пристроєм по протоколу цього пристрою. Також треба буде написати програму для MIPSfpga, що демонструє роботу з периферійним пристроєм.
Оновлений перелік периферійних пристроїв:
https://docs.google.com/spreadsheets/d/1djURILzdHSwnvxC5SzO4izU2imyimAgjOuqXAef6-rQ/edit?usp=sharing
Однак ми вирішили не обмежуватись лише інтеграцією периферійних пристроїв. Якщо у вас виникнуть інші цікаві ідеї проектів на основі MIPSfpga, надішліть їх на цю поштову адресу.
Команди.
У нас буде 14 FPGA плат на які портовано MIPSfpga (9 плат DE2, 1 плата DE1, 4 плати DE0-CV). Тому максимум може бути 14 команд. Ви можете принести власну fpga плату з переліку тих, на які портовано MIPSfpga (перелік тут:
https://github.com/MIPSfpga/mipsfpga-plus/tree/master/boards), або якусь іншу fpga плату (тоді вам доведеться додактково портувати на неї MIPSfpga і це буде додатковим плюсом), максимальна кількість команд може бути збільшена.
Ви уже можете формувати команди. Список периферії для інтеграції відкритий для реагування:
https://docs.google.com/spreadsheets/d/1djURILzdHSwnvxC5SzO4izU2imyimAgjOuqXAef6-rQ/edit?usp=sharing
Щоб потрапити до команди з інтеграції певного пристрою впишіть своє прізвище в стовбчик «Команда». У випадку наявності в команді кількох учасників вписуйте прізвища через кому. Людина яка зареєструється першою стає капітаном команди. Звертаємо вашу увашу, що у гугл таблиць доступна вся історія редагування.
Таймінги хакатону.
Починаємо о 8-й ранку. Протягом дня у нас буде два обіди і дві менторські с��сії, протягом яких будемо оцінювати прогрес (час ментрських сесій уточнимо трохи пізніше, оскільки це поки не принципово). Також протягом дня можете вільно задавати запитання менторам (Юрій Панчул, Короткий Євген) з питань цифрового дизайну, MIPSfpga та його програмування.
Презентації створених проектів починаються о 20-й годині.
Презентація являє собою демонстрацію роботи пристрою, протягом якої ви розказуєте, що було зроблено. Для презентації можете користуватися проектором. В презентації та демонстрції може приймати участь кілька людей. Тривалість презантації — 3 хвилини. О 20-45 завершуємо презентації. Приблизно о 21-00 оголосимо переможців та роздамо призи всім учасникам.
Призи.
Головний приз — плата Altera DE0-CV з числа тих, що використовувались у хакатоні. Якщо ми не зможемо визначитись з кращим проектом, подаруємо плати двом кращим командам. Зверніть увагу, що головний приз дарується команді. Як ви його ділитимете — на ваш розсуд. Також усі учасники отримають заохочувальні призи, про які ви дізнаєтесь під час нагородження. Єдине що можемо зараз сказати — вони точно будуть вам корисні.
Їжа.
Протягом хакатону буде дві перерви на обід. Їжу придбаємо в Noodle Doodle:
https://eda.ua/restorany/lapsha-bar-noodle-doodle?gclid=CjwKEAiAr4vBBRCG36e415-_l1wSJAAatjJZgqN6K9uVvj4_XnQRioEBzgScrYK6BNi0lZb-HWTfbxoCZDzw_wcB
Якщо у вас є побажання по стравам, можете надіслати їх Дмитру
(https://vk.com/im?sel=75362095) до вечора п'ятниці. Можна обрати якусь одну страву на кожен з двох прийомів їжі.
До зустрічі на хакатоні)
— З повагою,
Організатори заходу
Пример для участников — датчик освещения
В качестве примера участникам хакатона был показан код для интеграции датчика освещения — Digilent PmodALS — Ambient Light Sensor. Вот так выглядит датчик:

Для передачи данных датчик использует последовательный протокол SPI. Вариант протокола, используемого сенсором — довольно прост; его описание в документации с сайта компании-производителя Digilent занимает всего два абзаца текста:
Заметим, что протокол сенcора (SPI) — последовательный, а протокол шины процессора (AHB-Lite) — параллельный. Сравним:
По протоколу SPI данные передаются и принимаются бит за битом. Это экономит количество сигналов, что важно для протоколов, передающих данные между микросхемами:

По протоколу AHB-Lite биты данных передаются параллельно. Кроме этого, данные в этом протоколе связаны с адресом, причем биты адреса тоже передаются параллельно. Вот диаграммы для части сигналов транзакций чтения и записи на шине AHB-Lite:
Чтение:

Запись:

Для интеграции сенсора в систему нужно спроектировать три компонента:
- Хардверный модуль, который принимает данные по протоколу SPI и складирует их в некоторый регистр текущего значения. Код на верилоге для этого модуля находится в файле, а также ниже.
- Код на верилоге для передачи данных из этого регистра по шине AHB-Lite в процессорное ядро для обработки данных софтвером, так сказать glue code. Его можно найти в файлах директории, если сделать поиск по строке `ifdef MFP_DEMO_LIGHT_SENSOR..
- Софтвер, работающий на процессорном ядре, который принимает данные с датчика освещения и как-то их использует, например выводит значение освещенности на 7-сегментный индикатор на FPGA плате. Это небольшая программа на Си, которая компилируется с помощью стандартной GCC toolchain и линкуется с кодом для инициализации, написанным на ассемблере — см. тут.
Код на верилоге для хардверного модуля, который принимает данные по протоколу SPI и складирует их в регистр текущего значения:

Вот в какую схему превращается этот код во время логического синтеза с помощью Altera Quartus II версии 16.0 (после анализа, но перед mapping-ом и оптимизацией):

Выводы и планы на будущее
Хакатон по MIPSfpga оказался еще более интересным мероприятием для всех участвующих, чем ожидалось:
- Хакатон не был очень легким — к финишу пришли не все, а меньше половины команд
- Хакатон не был очень тяжелым — две команды пришла уверенно, еще одна-две — с некоторыми натяжками
- В процессе хакатона участники сделали кучу ошибок как новичков, так и более продвинутых разработчиков, в частности:
- Тривиальная ошибка новичка: Перепутывание вводов и выводов
- Недопонимание механизма работы Verilog-а: Сдвиг на цикл тактового сигнала из-за непонимания концепции дельта-циклов и ожидания немедленного изменения внешнего сигнала внутри комбинационного always-блока в ответ на присваивание сигналу, от которого зависит внешний сигнал через continuous assignment
- Недопонимание методологии Register Transfer Level Methodology (RTL): использование контрольных сигналов в «always @(posedge control_signal) ...» вместо «always @(posedge clock)… if (control_signal) ...»
- Неправильные timing constraints
- Нашли даже ошибку в в коде пакета MIPSfpga!
Посему есть идея повторить такой Хакатон в других странах. Для повторения в России: в Москве лежит 16 плат Altera / Terasic DE0-CV, которые можно использовать для таких мероприятий. В Казахстане и Украине тоже можно чего-нибудь придумать. Если есть идеи, просьба сообщать в комментариях.

Only registered users can participate in poll. Log in, please.
В каких городах следовало бы провести подобные хакатоны?
7.96%Алма-Ата9
1.77%Астана2
2.65%Барнаул3
3.54%Владивосток4
1.77%Воронеж2
9.73%Екатеринбург11
4.42%Казань5
23.01%Львов26
13.27%Минск15
23.89%Москва27
10.62%Нижний Новгород12
9.73%Новосибирск11
15.93%Одесса18
1.77%Рига2
4.42%Самара5
22.12%Санкт-Петербург25
6.19%Томск7
6.19%Хабаровск7
17.7%Харьков20
5.31%Челябинск6
3.54%Другой (пояснить в комментариях)4
113 users voted. 46 users abstained.



