Вы находитесь на странице: 1из 1

КАК СТАТЬ АВТОРОМ Облака: ожидание vs реальность

Все потоки Разработка Администрирование Дизайн Менеджмент Маркетинг Научпоп Войти Регистрация

YuriPanchul 28 мая 2019 в 09:13


ЧИТАЮТ СЕЙЧАС
Тренировочный лагерь по схемотехнике для
танков и закладкам в процессоры Судьба предателя, угнавшего
новейший МиГ-25 в Японию
Ненормальное программирование, Разработка игр, FPGA, Программирование микроконтроллеров, 130k 718
Электроника для начинающих

Обратная сторона Open Source-славы:


В апреле был роснановский семинар по современной схемотехнике для школьников олимпиадного как угрожают автору curl
типа. После него группа организаторов собралась в фойе и долго ломала голову, как сделать предмет 34,1k 86
более интересным и при этом полезным. Чтобы ввести Verilog и ПЛИС например в формат Олимпиад
НТИ. Было решено отказаться от математически интересных, но несколько абстрактных для школьника Работа сознания: что такое пятна
задач типа протоколов когерентности кэшей в многопроцессорных системах. Также не вызвала особого Габора?
энтузиазма идея автоматической теплицы с датчиками, так как ее сто раз реализовали на ардуино и 45,3k 49

STM32, и ПЛИС-ы не добавляют в теплицы ничего интересного.


Глава Microsoft заявил об имеющихся
И вдруг — Эврика! А если проводить соревнования по графическим играми, сделанных на чистой
доказательствах причастности России
к хакерской атаке на SolarWinds
схемотехнике, без программирования, как делали игры типа Пин-Понг наши предки во времена
3,9k 14
Брежнева и Картера. И проводить не на древних микросхемах К561, а на современных Xilinx и Altera (то
бишь Intel FPGA) и с использованием тех же технологий проектирования на уровне регистровых
5 книг Стругацких
передач, которые используют проектировщики в Apple, Intel и SpaceX.
6,4k 17

Короче, мы этим займемся в 8-26 июля на летней школе в Зеленограде. Часть школы, о плане которой
Мир JavaScript в 2021 году
пойдет речь в этом пост, посвящена основам цифровой схемотехники, первым шагам в архитектуру и
микроархитектуру процессоров, а также (даже скорее в основном) аппаратной компьютерной графике. 12,2k 10

Я попробую привезти в Зеленоград в качестве помощницы свою дочь-студентку Элизабет, если она
Как хабраюзеры сервисами банков
пользовались и остались недовольны
вовремя получит паспорт и российскую визу. Элизабет, будучи русско-украинско-японкой, владеет
Мегапост
только английским. Вот в Зеленограде и выучит основы русского. А заодно научит правильному
английскому произношению инструкторов, которые готовы помочь на школе (необязательно из МИЭТ,
можно из МФТИ, МГУ, МИФИ):

Редакторский дайджест
Присылаем лучшие статьи раз в месяц

Электропочта

Сегодня я смастерил один из примеров для школы — игру в танчики. Большую часть кода я взял из
примера в книжке 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 для демонстрации, как проектировать закладки в
процессоры. Мы не будем спорить, существуют ли закладки в процессоре компьютера на вашем столе,
в вашем телефоне или автомобиле. Мы покажем, как их можно проектировать. Пример закладки:
аппаратный конечный автомат следит за содержимым архитектурных регистров во время выполнения
программы, и когда в них появляется текст «Над всей Испанией безоблачное небо», переключает
процессор в привилегированный режим. Текст может прийти из пользовательской программы,
например емейл-клиента.

Можно ли обнаружить такую закладку софтверным антивирусом? Нет. Софтвер такое вообще не видит,
пока оно не происходит. Можно ли обнаружить, исследуя микросхему под электронным микроскопом?
Тоже нет, в промышленном процессоре миллиарды транзисторов, даже в ардуине — сотни тысяч. Даже
если иметь на руках исходники процессора, спрятать в десятках-сотнях тысяч или миллионах строк на
верилоге можно многое, особенно если разные части процессора выполняют части хитро
продуманного плана.

Можно даже организовать состязание, когда одна команда создает закладку, а другая ее находит.

В летней школе в Зеленограде может участвовать любой школьник, который прошел три модуля
теоретического онлайн-курса от РОСНАНО с профориентационным обзором современных методов
проектирования микросхем (все это бесплатно и даже с выдачей призов):

1. От транзистора до микросхемы

2. Логическая сторона цифровой схемотехники

3. Физическая сторона цифровой схемотехники

Предварительная программа курса — дискуссия по ней приветствуется:

Неделя 1. Основы цифровой логики.

День 1. Микросхемы малой степени интеграции, упражнения с комбинаторной логикой.


День 2. Микросхемы малой степени интеграции, упражнения с последовательностной логикой.
День 3. ПЛИС, упражнения с кнопками, переключателями, LED, семисегментным индикатором.
День 4. ПЛИС, вывод геометрических фигур на VGA.
День 5. ПЛИС, конечный автомат для игры в танчики, гонки или Angry Birds.

Неделя 2. Процессор

День 1. Программирование на языке ассемблера.


День 2. Однотактовый процессор schoolMIPS.
День 3. Интеграция процессора с выводом геометрических фигур на VGA.
День 4. Лекция про прерывания и многозадачность. Индивидуальный проект — программируемая на
процессоре видео игра с выводом на VGA.
День 5. Лекция про конвейер. Конкурс индивидуальных проектов.

Неделя 3. Программируемое радио. Программа блока состоит из трех основных частей:

– основы электродинамики и распространения радиоволн (теоретическая часть);


– принцип работы приемо-передающего тракта (теория и практика);
– основы цифровой обработки сигналов – фильтрация, спектральный анализ (теория и практика).

День 1. Теоретические основы электродинамики и распространения радиоволн. Структурная схема


передающего тракта, функции составных частей. Сигналы (гармонический, прямоугольный).
Практическое занятие по сигналам с использованием NI Elvis.
День 2. Перенос сигналов на высокую частоту. Математическое обоснование переноса частоты с
использованием Matlab. Практическое занятие по переносу частоты с использованием NI Datex.
День 3. Усиление и излучение сигналов. Практическое занятие с использованием NI Datex.
Демонстрация направленности антенн.
День 4. Фильтрация сигнала. Практическое занятие с использованием NI Datex. Фильтрация цифрового
сигнала в Matlab
День 5. Перенос сигналов на низкую частоту. Практическое занятие с использованием NI Datex.
Обобщение пройденного материала, подведение итогов.

Кстати, многое из материалов Стивена Хагга, из которых я подсматриваю информацию про спрайты итд
— идет из древнего видеопроцессора Texas Instruments TMS9918 который стоял в японском компьютере
Yamaha MSX, который импортировало правительство Горбачева для компьютеризации советских школ.
Когда я сам был школьником, даже управлять этим видеопроцессором из ассемблерной программы
работающей на главном процессоре Zilog Z80 было нетривиально, а уж спроектировать этот
видеопроцессор — вообще. Из-за рывка технологий автоматизации проектирования микросхем
(Electronic Design Automation — EDA) это стало возможно современным школьникам, и даже полезно
для обучению дизайна современных чипов (книга Стивен Хагга — 2018 года).

Но для ныне поседевших советских школьников — вы помните эту игру на Ямахе?

Насчет Electronic Design Automation. Помимо лагеря для школьников, мы тут с Элизабет помогаем
провести семинар по сходной тематике для взрослых, но не в Зеленограде, а в Лас-Вегасе, на выставке
Design Automation Conference — DAC, и не с учебными, а с промышленными процессорами, и не с
графикой, а с сопроцессором для ИИ. Такой семинар — это естественный следущий шаг для
школьников, которые пройдут школу в Зеленограде и потом поучатся в МИЭТ, МИФИ, МФТИ, ВШЭ
МИЭМ, МГУ, ИТМО, ЛЭТИ, СГАУ, НГТУ и других университетах, в которых преподают элементы
маршрута проектирования микросхем RTL-to-GDSII, компьютерную архитектуру и лабы по синтезу для
ПЛИС/FPGA.

Теги: закладки, fpga, verilog, cmos 4000, vga, железо для игр, плис, летняя школа, зеленоград, миэт

Хабы: Ненормальное программирование, Разработка игр, FPGA, Программирование микроконтроллеров,


Электроника для начинающих

+18 58 7k 6 Поделиться

181,0 0,0
Карма Рейтинг

Юрий Панчул / Yuri Panchul @ YuriPanchul


Дизайнер силикона из одноименной долины

ПОХОЖИЕ ПУБЛИКАЦИИ МИНУТОЧКУ ВНИМАНИЯ

19 июля 2017 в 17:32

Летняя школа Wolfram 2017: рассказ участника


+2 2,2k 3 6

24 апреля 2017 в 13:17 Опрос


GoTo Data Science Challenge 2: гранты на летнюю школу
+5 4,9k 15 0 Вошёл в IT – а дальше что? Отвечают
хабраюзеры
5 апреля 2017 в 13:06

Скоро лето — пора подавать заявки в летнюю школу (интернатуру) Intel


+12 7k 23 0

Турбо
СРЕДНЯЯ ЗАРПЛАТА В IT

Какой IT-работодатель всех сильней?


120 000 ₽/мес. Покажем и докажем

Средняя зарплата по всем IT-


специализациям на основании 3 227
анкет, за 1-ое пол. 2021 года

Узнать свою зарплату

Комментарии 6 ЧТО ОБСУЖДАЮТ

vassabi 28 мая 2019 в 09:51 0 Сейчас Вчера Неделя


прикольная идея с «одна команда делает закладку, а вторая — ищет». Расскажете, как попробуете?
Цензура в интернете. Надо что-то
делать
10,8k 91
YuriPanchul 28 мая 2019 в 10:09 0

Да. Но это лучше делать на семинаре по MIPSfpga для более взрослой аудитории (а-ля bit.ly/mips-open-at- Судьба предателя, угнавшего
dac-2019 ). Там промышленное ядро микроконтроллера, в котором 60,000 строк кода, так что найти новейший МиГ-25 в Японию
нетривиально. В schoolMIPS все быстро находится, он слишком маленький (менее тысячи строк кода).
130k 718

Pet-проект для джуна. Или зачем и как


vassabi 28 мая 2019 в 10:52 –2 выбрать pet project. (+личный опыт)
смотря как и что прятать. 3,6k 2
Можно сделать "закладку попроще", например чтобы (~0 + ~0) выдавал 1.
Джон Кармак предложил способ
борьбы с дефицитом видеокарт и
YuriPanchul 28 мая 2019 в 17:59 0
игровых консолей нового поколения
31,5k 351
Ну это не закладка, это просто баг. Закладка — это чтобы сделать нечто вредоносное в системе с
управлением снаружи. Например хардверная закладка может помочь софтверному трояну внутри
обычной программы помочь сделать что-то нехорошее :-) runBlocking против приложения: как
оправить приложение в нокаут из-за
невнимательности
Интересно
Costic 29 мая 2019 в 15:30 0

Внимательно слежу за вашими публикациями (в этот раз ваш русский язык немного смущает меня, особенно
«на школе»… должно быть «в школе»). Вы много уделяете внимания образованию и подготовке кадров. Я с
вами полностью согласен — «кадры решают всё»! Но кадры надо готовить, нужны рабочие места для
стажёров, инженеров, программистов. Если взять 10 студентов старших курсов, то половина из них по
окончании ВУЗа не будет работать по специальности. Ещё 2-3 продержаться год-два, а потом или декретный
отпуск или коммерция. Останется 2-3 инженера, которые за лет 5 станут ведущими инженерами, а через 10
лет лишь 1 станет тем локомотивом, который будет тянуть коллектив. И это оптимальный вариант при
наличии соц пакета и плюшек.
Теперь к учебному курсу. Предварительная подготовка и вводный базовый курс — это хорошая идея для
слушателей (летней школы). На этом этапе можно отобрать заинтересованных людей. А программу курса я
бы скорректировал. Мне кажется надо начинать со светодиода и кнопки/выключателя.
1) Знакомим с wire & reg (Verilog). Кнопка нажата — LED горит, а не нажата — не горит.
2) Делаем инвертор (NOT). Делаем 2 кнопки и знакомим с AND, OR, XOR.
3) Используем кнопку №1 для задания состояния (0/1), кнопку №2 — для режима (set/reset), сохраняем/
читаем значение в регистр.
4) Тактирование. Фронты сигнала (нарастание/спад). Мигание светодиодом, делители частоты на 2, 4, 8…
Смотрим результаты лог.анализатором.
5) Умножитель частоты. Основы PLL, фазовые сдвиги. Стабилизация генератора.
6) Семисегментный индикатор, автомат состояний и др.
7) Основы работы VGA, расчёт частот, сигналы, виды ЦАП, заливка экрана, двухпортовая память.
Удачи вам!
Программа обучения кажется слишком насыщенной.

YuriPanchul 2 июня 2019 в 10:00 0

*** 1) Знакомим с wire & reg (Verilog). Кнопка нажата — LED горит, а не нажата — не горит. 2) Делаем
инвертор (NOT). Делаем 2 кнопки и знакомим с AND, OR, XOR. ***

Простой логический элемент в ПЛИС с кнопками на входе у меня есть — см. отчет с прошедшего семинара
— habr.com/ru/post/452872

*** 3) Используем кнопку №1 для задания состояния (0/1), кнопку №2 — для режима (set/reset), сохраняем/
читаем значение в регистр. ***

Я считаю, что D-триггер нужно показывать на микросхемах малой степени интеграции, до упражнений с
ПЛИС. Это по моему опыту нагляднее и доходчивее, чем сразу в ПЛИС:

Кроме этого я ввожу D-триггеры в теоретическом курсе.

*** 4) Тактирование. Фронты сигнала (нарастание/спад). Мигание светодиодом, делители частоты на 2, 4,


8… Смотрим результаты лог.анализатором. ***

Логический анализатор я собираюсь в следующий семинар включить. Тактирование я ввожу в онлайн-


курсе и потом в упражнении на D-триггере выше.

Что касается делителя частоты на 2,4,… с помощью битов счетчика, то я его хочу из упражнений убрать и
вместо этого везде использовать enable signal. Так принято в design IP для ASIC и так методологически
правильнее, так как это избегает гонок при моделировании и проблем в static timing analysis.

Т.е. вместо:

always @ (posedge clk ...)… counter <= counter + 1;


wire clk2 = counter [3];
always @ (posedge clk ...)…
always @ (posedge clk2 ...)…

везде писать:

always @ (posedge clk ...)… counter <= counter + 1;


wire enable = counter [3];
always @ (posedge clk ...)…
always @ (posedge clk ...)… else if (enable)…

*** 5) Умножитель частоты. Основы PLL, фазовые сдвиги. Стабилизация генератора. ***

Объяснить аналоговую часть PLL детям нереально, а для понимания циклов и микроархитектуры не нужно.
Пусть вначале поделают кучу упражнений с фиксированным clock-ом на 50 MHz или 100 MHz на плате и
просто следят по результатам static timing analysis, что их дизайн в эту частоту вписывается.

*** 6) Семисегментный индикатор, автомат состояний и др. ***

Семисегментный индикатор у меня есть — см. habr.com/ru/post/452872

7) Основы работы VGA, расчёт частот, сигналы, виды ЦАП, заливка экрана, двухпортовая память.

Если просто показать основы работы VGA, они зевнут, скажут спасибо и об этом забудут. Так как на
летнюю школу есть три недели, пусть сделают полноценную простую игру со спрайтами. Виды ЦАП можно
опустить — это не необходимо для простой игры.

Стоит ли иметь в двухнедельном курсе процессор — это еще неясно, но мы проведем эксперимент. Может
и стоит, а может нет.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

САМОЕ ЧИТАЕМОЕ

Сутки Неделя Месяц

Судьба предателя, угнавшего новейший МиГ-25 в Японию


+42 130k 63 718

Обратная сторона Open Source-славы: как угрожают автору curl


+84 34,1k 36 86

Черные дыры могут иметь «волосы». Эйнштейн не прав?


+15 33,3k 23 16

На 30 тысячах компьютеров с macOS нашли странный зловред, который ждёт команду


+16 14,7k 23 29

Куда же плывут облака? Подбиваем итоги опроса и даём аналитику


Мегапост

Ваш аккаунт Разделы Информация Услуги

Войти Публикации Устройство сайта Реклама

Регистрация Новости Для авторов Тарифы

Хабы Для компаний Контент

Компании Документы Семинары

Пользователи Соглашение Мегапроекты

Песочница Конфиденциальность Мерч

© 2006 – 2021 «Habr» Настройка языка О сайте Служба поддержки Мобильная версия