Экслеру • Пост Юрия Панчула от 29 сентября 2011 года, в котором он защищает школьника Степана Большедворского и его наставника от атаки Алекса Экслера, который высмеивал их за фразу «каждый программист будет делать процессор под себя» и за «новый потрясающий способ ввода данных в компьютер — рычажковый»; • Попутно констатировал, что студенты «айти»-шных специальностей МФТИ имеют крайне туманные представления о том, что происходит в компьютере ниже в лучшем случае команд ассемблера • И предложил концепт обзорного курса «булева алгебра на макетной плате → свой процессор МИПС, выполняющий ассемблерные программы на плате ПЛИС»
устройства можно проектировать без паяльника и микроскопа • Математики-программисты гибки умом в области абстракций, концептов, парадигм • Предпочитают не иметь дел с физикой • Верилог — еще один язык «программирования» со своими граничными условиями, правилами, заморочками • ПЛИС — еще одна платформа для воплощения абстракций в реальный мир
алгебры, дискретной и другой математики • Начальный уровень программирования: Си, C++, Java, Matlab и т.п. • Всё это в процессе знакомства и усвоения, мозг еще не успел закостенеть, легко переключается на новые концепты • При условии, что они умещаются внутри экрана компьютера
Прикладная математика и информатика в НГТУ им Р.Е. Алексеева, ИРИТ • 2й курс • 2 потока: весна 2012, 2013 • + пара малых групп факультативом • + факультатив для группы студентов- электронщиков ФАЭ (по приглашению Александра Сергеевича Плехова)
комбинаторной логики • Запуск среды разработки и создание проекта (Xilinx ISE, Altera Quartus) • Модуль — структурная единица дизайна Verilog (черный ящик входы-выходы) • Булевы операторы • Модуль верхнего уровня, подключение устройств • Синтез и запуск на ПЛИС • Знакомство с симуляцией (что она вообще есть)
защелка (RS latch) на макетной плате • RS защелка (RS latch) на ПЛИС+Verilog • D защелка (D latch) на ПЛИС+Verilog • D триггер (D flip-flop) на ПЛИС+Verilog • 0.5 байта (4 бита) из 4х D триггеров на ПЛИС+Verilog
процессора на примере 32-битного процессора MIPS: память инструкций и счетчик программы, память данных, файл регистров (register file) • Понятие языка ассемблера и конвертация его в машинный код процессора (практическое упражнение — перевести простую программу на ассемблере в машинный код)
(в основе — однотактовый процессор из Харрис и Харрис в значительной степени переписанный для большей наглядности и запуска на ПЛИС) • Основные модули дизайна HDL: счетчик программы, файл регистров, память данных, память инструкций • Шина данных и контроллер: разбор команд (контроллер), выполнение команд (шина данных) • Команда add, sub, lw, sw, addi, beq, j • Ядро MIPS и модуль верхнего уровня
и демо- запуск на ПЛИС • Видео-память 7мисегментный дисплей v • Массив из 4х рычажков bs • Однобитный флаг bsf • Отображение устройств на адреса в памяти данных • Подключение устройств в модуле верхнего уровня
Проверка "видео-памяти" — выводим цифру 8 • Проверка "видео-памяти" — выводим цифру 5 • Проверка ввода (1 бит — порт bsf) и условного перехода beq • Проверка сохранения слова (sw) и загрузки слова (lw) • Проверка рычажкового способа ввода данных • Калькулятор (в процессе поймал дребезг контактов) • Самостоятельная работа (поток 2): реализовать самостоятельно новую команду архитектуры MIPS
примере pic32 • Работа с документацией на контроллер • Поддерживаемые команды — ассемблер MIPS32 • Структура памяти: RAM, FLASH, BOOT • Блок памяти SFR (ввод-вывод): распиновка, работа с портами ввода-вывода через регистры • Задание 1: зажечь лампочку ассемблером MIPS • Задание 2: считать значение с ножки ассемблером MIPS • Задание 3: мигаем лампочкой программой на Си • Задание 4: считать значение с ножки программой на Си
сделали процессор под себя и вводили в него данные рычажками! • Всё получилось вместить в один семестр • Студенты-математики действительно воспринимают Верилог как очередную платформу со своей парадигмой • Ломка от перехода на Верилог не сильнее, чем при осознании ООП после квикбейсика или функционального программирования после процедурного • Выражение текстом предпочтительнее визуального
углублять симуляцию, добавлять верификацию) • Нужно организовать лабораторию, аккуратно хранить железо (провода, макетки, платы) • Для погружения студентам нужен доступ к оборудованию за пределами занятий, желательно дома • Лаба с процессором растянулась на несколько занятий и в итоге получилась довольно утомительной • Курс является довольно поверхностным, для реализации простейших проектов потребуется дополнительное время на изучение литературы, типовых решений, обзор экосистемы модулей (теперь есть учебник Харрис и Харрис)
— новые курсы, персональные проекты, курсовые и дипломные работы • Подборка типичных косяков (дребезг контактов) • Хороший программист мыслит не столько парадигмой языка, сколько шаблонами проектирования для оптимальных решений типовых сценариев. Здесь необходимо аналогичный подход • Необходим обзор библиотек элементарных шаблонных модулей для типовых задач и IP- блоков
условия) • Что-нибудь модное с математикой: ИИ, распознавание образов • Роботы, станки с ЧПУ, моторы • Не циклиться на текущем рынке труда — запускать свои проекты
зачем всё это нужно (заменить кучу рассыпухи на один чип) • Сильная физика • С абстракциями-парадигмами похуже • Этап привыкания к среде разработки • Скорее всего графическое представление пойдет лучше текстового • Интересуют и ПЛИС и контроллеры
до контактов контроллера) • Способны реализовать простые вещи на Си/С++ • Сложнее - сложнее • Платформа: C++, ChipKIT (Arduino) • Верилог даже не пробовали • Ультра-простота среды Ардуино здесь в плюс
за это время на отдельных страницах накопилось до ~3000 просмотров • Регулярные ежедневные заходы на разные страницы курса (3-8 в день) продолжаются до сих пор (не знаю, живые люди или боты) • Преподавание в НГТУ по этой линии до поры заморожено