Со 2 по 5 октября в Новосибирске прошла школа по основам цифровой схемотехники, архитектуры и использования Verilog. Формальное название мероприятия: школа для магистрантов и аспирантов, проходившая в Новосибирском государственном техническом университет в рамках XIV Международной научно-технической конференции «Актуальные проблемы электронного приборостроения» АПЭП-2018, проводимой под эгидой IEEE. Данное мероприятие было в первую очередь ориентировано на тех, кто: Анонс: аналогичная школа запланирована с 6 по 9 ноября на базе Института космических и информационных технологий Сибирского федерального университета (ИКИТ СФУ). Вести школу будут Алина Лесковская — аспирант, инженер-конструктор АО ИСС им.М.Ф.Решетнева, а также ее коллеги: Дмитрий Власов и Борис Дудкин. Контакт для регистрации: leskovskayaav@yandex.ru Если ваша должность звучит как минимум «Junior FPGA Developer», то с высокой вероятностью вы не узнаете в этом посте ничего для себя нового. Для всех остальных – добро пожаловать под кат. В свое время (еще в ВУЗе) автор этих строк изучал архитектуру компьютера, не используя при этом Verilog или VHDL: ты приходишь на лекцию, в ходе которой черный ящик под названием «ЭВМ» раскладывают на множество маленьких черных ящиков: «процессор», «память», и т.д. Но они все равно остаются черными ящиками: ты не можешь «залезть» внутрь, ты не можешь «изменить» устройство. Курс заканчиваются, а тебя так и не покинуло ощущение того, что работаешь с «магическими сущностями неясной внутренней структуры». В лучшем случае ты умеешь их конфигурировать (программировать). В голове нет целостной картины цифрового мира. Нет понимания того, как оно работает внутри. Того понимания, которое отличает хорошего Инженера от «мимо проходил». Для того, чтобы целостную картину получить, необходимо иметь возможность изменять изучаемые устройства и создавать свои. И здесь на помощь приходит Verilog (либо VHDL), ПО для симуляции и недорогие отладочные платы с ПЛИС для проверки в железе. Простой процессор (schoolMIPS) можно написать за 1-2 вечера. И это вовсе не rocket science, никакой магии. Имея в голове целостную картину цифрового мира, вовсе не обязательно связывать свою жизнь с разработкой микросхем. Но я полагаю, что люди, которые действительно понимают, как работает "волшебная считающая коробка", не станут писать ужасные медленные программы. Проведу параллель: молоток и дрель, лежащие в чулане, не делают вас столяром. При этом вы в состоянии вбить гвоздь, понимаете, зачем эти инструменты нужны, в каких случаях стоит пользоваться именно молотком, почему не стоит вместо него брать микроскоп, и когда стоит обратиться к профессионалу. Работа в Школе была практико-ориентированной. Уложить все описываемые в H&H вопросы в четыре дня теории и практики очень тяжело. Поэтому такая цель не ставилась. Вся теория давалась исключительно в объеме, необходимо для практики. Поэтому тем, кто книгу ранее не открывал, было непросто. • Язык описания аппаратуры и зачем он нужен
• Что такое ПЛИС
• Основы комбинационной логики
• Базовые логические элементы и их описание на Verilog
• Тестовое окружение (Testbench)
• Проверка работы комбинационной схемы с использованием симулятора (Icarus Verilog, Modelsim)
• Синтез комбинационной схемы, графический интерфейс Intel Quartus и Xilinx Vivado
• Во что синтезируется комбинационная схема при реализации на ПЛИС
• Программирование отладочной платы
• Проверка работы проекта на отладочной плате
• Основы Makefile и работа в non-project mode
• Мультиплексор и способы его описания на Verilog HDL
• Демультиплексор и способы его описания на Verilog HDL
• Практический пример: работа с 7-сегментными индикаторами
• Условная компиляция в Verilog HDL • Комбинационные схемы и время распространения сигнала
• Тактовый сигнал и последовательностные схемы
• Различные типы присваиваний в Verilog HDL
• D-триггер и его реализация на Verilog в различных вариациях: асинхронный и синхронный сбросы, порт разрешения записи
• Во что синтезируется последовательностная схема при реализации на базе ПЛИС
• Регистр и его реализация
• Счетчик и его реализация
• Динамическая и статическая дисциплина
• Метастабильность и синхронизатор
• Нежелательная защелка, последствия и способы избежать
• Конечные автоматы (Мура и Мили)
• Представление автомата в виде диаграммы переходов
• Реализация автомата на Verilog HDL
• Общий подход проектирования сложных автоматов
• Пошаговая реализация интерфейсного модуля УЗ датчика расстояния на Verilog • Самостоятельная работа. Реализация интерфейсного модуля клавиатуры 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 обусловлен следующими причинами: Когда мероприятие было анонсировано, мне на почту начали поступать просьбы организовать трансляцию или видеозапись. К сожалению, это не укладывалось в выбранный мной формат организации Школы. У нас не было лекций как таковых: несколько слайдов, затем практика. Возникли вопросы – разбираем, постоянный диалог, несмешные шутки и перемещение по аудитории. Выбирая между работой на камеру и выстраиванием продуктивного контакта с аудиторией, я выбрал второе. Насколько это получилось – судить студентам. Прошу отнестись с пониманием. Вы преподаватель, который заинтересован в том, чтобы дать студентам знания? Или вы студент, который хочет эти знания получить, вне зависимости от того, дают их преподаватели или нет? В этом случае, даже если вы не смогли посетить мероприятие, у вас есть вся информация, необходимая для самостоятельного освоения предмета и/или построения/изменения учебного курса: Пожалуйста, не ждите, что к вам кто-то приедет и сделает «хорошо». Ваши знания, если вы студент, и знания ваших студентов, если вы преподаватель – на 99% зависят от ваших усилий. Анна Казьмина
За 4 дня <…> мы погрузились в технологии разработки на базе ПЛИС настолько, что это полностью изменило мое представление о применении ПЛИС в современном мире на реальном производстве. Раньше в учебном процессе мы использовали ПЛИС лишь для ускорения решения задач, а теперь научились применять для разработки микроархитектуры микроконтроллеров <…> Данная школа действительно настолько заинтересовала меня, что я планирую развиваться в данном направлении. Больше бы таких мероприятий! Олеся Радченко
Огромное спасибо команде, благодаря которой подобная школа была проведена в НГТУ. Спасибо за возможность "окунуться с головой" в программирование FPGA, узнать, каким образом работают другие разработчики с Quartus, ModelSim, а также познакомиться, например, с Vivado. За эти 4 дня я закрепила старые знания и узнала много нового, например о MIPS. <…> Полученные знания я могу применять в своей работе, которая с недавних пор тесно связана с программированием FPGA Владислав Майер
Пожалуй хочу отметить что в силу ограниченного времени, Вам удалось преподнести достаточно информации для начального понимая материала. У меня лично были некоторые базовые знания на язык программирования аппаратуры. Но основной выхлоп для меня — это изменение взгляда на программирование в целом. На ранее привычные вещи теперь смотрю под другим углом и имею представление о том, как иначе реализовывать те или иные модули Антон Юпашевский
За эти четыре дня я совсем по- другому посмотрел на программирование ПЛИС, на язык описания аппаратуры Verilog и на применение ПЛИС в настоящее время. Начальный уровень знаний по ПЛИС и цифровой схемотехнике я получил ещё на 4 году обучения в университете и с
простейшими комбинационными и последовательностными схемами проблем не было, но потом
появлялись все более сложные и интересные и в конечном итоге мы сами программировали ядро
MIPS. Огромным плюсом данной школы являлось огромное количество практики. Михаил Киреев
В ходе школы "от физики до чипа" при АПЭП-2018 были изложены догматы при работе с Verilog:
Необходимо освоить книгу Харрисов. В данной тематике множество подводных камней при написании кода,- абсолютно идентичные (с точки зрения логики) блоки могут синтезироваться по разному <...> Симуляция даст намного больше возможностей при разработке нежели синтез,- уделяйте большее внимание Waveform. В профессиональной деятельности приходится работать с различными линейками ПЛИС от разных производителей, <...> Экономьте своё время в перспективе (написание скриптов и make-файлов). С точки зрения практики, был рассмотрен ряд основных последовательностных и комбинационных схем; конвейер, клавиатура 4х4, примеры конечных автоматов, простейшая MIPS архитектура и другие задачи. З.Ы. о данной школе я узнал и записался за 12 часов до её старта, о посещении этого мероприятия я не пожалел, правда прочитав книгу Харрисов производительность была бы куда выше.