Как я не готовился и провел роснановский семинар по ПЛИС-ам в Москве. Планы сделать то же в Лас-Вегасе и Зеленограде.
У вас бывает такой сон: вы оказываетесь на экзамене или выступаете перед некоторой аудиторией, и вдруг осознаете, что вы вообще не готовились и сейчас прийдется импровизировать. Именно в такой ситуации, но не во сне, а в реале, я оказался перед майскими праздниками в Москве, куда прилетел из Калифорнии, чтобы провести трехдневный семинар для тщательно отобранных школьников ведущих московских физматшкол. Под эгидой РОСНАНО, в гимназии РУТ (МИИТ) и в присутствии преподавателей из МИЭТ, МИРЭА, МИФИ, МЭИ и ВШЭ МИЭМ.
Теоретически я должен был бы привети с собой пошаговые инструкции и примеры разнообразных упражнений на плате с микросхемой реконфигурируемой логики. Реально у меня была куча каких-то примеров для других плат, из которых я в суматохе перелетов и других мероприятий ничего не построил.
Поэтому я взял некий универсальный пример, который написал полтора года назад, сидя в самолете Алма-Ата — Астана, выкинул из примера все внутренности и начал со школьниками его наполнять, без жесткого плана чем. И как ни странно — это получилось. В процессе наполнения возникли поучительные моменты цифровой схемотехники и языка описания аппаратуры Verilog, которые при планировании бы не возникли.
4 июня я провожу похожий семинар в Лас-Вегасе, но только для взрослых, а 8-19 июля помогаю МИЭТ провести летнюю школу в Зеленограде. Планы этих мероприятий (не окончательные, а для обсуждения) — в конце поста.
Зачем нужен семинар по ПЛИС-ам школьникам? Программируемые логические интегральные схемы (ПЛИС-ы или FPGA — Field Programmable Gate Arrays) — это традиционный способ закрепления знаний практикой при изучении проектирования цифровых схем на уровне регистровых передач, с использованием языков описания аппаратуры. Иными словами, ключевой технологии для разработки айфонов — микросхемы внутри айфонов спроектированы именно так. Отставание России по айфонам произошло в том числе потому, что лабы по ПЛИС-ам, микроархитектуре и языкам описания аппаратуры внедрили в Беркли и MIT еще в начале 1990-х, а в России из-за коллапса СССР — сильно позже.
Последний роснановский семинар прошел на удивление гладко прежде всего потому, что школьники, которые на него пришли, предварительно прошли теоретический онлайн-курс с профориентационным обзором современных методов проектирования микросхем. Онлайн курс предназначен для продвинутых школьников олимпиадного типа и состоит из трех модулей: «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники» и «Физическая сторона цифровой схемотехники». В этом курсе школьники знакомятся с так называемым маршрутом RTL2GDSII — группой технологий, которые используют инженеры в электронных компаниях для проектирования массовых чипов, Application Specific Integrated Circuits — ASIC. ПЛИС/FPGA используются для прототипирования ASIC-ов, в том числе в таких компаниях как Intel, Apple и NVidia.
Так как школьники прошли онлайн-курс, они уже выучили, что такое D-триггер, конечный автомат, логический синтез и трассировка. Язык описания аппаратуры они тоже видели в онлайн-курсе. Теперь эти знания, которые лежали в пассивном виде в их памяти, нужно было только оживить.
Я теперь буду всегда для любых семинаров в странах СНГ (помимо уже запланированных семинаров, у меня есть предложения провести это в Минске, Сочи и Якутске) ставить условие, чтобы принимающая сторона предварительно пропускала школьников или студентов через три модуля онлайн-курса, так как после него остаются только мотивированные люди, которые все нудные аспекты уже прошли, и для подкрепления остается чистое творчество, последний момент, типа падение яблока, ударившего Ньютона по голове. Кроме этого, онлайн-курс привязывает всю эту деятельность к взрослым профессиям, следующему этапу, рисует дальнюю цель.
Итого, до полета в Москву я запустил универсальный пример у себя дома в Саннивейл, Калифорния. Код примера:
В первый день практического семинара мы попрактиковались с микросхемами малой степени интеграции на макетной плате. Этой технологии 50 лет, но никто не придумал лучше, как наглядно, в реале, а не в симуляции, показать работу например D-триггеров. Хотя многим современным учителям технологии в школах кажется, что это устарело и ненужно, но в курсе 6.111 Массачусетского Технологического Института сейчас, в 2018/2019 учебном году, первая лаба по цифровой схемотехнике проходит именно так, с микросхемами малой степени интеграции — см. http://web.mit.edu/6.111/volume2/www/f2018/index.html.
Кроме этого, на примере соединения микросхем малой степени интеграции с кнопками удобно объяснять, что такое, зачем нужны и как работают подтягивающие резисторы. И почему они при ненажатой кнопке дают потенциал 0, и как это связано с делителем напряжения.
Еще когда на примере с микросхемой малой степени интеграции перегорает светодиод, то школьники получают жизненный опыт, что ставить резистор туда — обязательно. Если же они увидят это на экране компьютера в софтверном симуляторе макетной платы, они такого жизненного опыта не получат, так как на экране можно нарисовать все что угодно и школьники не будут уверены, что перегорание — это правда.
Вот как наглядно на микросхемах малой степени интеграции видна функция D-триггера:
Второй день начался с исторического эскурса: как проектировали микросхемы 50 лет назад и как это дважды революционно изменилось с тех пор. Одна из революций наложилась на коллапс СССР и это главная техническая причина, почему в России нет своих айфонов.
На 8.45 история, как в мировом океане выловили советский буй-шпион, который следил за движением американских кораблей, и к чему это привело.
На 13.03 история о том, как одна публикация блогера Джона Кули сместила всю мировую индустрию с VHDL на Verilog.
На 16.10 история о том, как Microsoft Windows проиграла Линуксу как платформе для работы проектировщиков микросхем.
В этой части — демонстрация, как запустить программу для синтеза цифровой логики и прошивке конфигурации в ПЛИС. Двумя способами — с помощью запуска скрипта под Линуксом и в интегрированной графической оболочке. Также краткое описание содержания демонстрационного примера. После этого галопа по Европам школьники усаживаются за графическую оболочку и делать простые упражнения, начиная с логических элементов И-ИЛИ-НЕ, входы которых подсоединены к кнопкам, а выходы к светодиодам. Примерно в таком духе:
module top (input [2:0] key, output [7:0] led); wire a = ~ key [0]; // Кнопка выдает 0, когда нажата, поэтому ее нужно инвертировать wire b = ~ key [1]; wire c = a & b; assign led [0] = ~ c; // Светодиод тоже горит, когда на входе 0 и его тоже нужно инвертировать endmodule
По ходу дела возникли сразу два интересных вопроса. Во-первых, поначалу я сам забыл, что на этой плате и кнопки, и светодиоды инвертированы. То бишь когда кнопка нажата, то на проводе 0, а когда не нажата — то 1. И когда на светодиод подать 0, он горит, а когда 1 — не горит. Если про инвертированность не знать, то логический элемент И (led [0] = key [0] & key [1]) начинает вести себя как ИЛИ, а ИЛИ — как И. Законы де Моргана в действии! ~ (a & b) == ~ a | ~ b, а также ~ (a | b) == ~ a & ~ b.
Но даже после поправки у некоторых школьников это дело все равно работало наоборот. Тогда я посмотрел в их код и обнаружил, что когда они переписывали код, который я написал на доске, то они подумали, что «~» (тильда) — это «-» (минус). Это дало мне отличный повод рассказать по различие между прямым и дополнительным кодом, а также почему для однобитных чисел (- 0) == 0 и (- 1) == 1, в то время как (~ 0) == 1 и (~ 1) == 0. А также что чтобы для многобитных чисел в дополнительном коде вычислить его отрицание, достаточно его побитово инвертировать и прибавить единицу: — a == ((~ a) + 1).
Продолжение — части 2.3, 2.4, 2.5.
Все занятие проходило под Линуксом, точнее под Lubuntu 18.04 с установленным на нем Intel FPGA Quartus II. Lubuntu грузился с SSD, на которых также был установлен Intel FPGA Quartus II Lite Edition 18.1. Для загрузки с SSD нужно просто воткнуть его в USB 3.0 порт, включить компьютер и нажать F12. Потом войти в меню и сказать «грузить с USB».
Хотя софтвер для синтеза для FPGA есть и под Windows, но Линукс хорош по двум причинам:
1. Линукс работает на более слабомощных компьютерах, чем Windows. Например у меня есть ноут с 2 гигабайтами памяти, так Intel FPGA / Altera Quartus II под Windows на нем ложится, а под Linux нормально работает.
2. Все взрослые разработчики массовых чипов в Apple, NVidia и других электронных компаниях используют Линукс, на котором работают программы Synopsys Design Compiler, Synopsys IC Compiler, Synopsys VCS, Cadence IES итд.
Почему лучше все делать на загружаемых SSD, а не ставить на компьютеры в учебный класс? Потому что установка софтвера от FPGA компаний — это довольно муторный процесс, и вокруг Altera Quartus или Xilinx Vivado нужно бегать с бубном, менять файлы в /etc и устанавливать старые 32-битные библиотеки для некоторых компонент, в частности для бесплатной версии Mentor ModelSim. Некоторые библиотеки приходится вообще собирать из исходников. Есть скрипты от Станислава Жельнио, которые это все делают автоматически, но даже и с этим скриптом установка всего на компьютер займет пару часов.
Почему бы не делать все на виртуальных машинах? Например с VirtualBox? Мы пробовали это в МГУ и других местах, но там могут возникнуть глюки с протаскиванием USB. Загружаемые SSD с Lubuntu выглядит как оптимальный вариант.
Чтобы подготовить набор SSD для семинара, нужно поставить все на один SSD, после чего клонировать его вот такой командой, которая позволяет сразу писать на три SSD с одного:
time sudo dcfldd if=/dev/sdb bs=1M of=/dev/sdc of=/dev/sdd of=/dev/sde
Тут нужно знать, что не все SSD enclosures поддерживают Линукс, например Kingwin Data Star портит диски. Правильные enclosures — Orico и Eluteng.
Также я не рекомендую пытаться заменить SSD простыми загружаемыми USB флэшками. Хотя на USB флэшках оно тоже работает, но некоторые операции невероятно тормозят, вызывает дискомфорт и раздражение. А вот на загружаемых SSD драйвах с USB 3.0 все летает быстрее, чем Линукс на внутреннем хард-драйве.
Я также пробовал втыкать загружаемый SSD-драйв в Apple Mac, нажимая при загрузке клавишу Option, но у меня не получилось. Ни через USB 3.1 порт, ни через 3.0. Похоже, Mac при загрузке не хочет понимать то ли Ext4 file system, то ли partition table. Если ли среди моих читателей маководы и при этом линуксоиды? Было бы интересно узнать, что делать (помимо опции использования VirtualBox или других виртуальных машин).
Интересно, что только 2 школьника из всей группы использовали Linux до семинара. Для меня это очень странно, так как на месте российского Минобра я бы пересадил все школы России на Линукс еще 10 лет назад, когда Ubuntu стал user-friendly. Помимо Ubuntu можно было бы сделать специальную российскую версию Линукса для образования. Виндоус засоряется вирусами, за него нужно платить лицензионные отчисления, чем Windows лучше Linux для скажем школьных курсов программирования на Питоне? Или школьникам не хватит Google docs, а нужен именно Microsoft Word? Я просто не понимаю.
Даже южнокорейское правительство решило в 2020 году переключиться на Линукс.
В любом случае, на моем семинаре никаких проблем с Линуксом у школьников не было, хотя, как я уже сказал, большинства школьников использовали его впервые.
На начало третьего дня я опоздал, потому что меня пригласили прочитать лекцию в российское отделение Samsung и мероприятие затянулось на 3 часа (вы можете скачать слайды лекции: 1, 2, 3 и статью о части содержания), после чего я проголодался и только во время поедания гречки и оливье в Муму (этого мне сильно не хватает в Калифорнии) обнаружил, что мое занятие в гимназии начнется через 5 минут.
Тогда я позвонил Александру Силантьеву из МИЭТ и попросил начать занятие без меня. Еще в предыдущий день школьники начали упражняться с семисегментным индикатором, выводя одну букву. Теперь, если скрестить вывод одной буквы с сдвиговым регистром, то можно реализовать вывод на многоразрядный динамический семисегментный индикатор, и заодно школьники выучат, как кодировать на верилоге последовательностную логику.
План удался на славу — когда я вошел в класс, у некоторых школьников по динамическому индикатору уже медленно бегали буквы, и чтобы они слились в слова, достаточно было только поднять частоту генерации разрешающего сигнала (enable) для сдвигового регистра:
Потом я передал слово Станиславу Жельнио @sparf из IVA Technologies, и он кратко обрисовал, как перейти от простых блоков логики с крохотному, но совершенно настоящему процессору (см. посты Станислава на Хабре и schoolMIPS на GitHub):
Продолжение лекции Станислава Жельнио
Семинар проводился в Гимназии Российского университета транспорта (МИИТ). На семинаре и до него помогли Ирина Груничева и Глеб Романов (еНано); Алексей Переверзев, Александр Силантьев и Евгений Примаков из МИЭТ, Александр Романов из ВШЭ МИЭМ и его студенты, Алексей Кочнов из НИИСИ, Лига Роботов (obraz.pro), Павел Кириченко (МЦСТ, Интел, автор книг http://bhv.ru/books/book.php?id=201192 ), Егор Кузмин из ИППМ РАН, Дарья Криворучко, школьница из СУНЦ, была в ЛШЮП, Тимофей Черкасов (Академия цифровых технологий Санкт-Петербурга, Школа инженерного мышления ЛНМО), Александр Бакеренков и Юлия Шалтаева из Предуниверситария МИФИ, Владимир Воронцов из МЭИ, Евгений Певцов из МИРЭА, Виталий Кравченко из Наутеха, Аркадий Поляков и Сергей Певченко из МЭИ.
Руслан Тихонов из Амперки принес компоненты для упражнений с микросхемами малой степени интеграции.
Издатель Дмитрий Мовчан, из ДМК Пресс, подарил каждому участнику полезные книжки — толстый всеобъемлющий учебник Дэвид Харрис и Сара Харрис, Цифровая схемотехника и архитектура компьютера, и легкое чтение от А. Хидэхару, Занимательная электроника. Цифровые схемы. Манга.
Максим Маслов, связанный с МФТИ, пришел на семинар и пожертвовал FPGA плат на летние школы (а раньше говорили, что в России мало благотворительности на нужды образования).
Что же будет дальше? А дальше будет два мероприятия, которые расширят и углубят то, что мы делали на Гимназии РУТ. 8-26 июля будет летняя школа МИЭТ в Зеленограде. Вот предложение по ее программе. Ее первые две недели состоит из пяти частей:
- Основы цифровых схем на микросхемах малой степени интеграции.
- Простые упражнения с комбинационной и последовательностной логикой на плате ПЛИС.
- Использование ПЛИС для контроля графического дисплея.
- Устройство и реализация на ПЛИС простейшего микропроцессора.
- Индивидуальные проекты создания игр а-ля упрощенной Angry Birds, как на основе конечного автомата чисто в хардвере ПЛИС, так и с программным управлением от простейшего процессора, синтезированного в ПЛИС.
Но еще до школы 4 июня будет семинар в Лас-Вегасе, на котором мы будем разбираться не со школьным процессором, а и индустриальным.
Более подробная программа в Зеленограде:
Неделя 1. Основы цифровой логики.
День 1. Микросхемы малой степени интеграции, упражнения с комбинаторной логикой
День 2. Микросхемы малой степени интеграции, упражнения с последовательностной логикой
День 3. ПЛИС, упражнения с кнопками, переключателями, LED, семисегментным индикатором
День 4. ПЛИС, вывод геометрических фигур на VGA
День 5. ПЛИС, конечный автомат для Angry Birds
Неделя 2. Процессор
День 1. Программирование на языке ассемблера.
День 2. Однотактовый процессор schoolMIPS.
День 3. Интерация процессора с выводом геометрических фигур на VGA.
День 4. Лекция про прерывания и многозадачность. Индивидуальный проект — программируемая на процессоре видео игра с выводом на VGA.
День 5. Лекция про конвейер. Конкурс индивидуальных проектов.
Неделя 1. День 1. Микросхемы малой степени интеграции.
1.1. Упражнения с комбинаторной логикой.
1.1.1. Логический элемент XOR на CD4070, без кнопок и подтягивающих регистров — повторить демонстрацию.
1.1.2. Логический элемент XOR, добавить кнопки и подтягивающие регистров — повторить демонстрацию.
1.1.3. Индивидуальное задание — по datashit построить демонстрацию одного из логических элементов AND/OR/NOT/XOR/NOR/NAND/XNOR, с двумя, тремя, четырьмя или восемью входами:
1.1.3.1. CD4081, Quad 2-Input AND
1.1.3.2. CD4071, Quad 2-Input OR
1.1.3.3. CD4011, Quad 2-Input NAND
1.1.3.4. CD4001, Quad 2-Input NOR
1.1.3.5. CD4073, Triple 3-Input AND
1.1.3.6. CD4025, Triple 3-Input NOR
1.1.3.7. CD4082, Dual 4-Input AND
1.1.3.8. CD4072, Dual 4-Input OR
1.1.3.9. CD4012, Dual 4-Input NAND
1.1.3.10. CD4002, 4-Input NOR
1.1.3.11. CD4068, 8-input AND NAND
1.1.3.12. CD4078, 8-Input NOR
1.2. 7-сегментный индикатор с общим катодом.
1.2.1. Собрать на макетной плате с резисторами, попробовать индивидуальные сегменты.
1.2.2. Комбинация с драйвером 7-сегментного индикатора, CD4511, BCD to 7-Segment Latch Decoder.
1.2.3. Вариант — индикатор с общим анодом. Скомбинировать с инвертором CD4069, Inverter.
1.2.4. Вариант — добавить 4 кнопки с подтягивающими резисторами на вход CD4511.
1.3. Блоки комбинационной логики — индивидуальное задание в конце дня или в виде домашнего задания:
1.3.1. CD4532, 8-Bit Priority Encoder
1.3.2. CD4051, Single 8-Channel Analog Switch, used as digital decoder
1.3.3. CD4051, Single 8-Channel Analog Switch, used as digital multiplexer
1.3.4. CD4052, Dual 4-Channel Analog Switch, used as digital multiplexer
1.3.5. CD4053, Triple 2-Channel Analog Switch, used as digital multiplexer
1.3.6. CD4008, 4-Bit Combinational Adder
1.3.7. CD4063, 4-Bit Digital Comparator
1.3.8. CD4585, 4-Bit Digital Comparator
В конце дня все показывают, кто что сделал.
Неделя 1. День 2. Упражнения с последовательностной логикой.
1.2.1. Собрать генератор тактового сигнала на основе микросхемы 555. Попробовать разные конденсаторы и сопротивления.
1.2.2. D-триггер на микросхеме CD4013, Dual D-Flip-Flop With Set-Reset.
1.2.3. Индивидуальный проект:
1.2.3.1. Сдвиговый регистр на основе CD4015, Dual 4 Bit Static Shift Register, serial-in, parallel-out.
1.2.3.2. Сдвиговый регистр на основе CD4035, 4-Stage Shift Register, parallel-in, parallel-out.
1.2.3.3. Сдвиговый регистр на основе CD4014, 8-Stage Shift Register, parallel-in, serial-out.
1.2.3.4. Счетчик с выводом на светодиоды CD4029, Binary Decimal Up Down Counter.
1.2.3.5. Счетчик с выводом на 7-сегментный индикатор через драйвер.
1.2.3.6. Более сложный — комбинация из сдвиговых регистров CD4035 (parallel-in, serial-out) c serial adder CD4038. К нему нужен инвертор CD4069. До этого я продемонстрирую serial adder CD4032 без инвертора.
1.2.3.7. Более сложный — комбинация из сдвиговых регистров CD4014 (parallel-in, serial-out) c serial adder CD4038. К нему нужен инвертор CD4069.
Неделя 1. День 3. ПЛИС, упражнения с кнопками, переключателями, LED, семисегментным индикатором
1.3.1. Логический элемент на комбинационной логике — ввод с кнопок, вывод на светодиоды.
1.3.2. Вывод одной буквы на семисегментный индикатор.
1.3.3. Простейший мультиплексор — вывод буквы в зависимости от нажатой клавиши. Реализация с помощью конструкций «?», «if», «case».
1.3.4. Сдвиговый регистр.
1.3.5. Вывод слова на восьмиразрядный динамический семисегментный индикатор, используя сдвиговый регистр.
1.3.6. Индивидуальный проект, возможно домашнее задание на выходные:
1.3.6.1. Фигуры на светодиодной матрице.
1.3.6.2. Змейка, бегающая по семисегментному индикатору.
1.3.6.3. Генерация сигнала звуковой частоты, звуковой орган.
1.3.6.4. Ввод с 16-кнопочной клавиатуры.
1.3.6.5. Кодовый замок — распознавание последовательности клавиш конечным автоматом.
1.3.6.6. Интеграция с сенсором — дальномеркой.
1.3.6.7. Интеграция с угловым кодером.
День 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. Обобщение пройденного материала, подведение итогов.
Про остальные дни школы больше деталей будет в отдельном посте, после обсуждения этого в оргкомитете летней школы. Если вы хотите участвовать в летней школе в МИЭТ в Зеленограде в роли школьника или инструктора, то организаторы только что выложили контакты и регистрацию. Если вы школьник, то принципиально чтобы вы до июля полностью прошли все три модуля роснановского онлайн-курса («От транзистора до микросхемы», «Логическая сторона цифровой схемотехники» и «Физическая сторона цифровой схемотехники»). Практика будет тяжелая, и мы не имеем возможности останавливаться, чтобы разобраться, в каком цикле какое значение находится на входе или выходе D-триггера. Это сразу в голову не вмещается, но если вы пройдете онлайн-курс, то вам будет легче.
Немного деталей про семинар в Лас-Вегасе 4 июня:
Не так часто бывает, чтобы инженерный семинар, разработанный изначально для России, и опробованный в России (в том числе в МФТИ), Украине и Казахстане, потом начинает проводится в Лас-Вегасе, на конференции автоматизации проектирования электроники. В России и Украине он назывался «Семинар по MIPSfpga», а на Design Automation Conference он называется «MIPS Open Developer Day». Приходите 4 июня в Embassy Suites by Hilton Convention Center по адресу 3600 Paradise Road, Las Vegas, и вы поучаствуете в шоу, которое уже увидели студенты и преподаватели МГУ, МФТИ, МИФИ, зеленоградского МИЭТ, питерского ИТМО, томского ТГУ, киевского КПИ, алматинского АлмаУ и частично Назарбаевского университета в Астане.
MIPSfpga — это пакет, который содержит процессорное ядро в исходниках на Verilog, которое можно менять, добавлять новые инструкции, наблюдать работу кэша и конвейера, строить многопроцессорные системы, менять одновременно софтвер и хардвер и т.д. В новом варианте семинара вы добавите к процессору сопроцессор для ускорения алгоритмов искуственного интеллекта.
Кроме этого в новом варианте семинара мы покажем, как сконфигурировать ядро из пакета MIPS microAptiv UP и вставить его в обвязку MIPSfpga. При конфигурации вы можете создавать экзотические варианты процессора, например процессор с 16-ю наборами по 32 регистра. Эти наборы вы можете автоматически переключать при входе в прерывание и тем самым быстро менять контекст, без сохранения/восстановления контекста из памяти, что в обычной RTOS занимает порядка тысячи циклов.
MIPSfpga не предназначен для введения в предмет с абсолютного нуля. Для его плодотворного использования нужно чтобы студент уже знал основы цифровой схемотехники, умел бы программировать на Си и на ассемблере, а также представлял бы концепции микроархитектуры — конвейера, конфликтов конвейера и т.д. Именно это изучается в schoolMIPS, который мы используем в Зеленограде.
Вот слайд про механизм добавления инструкций в процессор MIPS microAptiv UP:
На семинаре в Лас-Вегасе 4 июня и вероятно на летней школе юных электронщиков, которая пройдет 8-26 июля в МИЭТ в Зеленограде, мне будет помогать моя дочь Элизабет Панчул (если она вовремя получит визу). Так как Элизабет является полуяпонкой-полурусско/украинкой, она владеет только английским языком. Поэтому инструкторы-россияне (студенты или аспиранты МФТИ, МГУ итд которые готовы помогать нам с Элизабет и миэтовцами в проведении школы) могут выучить он нее правильный акцент английского, а она от них — основам русского. В дополнение к изучению Verilog-а, MIPS, архитектуры, микроархитектуры и организации DMA в память при выводе на графический экран:
Ждем вас на всех семинарах, а также в комитетах по созданию их программ!