Со 2 по 5 октября в Новосибирске прошла школа по основам цифровой схемотехники, архитектуры и использования Verilog. Формальное название мероприятия: школа для магистрантов и аспирантов, проходившая в Новосибирском государственном техническом университет в рамках XIV Международной научно-технической конференции «Актуальные проблемы электронного приборостроения» АПЭП-2018, проводимой под эгидой IEEE.
Данное мероприятие было в первую очередь ориентировано на тех, кто:
- прочитал книгу Цифровая схемотехника и архитектура компьютера, Д.Харрис, С.Харрис (также известная как H&H или Харрис-и-Харрис);
- хочет применить свои знания на практике, но не понимает, какое оборудование и ПО для этого необходимо и не умеет его использовать;
- является студентом старших курсов или аспирантом и, как предполагается, будет распространять полученные знания (вести в ВУЗе практикумы, лабораторные работы и т.д.).
Анонс: аналогичная школа запланирована с 6 по 9 ноября на базе Института космических и информационных технологий Сибирского федерального университета (ИКИТ СФУ). Вести школу будут Алина Лесковская — аспирант, инженер-конструктор АО ИСС им.М.Ф.Решетнева, а также ее коллеги: Дмитрий Власов и Борис Дудкин. Контакт для регистрации: leskovskayaav@yandex.ru
Если ваша должность звучит как минимум «Junior FPGA Developer», то с высокой вероятностью вы не узнаете в этом посте ничего для себя нового. Для всех остальных – добро пожаловать под кат.
Зачем это нужно
В свое время (еще в ВУЗе) автор этих строк изучал архитектуру компьютера, не используя при этом Verilog или VHDL: ты приходишь на лекцию, в ходе которой черный ящик под названием «ЭВМ» раскладывают на множество маленьких черных ящиков: «процессор», «память», и т.д. Но они все равно остаются черными ящиками: ты не можешь «залезть» внутрь, ты не можешь «изменить» устройство. Курс заканчиваются, а тебя так и не покинуло ощущение того, что работаешь с «магическими сущностями неясной внутренней структуры». В лучшем случае ты умеешь их конфигурировать (программировать). В голове нет целостной картины цифрового мира. Нет понимания того, как оно работает внутри. Того понимания, которое отличает хорошего Инженера от «мимо проходил».
Для того, чтобы целостную картину получить, необходимо иметь возможность изменять изучаемые устройства и создавать свои. И здесь на помощь приходит Verilog (либо VHDL), ПО для симуляции и недорогие отладочные платы с ПЛИС для проверки в железе. Простой процессор (schoolMIPS) можно написать за 1-2 вечера. И это вовсе не rocket science, никакой магии.
Имея в голове целостную картину цифрового мира, вовсе не обязательно связывать свою жизнь с разработкой микросхем. Но я полагаю, что люди, которые действительно понимают, как работает "волшебная считающая коробка", не станут писать ужасные медленные программы. Проведу параллель: молоток и дрель, лежащие в чулане, не делают вас столяром. При этом вы в состоянии вбить гвоздь, понимаете, зачем эти инструменты нужны, в каких случаях стоит пользоваться именно молотком, почему не стоит вместо него брать микроскоп, и когда стоит обратиться к профессионалу.
Программа Школы
Работа в Школе была практико-ориентированной. Уложить все описываемые в H&H вопросы в четыре дня теории и практики очень тяжело. Поэтому такая цель не ставилась. Вся теория давалась исключительно в объеме, необходимо для практики. Поэтому тем, кто книгу ранее не открывал, было непросто.
День 1
• Язык описания аппаратуры и зачем он нужен
• Что такое ПЛИС
• Основы комбинационной логики
• Базовые логические элементы и их описание на Verilog
• Тестовое окружение (Testbench)
• Проверка работы комбинационной схемы с использованием симулятора (Icarus Verilog, Modelsim)
• Синтез комбинационной схемы, графический интерфейс Intel Quartus и Xilinx Vivado
• Во что синтезируется комбинационная схема при реализации на ПЛИС
• Программирование отладочной платы
• Проверка работы проекта на отладочной плате
• Основы Makefile и работа в non-project mode
• Мультиплексор и способы его описания на Verilog HDL
• Демультиплексор и способы его описания на Verilog HDL
• Практический пример: работа с 7-сегментными индикаторами
• Условная компиляция в Verilog HDL
День 2
• Комбинационные схемы и время распространения сигнала
• Тактовый сигнал и последовательностные схемы
• Различные типы присваиваний в Verilog HDL
• D-триггер и его реализация на Verilog в различных вариациях: асинхронный и синхронный сбросы, порт разрешения записи
• Во что синтезируется последовательностная схема при реализации на базе ПЛИС
• Регистр и его реализация
• Счетчик и его реализация
• Динамическая и статическая дисциплина
• Метастабильность и синхронизатор
• Нежелательная защелка, последствия и способы избежать
• Конечные автоматы (Мура и Мили)
• Представление автомата в виде диаграммы переходов
• Реализация автомата на Verilog HDL
• Общий подход проектирования сложных автоматов
• Пошаговая реализация интерфейсного модуля УЗ датчика расстояния на Verilog
День 3
• Самостоятельная работа. Реализация интерфейсного модуля клавиатуры 4х4 для ПЛИС
• Самостоятельная работа. Реализация калькулятора на ПЛИС
День 4
• Основы конвейеризации
• Архитектура и микроархитектура
• Основы разработки на MIPS ассемблере
• Работа с симулятором MARS
• Проектирование простейшего однотактного процессора на примере schoolMIPS
• Тракт данных и устройство управления
• Компиляция программы, запуск процессора в симуляторе и на отладочной плате
• Самостоятельная работа. Добавление поддержки новой инструкции в процессор
Материалы
Все материалы курса (слайды, скрипты, исходники, литература) доступны онлайн (github, дополнительные материалы). Слайды оформлены в сомнительном стиле, когда на них много текста, в надежде, что это упростит ознакомление с материалами offline.
Практические и самостоятельные задания выполнялись, в основном, на платах Terasic DE10-Lite c ПЛИС Intel MAX10 на борту. Также у нас были Digilent Nexys 4 DDR на примере которых демонстрировалась работа с Xilinx Vivado. За редким исключением примеры подготовлены таким образом, что можно использовать как DE10-Lite, так и Nexys 4 DDR. Выбор в пользу работы с платами на ПЛИС Intel обусловлен следующими причинами:
- DE10-Lite дешевле, чем Nexys 4 DDR, а значит доступна большему числу обучаемых, в случае, если они захотят продолжить эксперименты дома или в рамках учебного процесса;
- Одни и те же несложные проекты, на которых построен курс, собираются с помощью Intel Quartus в разы быстрее, чем средствами Xilinx Vivado. При всех моих симпатиях к Vivado, у нас было всего 4 дня.
Что насчет видео
Когда мероприятие было анонсировано, мне на почту начали поступать просьбы организовать трансляцию или видеозапись. К сожалению, это не укладывалось в выбранный мной формат организации Школы. У нас не было лекций как таковых: несколько слайдов, затем практика. Возникли вопросы – разбираем, постоянный диалог, несмешные шутки и перемещение по аудитории. Выбирая между работой на камеру и выстраиванием продуктивного контакта с аудиторией, я выбрал второе. Насколько это получилось – судить студентам. Прошу отнестись с пониманием.
Хочу также
Вы преподаватель, который заинтересован в том, чтобы дать студентам знания? Или вы студент, который хочет эти знания получить, вне зависимости от того, дают их преподаватели или нет? В этом случае, даже если вы не смогли посетить мероприятие, у вас есть вся информация, необходимая для самостоятельного освоения предмета и/или построения/изменения учебного курса:
- Книга «Цифровая схемотехника и архитектура компьютера», которая бесплатно доступна в электронном виде (ссылка), либо может быть приобретена в бумаге (ссылка). Читается легко, увлекает как художественная литература. Имеет низкий порог входа – какие-то особенные знания для того, чтобы начать ее читать, не нужны. Недавно к вышло дополнение по архитектуре ARM (ссылка);
- К книге доступны примеры кода, а также слайды (английская и русская версии), которые можно использовать для построения собственного курса (ссылка);
- Недорогие отладочные платы: Terasic DE10-Lite – наилучший, с моей точки зрения, выбор в плане соотношения цена/качество, $55 для доказавших академический статус (без учета доставки). Плата ZEOWAA – когда приходится экономить на всем. Вариант рабочий, но, возможны проблемы с прошивкой из-за некачественного USB-кабеля, идущего в комплекте;
- Материалы текущей Школы (github, дополнительные материалы), а также иных мероприятий, которые организовывал YuriPanchul (silicon-russia.com, слайды и еще много полезного).
Пожалуйста, не ждите, что к вам кто-то приедет и сделает «хорошо». Ваши знания, если вы студент, и знания ваших студентов, если вы преподаватель – на 99% зависят от ваших усилий.
Что я вынес для себя
- В 4 дня можно уложить или совсем базовые вещи (для тех, кто не читал H&H), либо что-то более продвинутое (для тех, кто книгу уже прочитал). Лучше не совмещать.
- Для тех, кто книгу не читал и не имеет опыта работы с ПЛИС, практику желательно начинать с работы с микросхемами малой степени интеграции, и только после этого давать ПЛИС. Это очень важно, т.к. позволяет быстро перестроить мозг с относительно знакомого режима «программирование» на режим «схемотехника». Об этом уже писал Юрий (ссылка). Мы этот этап, к сожалению, пропустили.
Благодарности
- инициатор мероприятия и организатор от НГТУ — Владимир Макуха;
- проведение школы в текущем виде было бы невозможно, если бы несколько лет назад группа энтузиастов не взялась за перевод Цифровой схемотехники и архитектуры компьютера;
- мой приезд в Новосибирск был бы невозможен без той поддержки образовательных инициатив, которая существует внутри IVA Technologies;
- проведение школы было под большим вопросом, когда оказалось, что средства, выделяемые университету на закупку отладочных плат, зависли где-то в пучинах бюрократии. Платы в итоге собирали «с миру по нитке». Михаил Шадрин (НГУ) одолжил несколько Nexys 4 DDR. Часть плат была куплена аспирантами, которые пришли на обучение. Несколько плат Terasic выделил Александр Романов (МИЭМ НИУ ВШЭ). Но плат все равно не хватало. Помог YuriPanchul, после чего мы с Михаилом Шуплецовым (МГУ) оперативно организовали их закупку. А ребята из Terasic без каких-либо задержек максимально быстро организовали отгрузку.
- с проведением школы помогли Дмитрий Власов, Антон Куличков и Валерий Бармин – мы познакомились год назад в Томске (ссылка), а уже в этом году они помогали студентам с теорией и практикой.
- большое спасибо студентам — без вашего желания узнавать новое и без проявленного вами упорства у нас бы ничего не получилось.
Отзывы о Школе
Анна Казьмина
За 4 дня <…> мы погрузились в технологии разработки на базе ПЛИС настолько, что это полностью изменило мое представление о применении ПЛИС в современном мире на реальном производстве. Раньше в учебном процессе мы использовали ПЛИС лишь для ускорения решения задач, а теперь научились применять для разработки микроархитектуры микроконтроллеров <…> Данная школа действительно настолько заинтересовала меня, что я планирую развиваться в данном направлении. Больше бы таких мероприятий!
Олеся Радченко
Огромное спасибо команде, благодаря которой подобная школа была проведена в НГТУ. Спасибо за возможность "окунуться с головой" в программирование FPGA, узнать, каким образом работают другие разработчики с Quartus, ModelSim, а также познакомиться, например, с Vivado. За эти 4 дня я закрепила старые знания и узнала много нового, например о MIPS. <…> Полученные знания я могу применять в своей работе, которая с недавних пор тесно связана с программированием FPGA
Владислав Майер
Пожалуй хочу отметить что в силу ограниченного времени, Вам удалось преподнести достаточно информации для начального понимая материала. У меня лично были некоторые базовые знания на язык программирования аппаратуры. Но основной выхлоп для меня — это изменение взгляда на программирование в целом. На ранее привычные вещи теперь смотрю под другим углом и имею представление о том, как иначе реализовывать те или иные модули
Антон Юпашевский
За эти четыре дня я совсем по- другому посмотрел на программирование ПЛИС, на язык описания аппаратуры Verilog и на применение ПЛИС в настоящее время. Начальный уровень знаний по ПЛИС и цифровой схемотехнике я получил ещё на 4 году обучения в университете и с
простейшими комбинационными и последовательностными схемами проблем не было, но потом
появлялись все более сложные и интересные и в конечном итоге мы сами программировали ядро
MIPS. Огромным плюсом данной школы являлось огромное количество практики.
Михаил Киреев
В ходе школы "от физики до чипа" при АПЭП-2018 были изложены догматы при работе с Verilog:
Необходимо освоить книгу Харрисов. В данной тематике множество подводных камней при написании кода,- абсолютно идентичные (с точки зрения логики) блоки могут синтезироваться по разному <...> Симуляция даст намного больше возможностей при разработке нежели синтез,- уделяйте большее внимание Waveform. В профессиональной деятельности приходится работать с различными линейками ПЛИС от разных производителей, <...> Экономьте своё время в перспективе (написание скриптов и make-файлов). С точки зрения практики, был рассмотрен ряд основных последовательностных и комбинационных схем; конвейер, клавиатура 4х4, примеры конечных автоматов, простейшая MIPS архитектура и другие задачи.
З.Ы. о данной школе я узнал и записался за 12 часов до её старта, о посещении этого мероприятия я не пожалел, правда прочитав книгу Харрисов производительность была бы куда выше.
Mogwaika
Раздел «Отзывы о Школе» напоминает графу из газеты или журнала типа «Благодарные читатели пишут».
SparF Автор
Это реальные отзывы, написанные реальными студентами. Попросил прислать их уже после завершения школы: получил 5 отзывов от 16 человек. Имхо, неплохой КПД с поправкой на лень или опасения "собственного косноязычия", и это при том, что я не настоящий преподаватель. Вы считаете, что приведенный текст не соответствует формату Хабра?
Mogwaika
Ну интереснее было бы пригласить их сюда написать лично. А так имхо смотрится странно.
p.s. я может немного параноик, но я бы не хотел лишних упоминаний своих ФИО в интернетах.