Хакатон нового типу випробуваний у Києві, планується повторити цей досвід в Росії

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



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

Ось як це виглядало на екранах їх ноутбуків, на FPGA-платі і концептуально:

hw_jpxfldvu


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



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

yuri_panchul_20161108_235748




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

yuri_panchul_20161111_061824

На хакатон залишилися найвідданіші:

yuri_panchul_20161112_073838




З фейсбуку ключового організатора хакатона (Відкрита лабораторія електроніки 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 займає всього два абзаци тексту:

PDF


Зауважимо, що протокол сенсору (SPI) — послідовний, а протокол шини процесора (AHB-Lite) — паралельний. Порівняємо:

Протокол SPI дані передаються і приймаються біт за бітом. Це економить кількість сигналів, що важливо для протоколів, що передають дані між мікросхемами:



За протоколом AHB-Lite біти даних передаються паралельно. Крім цього, дані в цьому протоколі пов'язані з адресою, причому біти адреси теж передаються паралельно. Ось діаграми для частини сигналів транзакцій читання і запису на шині AHB-Lite:

Читання:



Запис:



Для інтеграції сенсора в систему потрібно спроектувати три компоненти:

  1. Хардверный модуль, який приймає дані по протоколу SPI і складує їх у певний регістр поточного значення. Код на верилоге для цього модуля знаходиться у файлі, а також нижче.

  2. Код на верилоге для передачі даних з цього регістра по шині AHB-Lite в процесорне ядро для обробки даних софтвером, так сказати glue code. Його можна знайти на файлах директорії, якщо зробити пошук по рядку `ifdef MFP_DEMO_LIGHT_SENSOR..

  3. Софтвер, який працює на процесорному ядрі, який приймає дані з датчика освітлення і як їх використовує, наприклад виводить значення освітленості на 7-сегментний індикатор на FPGA платі. Це невелика програма на Сі, яка компілюється за допомогою стандартної GCC toolchain і лінкуются з кодом для ініціалізації, написаними на асемблері — див. тут.
Код на верилоге для хардверного модуля, який приймає дані по протоколу SPI і складує їх у регістр поточного значення:



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



Висновки і плани на майбутнє
Хакатон за MIPSfpga виявився ще більш цікавим заходом для всіх учасників, ніж очікувалося:

  1. Хакатон не був дуже легким — до фінішу дійшли не всі, а менше половини команд
  2. Хакатон не був дуже важким — дві команди прийшла впевнено, ще одна-дві — з деякими натяжками
  3. У процесі хакатона учасники зробили купу помилок як новачків, так і більш досвідчених розробників, зокрема:

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



Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.