1i7 (1i7) wrote,
1i7
1i7

Categories:

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

Как пересечь пропасть от физики к программированию за 6 лабораторных работ - от мигающих лампочек на макетной плате через собственную реализацию процессора MIPS на ПЛИС до промышленной реализации MIPS в виде контроллера PIC32.

Курс окончен. Точнее, сам курс был готов еще в конце весны 2012го года, но отчеты осилил дописать только сейчас. С тех пор его прослушало 3 группы прикладных математиков и 1 одна группа автоматики и электромеханики в Нижегородском государственном техническом университете (НГТУ) им. Р.Е. Алексеева.

По результату оказалось, что текста получилось как-то много, но сами лабораторные работы действительно простые и их действительно можно легко пройти за 6-8 трехчасовых занятий вместе со всеми практическими частями. Также текст отчетов снабжен картинками и видеороликами так, чтобы для наблюдения и понимания результатов было не обязательно повторять все действия самостоятельно дома.




Оглавление

0. Введение
http://1i7.livejournal.com/515.html
Как пересечь пропасть от физики к программированию (0)
http://1i7.livejournal.com/1267.html
Введение (в весь курс вообще и в 1ю лабораторную работу в частности)

1. Подготовка к лабораторным работам с макетными платами и проводами
1.1. Подбор реквизита
http://1i7.livejournal.com/940.html

2. Лабораторная работа 1: сборка простых электронных схем на основе микросхем малой степени интеграции
http://1i7.livejournal.com/1471.html
2.1. Главные детали — макетная плата, диоды и светодиоды
2.2. Определение булевых значений TRUE/FALSE на выбранном участке цепи — светодиод в качестве индикатора текущего значения
2.3. Таблица истинности и оператор OR
2.4. Оператор AND
2.5. Оператор NOT и транзистор
2.6. Объединение логических элементов в логическую цепь — оператор NAND как AND+NOT
2.7. Знакомство с модулями цифровой логики — 4 оператора NAND внутри модуля 4011
2.8. Таймер из двух элементов NAND и конденсатора
2.9. Устройство вывода — семисегментный диодный дисплей
2.10. Заключение

3. Подготовка к лабораторным работам с ПЛИС
3.1. Выбор оборудования, литературы и программного обеспечения
http://1i7.livejournal.com/1927.html (1)
3.1.1. Подобрать подходящую плату ПЛИС (FPGA)
3.1.2. Подобрать литературу
3.1.3. Verilog против VHDL
3.1.4. Подобрать и установить необходимое программное обеспечение

3.2. Установка Xilinx ISE WebPack и Digilent Adept2
http://1i7.livejournal.com/2271.html (2)
3.2.1. Установка Xilinx ISE WebPack
3.2.2. Установка Digilent Adept 2 Linux
3.2.3. Проверка работоспособности инструментов Digilent Adept 2 с платой Digilent Basys2

4. Лабораторная работа 2: знакомство с платой ПЛИС (FPGA) - основы комбинаторной логики
http://1i7.livejournal.com/2414.html (1)
4.1. Запуск среды разработки и создание проекта для платы Digilent Basys 2
4.2. Создать файл с исходным кодом на Verilog - пустой модуль
4.3. Структурная единица дизайна на Verilog - модуль как черный ящик со входами и выходами
4.4. Базовые булевы операторы
4.5. Синтез (synthesis) для ПЛИС (FPGA)
4.5.1. Подключение ucf-файла с описанием структуры платы ПЛИС
4.5.2. Создание модуля верхнего уровня для манипуляции реальными устройствами ввода/вывода платы ПЛИС
4.5.3. Синтез прошивки
4.6. Знакомство с симуляцией (simulation)

http://1i7.livejournal.com/2647.html (2)
4.7. Самостоятельная работа - драйвер для семисегментного диодного дисплея

5. Лабораторная работа 3: делаем память (защелки и триггеры)
http://1i7.livejournal.com/6295.html (1)
5.1. RS защелка (RS latch) на макетной плате
5.2. RS защелка (RS latch) на ПЛИС+Verilog

http://1i7.livejournal.com/6473.html (2)
5.3. D защелка (D latch) на ПЛИС+Verilog
5.4. D триггер (D flip-flop) на ПЛИС+Verilog
5.5. 0.5 байта (4 бита) из 4х D триггеров на ПЛИС+Verilog
5.6. Заключение

6. Лабораторная работа 4: простые конечные автоматы
http://1i7.livejournal.com/7503.html (1)
6.1. Разделение частоты тактового сигнала

http://1i7.livejournal.com/7749.html (2)
6.2. Знакомство с конечными автоматами - светофор
6.3. Самостоятельная работа - сделать робота, управляемого простым конечным автоматом

7. Лабораторная работа 5: делаем процессор MIPS
http://1i7.livejournal.com/8270.html (1)
7.1. Основные элементы архитектуры процессора на примере 32хбитного процессора MIPS
7.1.1. Память инструкций и счетчик программы
7.1.2. Память данных
7.1.3. Файл регистров (register file)

7.2. Понятие языка ассемблера и конвертация его в машинный код процессора
7.2.1. Переходим к командам ассемблера
7.2.1.1. Команды типа R-type (register type)
7.2.1.2. Команды типа I-type (immediate type)
7.2.1.3. Команды типа J-type (jump type)
7.2.2. Практическое упражнение - перевести простую программу на ассемблере в машинный код
7.2.3. Ввод-вывод

http://1i7.livejournal.com/10468.html (2)
7.3. Основные модули дизайна HDL
7.3.1. Счетчик программы
7.3.2. Файл регистров
7.3.3. Память данных
7.3.4. Память инструкций

http://1i7.livejournal.com/10806.html (3)
7.4. Шина данных и контроллер
7.4.1. Параметры
7.4.2. Счетчик инструкций и память инструкций
7.4.3. Файл регистров
7.4.4. Разбор команд (контроллер)
7.4.5. Выполнение команд (шина данных)

http://1i7.livejournal.com/11103.html (4)
7.4.5.1. Команда add
7.4.5.2. Команда sub
7.4.5.3. Команда lw
7.4.5.4. Команда sw
7.4.5.5. Команда addi
7.4.5.6. Команда beq
7.4.5.7. Команда j

7.5. Ядро MIPS и модуль верхнего уровня
7.5.1. Ядро MIPS
7.5.2. Модуль верхнего уровня

http://1i7.livejournal.com/11333.html (5)
7.6. Подключение устройств ввода-вывода и демо-запуск на ПЛИС
7.6.1. Видео-память 7мисегментный дисплей v
7.6.2. Массив из 4х рычажков bs
7.6.3. Однобитный флаг bsf
7.6.4. Дополняем модуль Память данных
7.6.5. Дополняем модуль верхнего уровня

http://1i7.livejournal.com/11571.html (6)
7.7. Тестовые программы
7.7.1. Проверка "видео-памяти" - выводим цифру 8
7.7.2. Проверка "видео-памяти" - выводим цифру 5
7.7.3. Проверка ввода (1 бит - порт bsf) и условного перехода beq
7.7.4. Проверка сохранения слова (sw) и загрузки слова (lw)
7.7.5. Проверка рычажкового способа ввода данных
7.7.6. Калькулятор

7.8. Лаба окончена

8. Подготовка к лабораторным работам с промышленной реализацией архитектуры MIPS на примере pic32
http://1i7.livejournal.com/12327.html
8.1. Литература

8.2. Оборудование
8.2.1. ChipKIT Uno32
8.2.2. ChipKIT Max32
8.2.3. ChipKIT uC32
8.2.4. Olimex DuinoMite

8.3. Программное обеспечение
8.3.1. Редактор кода
8.3.2. Компилятор Си и транслятор ассемблера в машинный код
8.3.3. Сборка прошивки
8.3.4. Программатор
8.3.5. Подключение платы (для прошивки с avrdude)

8.4. Дополнительно
8.4.1. GDB
8.4.2. MPLAB X
8.4.3. Коммерческие компиляторы от Microchip
8.4.4. PICkit3

9. Лабораторная работа 6: знакомство с промышленной реализацией архитектуры MIPS на примере pic32
http://1i7.livejournal.com/15095.html (1)
9.1. Дополнительно документация
9.2. Поддерживаемые команды - ассемблер MIPS32

http://1i7.livejournal.com/15209.html (2)
9.3. Структура памяти
9.3.1. Как делали мы
9.3.1. Как сделано в PIC32
9.4. Блок памяти RAM
9.5. Блок памяти FLASH
9.6. Блок памяти BOOT

http://1i7.livejournal.com/15637.html (3)
9.7. Блок памяти SFR (ввод-вывод)
9.7.1. Распиновка
9.7.2. Работа с портами ввода-вывода через регистры

http://1i7.livejournal.com/17042.html (4)
9.8. Примеры
9.8.1. Задание 1 - зажечь лампочку ассемблером MIPS
9.8.2. Задание 2 - считать значение с ножки ассемблером MIPS

http://1i7.livejournal.com/17301.html (5)
9.8.3. Задание 3 - мигаем лампочкой программой на Си
9.8.4. Задание 4: считать значение с ножки программой на Си



Также для удобства pdf-файлы с этими же материалами
(пока просто копии веб-страниц с нехорошей версткой):
Лекции по Верилогу: https://yadi.sk/d/Frm7d25P3St2wr
лаба1: https://yadi.sk/i/K4s9ByHaBG7DZw
лаба2: https://yadi.sk/i/l_HoWDOkVab19A
лаба3: https://yadi.sk/i/mA8C3jpHnjIQ2Q
лаба4: https://yadi.sk/i/pKO500ndpH-C1Q
лаба5: https://yadi.sk/i/aWQwPsYBEC6Ipw

Исходный код всех занятий: https://github.com/1i7/verilog-basics

Занимательное чтиво по мотивам

Концепт курса и вводная информация:
первый пост у Юрия Панчула: Как пересечь пропасть от физики к программированию и насолить Алексу Экслеру
репост у Аммосова: Электронная логика
Статья Юрия Панчула в газете "Троицкий вариант": "Между программированием и физикой", 06 декабря 2011 года. ТрВ № 93, c. 7, "Образование" (pdf).

Объявление о начале:
Как пересечь пропасть от физики к программированию (0)
репост у Аммосова: Аппаратное программирование в НГТУ
репост у Панчула: Товарищи в Нижегородском государственном техническом университете воплощают в реал обсуждение в ЖЖ

Обсуждение 1й лабораторной работы с мигающими лампочками:
Вакуленко: Цифровая электроника для программистов
Аммосов: Железячные лабы
Ужас Совка: Да или Нет? (к сожалению журнал Ужаса уже удален и пост не сохранился даже в кеше яндекса; апдейт: зато остался в веб-архиве!)
Панчул: А Ужас Совка Против!

Цифровые микроэлектронные биороботы на Верилоге:
Пост: Цифровые микроэлектронные биороботы на Верилоге
Панчул: Молодые люди, которым есть что показать помимо "открытых человеческих лиц"
Статья в Московском Комсомольце:  Детям предложат поиграть в тараканов, ОккупайМК!, О нашей затее с преподаванием FPGA и микроконтроллеров написали в "Московском Комсомольце"
Ролик на СетиНН: Цифровые микроэлектронные биороботы на СетиНН, От телепередачи до матрицы

Разное у Юрия Панчула:
Репост c 1i7: Автоматизация проектирования электроники
Репост c 1i7: Подготовка к лабам на FPGA
Подготовка к лабораторным работам с ПЛИС (2) или как я занимался сексуальным харазментом
Написал примерчик на верилоге для начинающих - стековый калькулятор
Почему одни культуры уважаемы, а другие нет?
Google и Philips поддерживают архитектуру MIPS, а в Нижнем Новгороде студенты собирают роботов
С Днем Победы! В XXI веке противником России будет не Германия
В чем разница между "креативным классом" и "людьми, создающими новое"?
Шоппинг-лист для курса "Знакомство с цифровой микроэлектроникой для математиков и программистов"
За то, что я рекомендую российским студентам, американские полицаи арестовуют с пистолетом
Написал примерчик на верилоге для начинающих - стековый калькулятор

Дополнительное полезное:
Лабораторная работа по программированию на голом железе у Сергея Вакуленко: Часть 5. Программирование на голом железе и зачатие операционной системы
Tags: arduino, microchip, mips, pic32, verilog, плис, программирование, цифровая электроника для программистов
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 9 comments