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

Курс окончен. Его прослушало 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-файлы с этими же материалами
(пока просто копии веб-страниц с нехорошей версткой):
лаба1: http://ubuntuone.com/1KqPjHONW8ezOZf6gVGEdJ
лаба2: http://ubuntuone.com/11MUJHeyJLXFTBn4z31z4g
лаба3: http://ubuntuone.com/0lJiyuKOftcamSQkOJUGQa
лаба4: http://ubuntuone.com/1XJunJYj7aP4VobVqGuvPD
лаба5: http://ubuntuone.com/0uZS9jsVMHKELL6d1bCST9


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

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

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

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

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

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

Дополнительное полезное:
Лабораторная работа по программированию на голом железе у Сергея Вакуленко: Часть 5. Программирование на голом железе и зачатие операционной системы
Tags: цифровая электроника для программистов
Просмотров: 2249. Комментариев: 0
dth="100%" cellspacing="0" cellpadding="0" class="commTable">
Имя *: Email:
Подписка:1 Код *: