21.11.2024 в 16:12
Цифровая микроэлектроника для математиков и программистов
Курс окончен. Его прослушало 3 группы прикладных математиков и 1 одна группа автоматики и электромеханики в Нижегородском государственном техническом университете (НГТУ) им. Р.Е. Алексеева.
По результату оказалось, что текста получилось как-то много, но сами лабораторные работы действительно простые и их действительно можно легко пройти за 6-8 трехчасовых занятий вместе со всеми практическими частями. Также текст отчетов снабжен картинками и видеороликами так, чтобы для наблюдения и понимания результатов было не обязательно повторять все действия самостоятельно дома.
0. Введение
http://1i7.livejournal.com/
Как пересечь пропасть от физики к программированию (0)
http://1i7.livejournal.com/
Введение (в весь курс вообще и в 1ю лабораторную работу в частности)
1. Подготовка к лабораторным работам с макетными платами и проводами
1.1. Подбор реквизита
http://1i7.livejournal.com/
2. Лабораторная работа 1: сборка простых электронных схем на основе микросхем малой степени интеграции
http://1i7.livejournal.com/
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/
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/
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/
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/
4.7. Самостоятельная работа - драйвер для семисегментного диодного дисплея
5. Лабораторная работа 3: делаем память (защелки и триггеры)
http://1i7.livejournal.com/
5.1. RS защелка (RS latch) на макетной плате
5.2. RS защелка (RS latch) на ПЛИС+Verilog
http://1i7.livejournal.com/
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/
6.1. Разделение частоты тактового сигнала
http://1i7.livejournal.com/
6.2. Знакомство с конечными автоматами - светофор
6.3. Самостоятельная работа - сделать робота, управляемого простым конечным автоматом
7. Лабораторная работа 5: делаем процессор MIPS
http://1i7.livejournal.com/
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/
7.3. Основные модули дизайна HDL
7.3.1. Счетчик программы
7.3.2. Файл регистров
7.3.3. Память данных
7.3.4. Память инструкций
http://1i7.livejournal.com/
7.4. Шина данных и контроллер
7.4.1. Параметры
7.4.2. Счетчик инструкций и память инструкций
7.4.3. Файл регистров
7.4.4. Разбор команд (контроллер)
7.4.5. Выполнение команд (шина данных)
http://1i7.livejournal.com/
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/
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/
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/
лаба2: http://ubuntuone.com/
лаба3: http://ubuntuone.com/
лаба4: http://ubuntuone.com/
лаба5: http://ubuntuone.com/
Занимательное чтиво по мотивам
Концепт курса и вводная информация:
первый пост у Юрия Панчула: Как пересечь пропасть от физики к программированию и насолить Алексу Экслеру
репост у Аммосова: Электронная логика
Статья Юрия Панчула в газете "Троицкий вариант": "Между программированием и физикой", 06 декабря 2011 года. ТрВ № 93, c. 7, "Образование" (pdf).
Объявление о начале:
Как пересечь пропасть от физики к программированию (0)
репост у Аммосова: Аппаратное программирование в НГТУ
репост у Панчула: Товарищи в Нижегородском государственном техническом университете воплощают в реал обсуждение в ЖЖ
Обсуждение 1й лабораторной работы с мигающими лампочками:
Вакуленко: Цифровая электроника для программистов
Аммосов: Железячные лабы
Ужас Совка: Да или Нет? (к сожалению журнал Ужаса уже удален и пост не сохранился даже в кеше яндекса)
Панчул: А Ужас Совка Против!
Цифровые микроэлектронные биороботы на Верилоге:
Пост: Цифровые микроэлектронные биороботы на Верилоге
Панчул: Молодые люди, которым есть что показать помимо "открытых человеческих лиц"
Статья в Московском Комсомольце: Детям предложат поиграть в тараканов, ОккупайМК!, О нашей затее с преподаванием FPGA и микроконтроллеров написали в "Московском Комсомольце"
Ролик на СетиНН: Цифровые микроэлектронные биороботы на СетиНН, От телепередачи до матрицы
Разное у Юрия Панчула:
Репост c 1i7: Автоматизация проектирования электроники
Репост c 1i7: Подготовка к лабам на FPGA
Подготовка к лабораторным работам с ПЛИС (2) или как я занимался сексуальным харазментом
Написал примерчик на верилоге для начинающих - стековый калькулятор
Почему одни культуры уважаемы, а другие нет?
Google и Philips поддерживают архитектуру MIPS, а в Нижнем Новгороде студенты собирают роботов
С Днем Победы! В XXI веке противником России будет не Германия
В чем разница между "креативным классом" и "людьми, создающими новое"?
Шоппинг-лист для курса "Знакомство с цифровой микроэлектроникой для математиков и программистов"
За то, что я рекомендую российским студентам, американские полицаи арестовуют с пистолетом
Написал примерчик на верилоге для начинающих - стековый калькулятор
Дополнительное полезное:
Лабораторная работа по программированию на голом железе у Сергея Вакуленко: Часть 5. Программирование на голом железе и зачатие операционной системы
Просмотров: 2249. Комментариев: 0 | |