Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Цифровая микроэлектроника для математиков и программистов

Anton
September 22, 2017

Цифровая микроэлектроника для математиков и программистов

Как пересечь пропасть от физики к программированию и начать делать своих роботов

Anton

September 22, 2017
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Цифровая микроэлектроника для математиков и программистов Антон Евгеньевич Моисеев НГТУ

    им Ростислава Алексеева, Клуб изобретательства и робототехники ДОСААФ Нижегородской области
  2. Как пересечь пропасть от физики к программированию и насолить Алексу

    Экслеру • Пост Юрия Панчула от 29 сентября 2011 года, в котором он защищает школьника Степана Большедворского и его наставника от атаки Алекса Экслера, который высмеивал их за фразу «каждый программист будет делать процессор под себя» и за «новый потрясающий способ ввода данных в компьютер — рычажковый»; • Попутно констатировал, что студенты «айти»-шных специальностей МФТИ имеют крайне туманные представления о том, что происходит в компьютере ниже в лучшем случае команд ассемблера • И предложил концепт обзорного курса «булева алгебра на макетной плате → свой процессор МИПС, выполняющий ассемблерные программы на плате ПЛИС»
  3. Зачем математикам ПЛИС и Верилог? • Внезапно оказалось, что цифровые

    устройства можно проектировать без паяльника и микроскопа • Математики-программисты гибки умом в области абстракций, концептов, парадигм • Предпочитают не иметь дел с физикой • Верилог — еще один язык «программирования» со своими граничными условиями, правилами, заморочками • ПЛИС — еще одна платформа для воплощения абстракций в реальный мир
  4. За плечами • ~2 года (не считая школы) матанализа, линейной

    алгебры, дискретной и другой математики • Начальный уровень программирования: Си, C++, Java, Matlab и т.п. • Всё это в процессе знакомства и усвоения, мозг еще не успел закостенеть, легко переключается на новые концепты • При условии, что они умещаются внутри экрана компьютера
  5. Как пересечь пропасть от физики к программированию • Студенты специальность

    Прикладная математика и информатика в НГТУ им Р.Е. Алексеева, ИРИТ • 2й курс • 2 потока: весна 2012, 2013 • + пара малых групп факультативом • + факультатив для группы студентов- электронщиков ФАЭ (по приглашению Александра Сергеевича Плехова)
  6. Как пересечь пропасть от физики к программированию • Серия ознакомительных

    лабораторных работ • 90% практики • Каждая лаба — «здравствуй мир» по выбранной теме начального уровня • Всё, о чем рассказано, далее испробовано
  7. Лабораторная работа 1: сборка простых электронных схем на основе микросхем

    малой степени интеграции • Булева алгебра на макетной плате: • TRUE/FALSE, • AND, OR, NOT, • цепочки операторов: NAND=AND+NOT • Не боимся микросхем: 4 NAND внутри 4011 • Таймер из 2х NAND и конденсатора • Семисегментный диодный дисплей
  8. Лабораторная работа 2: знакомство с платой ПЛИС (FPGA) - основы

    комбинаторной логики • Запуск среды разработки и создание проекта (Xilinx ISE, Altera Quartus) • Модуль — структурная единица дизайна Verilog (черный ящик входы-выходы) • Булевы операторы • Модуль верхнего уровня, подключение устройств • Синтез и запуск на ПЛИС • Знакомство с симуляцией (что она вообще есть)
  9. Лабораторная работа 3: делаем память (защелки и триггеры) • RS

    защелка (RS latch) на макетной плате • RS защелка (RS latch) на ПЛИС+Verilog • D защелка (D latch) на ПЛИС+Verilog • D триггер (D flip-flop) на ПЛИС+Verilog • 0.5 байта (4 бита) из 4х D триггеров на ПЛИС+Verilog
  10. Лабораторная работа 4: простые конечные автоматы • Разделение частоты тактового

    сигнала • Знакомство с конечными автоматами — светофор • Самостоятельная работа — сделать робота, управляемого простым конечным автоматом
  11. Лабораторная работа 5: делаем процессор MIPS • Основные элементы архитектуры

    процессора на примере 32-битного процессора MIPS: память инструкций и счетчик программы, память данных, файл регистров (register file) • Понятие языка ассемблера и конвертация его в машинный код процессора (практическое упражнение — перевести простую программу на ассемблере в машинный код)
  12. Лабораторная работа 5: делаем процессор MIPS • Реализация на Верилоге

    (в основе — однотактовый процессор из Харрис и Харрис в значительной степени переписанный для большей наглядности и запуска на ПЛИС) • Основные модули дизайна HDL: счетчик программы, файл регистров, память данных, память инструкций • Шина данных и контроллер: разбор команд (контроллер), выполнение команд (шина данных) • Команда add, sub, lw, sw, addi, beq, j • Ядро MIPS и модуль верхнего уровня
  13. Лабораторная работа 5: делаем процессор MIPS • Подключение устройств ввода-вывода

    и демо- запуск на ПЛИС • Видео-память 7мисегментный дисплей v • Массив из 4х рычажков bs • Однобитный флаг bsf • Отображение устройств на адреса в памяти данных • Подключение устройств в модуле верхнего уровня
  14. Лабораторная работа 5: делаем процессор MIPS • Тестовые программы •

    Проверка "видео-памяти" — выводим цифру 8 • Проверка "видео-памяти" — выводим цифру 5 • Проверка ввода (1 бит — порт bsf) и условного перехода beq • Проверка сохранения слова (sw) и загрузки слова (lw) • Проверка рычажкового способа ввода данных • Калькулятор (в процессе поймал дребезг контактов) • Самостоятельная работа (поток 2): реализовать самостоятельно новую команду архитектуры MIPS
  15. Лабораторная работа 6: знакомство с промышленной реализацией архитектуры MIPS на

    примере pic32 • Работа с документацией на контроллер • Поддерживаемые команды — ассемблер MIPS32 • Структура памяти: RAM, FLASH, BOOT • Блок памяти SFR (ввод-вывод): распиновка, работа с портами ввода-вывода через регистры • Задание 1: зажечь лампочку ассемблером MIPS • Задание 2: считать значение с ножки ассемблером MIPS • Задание 3: мигаем лампочкой программой на Си • Задание 4: считать значение с ножки программой на Си
  16. Выводы по результатам • Степан Большедворский отмщен: мы — программисты,

    сделали процессор под себя и вводили в него данные рычажками! • Всё получилось вместить в один семестр • Студенты-математики действительно воспринимают Верилог как очередную платформу со своей парадигмой • Ломка от перехода на Верилог не сильнее, чем при осознании ООП после квикбейсика или функционального программирования после процедурного • Выражение текстом предпочтительнее визуального
  17. Вскрытые сложности • Неудачные дизайны сложно отлаживать на ПЛИС (нужно

    углублять симуляцию, добавлять верификацию) • Нужно организовать лабораторию, аккуратно хранить железо (провода, макетки, платы) • Для погружения студентам нужен доступ к оборудованию за пределами занятий, желательно дома • Лаба с процессором растянулась на несколько занятий и в итоге получилась довольно утомительной • Курс является довольно поверхностным, для реализации простейших проектов потребуется дополнительное время на изучение литературы, типовых решений, обзор экосистемы модулей (теперь есть учебник Харрис и Харрис)
  18. Размышления • Полученные навыки нужно применять в дальнейшей программе обучение

    — новые курсы, персональные проекты, курсовые и дипломные работы • Подборка типичных косяков (дребезг контактов) • Хороший программист мыслит не столько парадигмой языка, сколько шаблонами проектирования для оптимальных решений типовых сценариев. Здесь необходимо аналогичный подход • Необходим обзор библиотек элементарных шаблонных модулей для типовых задач и IP- блоков
  19. Размышления • Подобрать демо-задачи, на которых проявляется преимущество ПЛИС (критические/краевые

    условия) • Что-нибудь модное с математикой: ИИ, распознавание образов • Роботы, станки с ЧПУ, моторы • Не циклиться на текущем рынке труда — запускать свои проекты
  20. Факультатив на ФАЭ (автоматика и электроника) • Вполне внятно представляют,

    зачем всё это нужно (заменить кучу рассыпухи на один чип) • Сильная физика • С абстракциями-парадигмами похуже • Этап привыкания к среде разработки • Скорее всего графическое представление пойдет лучше текстового • Интересуют и ПЛИС и контроллеры
  21. Автомобилисты • Хорошо с физикой (могут спроектировать схему силового привода

    до контактов контроллера) • Способны реализовать простые вещи на Си/С++ • Сложнее - сложнее • Платформа: C++, ChipKIT (Arduino) • Верилог даже не пробовали • Ультра-простота среды Ардуино здесь в плюс
  22. • Материалы курса выложены в виде серии постов в ЖЖ,

    за это время на отдельных страницах накопилось до ~3000 просмотров • Регулярные ежедневные заходы на разные страницы курса (3-8 в день) продолжаются до сих пор (не знаю, живые люди или боты) • Преподавание в НГТУ по этой линии до поры заморожено
  23. • 3Д-моделирование и 3Д-печать (OpenSCAD и любой 3Д-принтер) • 2Д-моделирование

    и изготовление плоских деталей (Inkscape и лазерная резка пластика) • Программирование микроконтроллеров — моторчики и датчики (ChipKIT/Arduino)
  24. • Моделирование корпуса робота-машинки в OpenSCAD и Inkscape • Цифровое

    производство деталей, покупка компонентов, сборка готовой модели
  25. Дальше • Азы программирования: езда по линии, вышибание банок •

    Литье эластичных покрышек из силикона в пластиковые формы, распечатанные на 3Д- принтере • ...