28 мая 2019, 09:13
В апреле был роснановский семинар по современной схемотехнике для школьников олимпиадного типа. После него группа организаторов собралась в фойе и долго ломала голову, как сделать предмет более интересным и при этом полезным. Чтобы ввести Verilog и ПЛИС например в формат Олимпиад НТИ. Было решено отказаться от математически интересных, но несколько абстрактных для школьника задач типа протоколов когерентности кэшей в многопроцессорных системах. Также не вызвала особого энтузиазма идея автоматической теплицы с датчиками, так как ее сто раз реализовали на ардуино и STM32, и ПЛИС-ы не добавляют в теплицы ничего интересного. И вдруг — Эврика! А если проводить соревнования по графическим играми, сделанных на чистой схемотехнике, без программирования, как делали игры типа Пин-Понг наши предки во времена Брежнева и Картера. И проводить не на древних микросхемах К561, а на современных Xilinx и Altera (то бишь Intel FPGA) и с использованием тех же технологий проектирования на уровне регистровых передач, которые используют проектировщики в Apple, Intel и SpaceX. Короче, мы этим займемся в 8-26 июля на летней школе в Зеленограде. Часть школы, о плане которой пойдет речь в этом пост, посвящена основам цифровой схемотехники, первым шагам в архитектуру и микроархитектуру процессоров, а также (даже скорее в основном) аппаратной компьютерной графике. Я попробую привезти в Зеленоград в качестве помощницы свою дочь-студентку Элизабет, если она вовремя получит паспорт и российскую визу. Элизабет, будучи русско-украинско-японкой, владеет только английским. Вот в Зеленограде и выучит основы русского. А заодно научит правильному английскому произношению инструкторов, которые готовы помочь на школе (необязательно из МИЭТ, можно из МФТИ, МГУ, МИФИ): Сегодня я смастерил один из примеров для школы — игру в танчики. Большую часть кода я взял из примера в книжке Designing Video Game Hardware in Verilog by Steven Hugg, December 15, 2018. Стивен Хагг показал код на некоем красивом, но непромышленном симуляторе. Я думаю, что обучаться на таком симуляторе — это как нюхать цветы в противогазе, поэтому я синтезировал код и залил получившуюся конфигурацию в реальное железо — дешевую китайскую плату ZEOWAA. Для этого мне пришлось переписать генерацию развертки VGA, сделать код более синтезируемым и убрать некоторые методологические непорядки в использовании тактовых сигналов. Выложил результат на GitHub. Вот как это выглядит в симуляторе Стивена Хагга: Вот как это выглядит у меня в первом приближении, после механического совмещения wrapper-а для платы, генератора развертки и кода Стивена, а также исправления всяких мелочей, которые не работают в Intel FPGA Quartus Lite Edition, синтеза и заливки: Но лагерь будет не только об играх с генерацией развертки VGA, ПЗУ, спрайтах итд. Мы еще и скрестим это с процессорами. Чтобы сравнить реализацию игр на аппаратных конечных автоматах с аппаратно-программной реализацией. Для этого мы используем учебное процессорное ядро schoolMIPS, которое описано в см. постах Станислава Жельнио на Хабре и wiki по schoolMIPS на GitHub. Можно даже использовать учебное ядро schoolMIPS для демонстрации, как проектировать закладки в процессоры. Мы не будем спорить, существуют ли закладки в процессоре компьютера на вашем столе, в вашем телефоне или автомобиле. Мы покажем, как их можно проектировать. Пример закладки: аппаратный конечный автомат следит за содержимым архитектурных регистров во время выполнения программы, и когда в них появляется текст "Над всей Испанией безоблачное небо", переключает процессор в привилегированный режим. Текст может прийти из пользовательской программы, например емейл-клиента. Можно ли обнаружить такую закладку софтверным антивирусом? Нет. Софтвер такое вообще не видит, пока оно не происходит. Можно ли обнаружить, исследуя микросхему под электронным микроскопом? Тоже нет, в промышленном процессоре миллиарды транзисторов, даже в ардуине — сотни тысяч. Даже если иметь на руках исходники процессора, спрятать в десятках-сотнях тысяч или миллионах строк на верилоге можно многое, особенно если разные части процессора выполняют части хитро продуманного плана. Можно даже организовать состязание, когда одна команда создает закладку, а другая ее находит. В летней школе в Зеленограде может участвовать любой школьник, который прошел три модуля теоретического онлайн-курса от РОСНАНО с профориентационным обзором современных методов проектирования микросхем (все это бесплатно и даже с выдачей призов): - От транзистора до микросхемы
- Логическая сторона цифровой схемотехники
- Физическая сторона цифровой схемотехники