Обновление заголовков в описании лаб

This commit is contained in:
Andrei Solodovnikov
2024-07-18 14:46:52 +03:00
parent 7b921462ea
commit 0514438f4a

View File

@@ -10,19 +10,19 @@
- [ПИН, ПМ](#пин-пм)
- [ИВТ](#ивт)
- [Обзор лабораторных работ](#обзор-лабораторных-работ)
- [1. Сумматор. SystemVerilog (Adder)](#1-сумматор-systemverilog-adder)
- [2. Арифметико-логическое устройство (ALU)](#2-арифметико-логическое-устройство-alu)
- [3. Регистровый файл и внешняя память (RF)](#3-регистровый-файл-и-внешняя-память-rf)
- [4. Простейшее программируемое устройство (PPD)](#4-простейшее-программируемое-устройство-ppd)
- [5. Основной дешифратор команд (MD)](#5-основной-дешифратор-команд-md)
- [1. Сумматор. SystemVerilog](#1-сумматор-systemverilog)
- [2. Арифметико-логическое устройство](#2-арифметико-логическое-устройство)
- [3. Регистровый файл и внешняя память](#3-регистровый-файл-и-внешняя-память)
- [4. Простейшее программируемое устройство](#4-простейшее-программируемое-устройство)
- [5. Декодер инструкций](#5-декодер-инструкций)
- [6. Основная память](#6-основная-память)
- [7. Тракт данных (DP)](#7-тракт-данных-dp)
- [8. Блог загрузки и сохранения данных (LSU)](#8-блог-загрузки-и-сохранения-данных-lsu)
- [9 Интеграция LSU](#9-интеграция-lsu)
- [10. Подсистема прерывания (IC)](#10-подсистема-прерывания-ic)
- [7. Тракт данных](#7-тракт-данных)
- [8. Блок загрузки и сохранения данных](#8-блок-загрузки-и-сохранения-данных)
- [9 Интеграция блока загрузки и сохранения](#9-интеграция-блока-загрузки-и-сохранения)
- [10. Подсистема прерывания](#10-подсистема-прерывания)
- [11. Интеграция подсистемы прерывания](#11-интеграция-подсистемы-прерывания)
- [12. Увеличение количества источников прерываний с помощью дейзи-цепочки](#12-увеличение-количества-источников-прерываний-с-помощью-дейзи-цепочки)
- [13. Периферийные устройства (PU)](#13-периферийные-устройства-pu)
- [13. Периферийные устройства](#13-периферийные-устройства)
- [14. Программирование на языке высокого уровня](#14-программирование-на-языке-высокого-уровня)
- [15. Программатор](#15-программатор)
- [16. Оценка производительности](#16-оценка-производительности)
@@ -106,27 +106,27 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
Далее приводится краткое описание и цель каждой отдельной лабораторной работы.
## 1. Сумматор. SystemVerilog (Adder)
## 1. Сумматор. SystemVerilog
![../.pic/Labs/lab_01_adder.drawio.svg](../.pic/Labs/lab_01_adder.drawio.svg)
На первой лабораторной работе изучаются базовые конструкции языка описания аппаратуры SystemVerilog, с помощью которого разрабатывается цифровой сумматор из примитивных логических вентилей, который, в последствии, конфигурируется в ПЛИС и его работа проверяется на отладочном стенде.
## 2. Арифметико-логическое устройство (ALU)
## 2. Арифметико-логическое устройство
![../.pic/Labs/lab_02_alu.drawio.svg](../.pic/Labs/lab_02_alu.drawio.svg)
На второй лабораторной изучаются новые конструкции языка SystemVerilog, на основе которых разрабатывается блок арифметико-логического устройства (АЛУ). АЛУ — это устройство, на входы которого подаются операнды, над которыми нужно выполнить некоторую операцию (сложение, вычитание и тому подобное) и код операции, которую нужно выполнить, а на выходе появляется результат этой операции. Проще говоря АЛУ - это "калькулятор" процессора.
## 3. Регистровый файл и внешняя память (RF)
## 3. Регистровый файл и внешняя память
![../.pic/Labs/lab_03_rf.drawio.svg](../.pic/Labs/lab_03_rf.drawio.svg)
На третьей лабораторной разрабатываются элементы памяти для будущего процессора: память команд, память данных и регистровый файл. В памяти команд будет храниться программа, которую будет выполнять процессор. В памяти данных хранятся данные, которые будут обрабатываться процессором. Регистровый файл — это маленькая память, тоже с данными, которые могут быть поданы непосредственно на АЛУ. Особенность RISC-архитектур в том, что данные перед обработкой необходимо перенести из памяти данных в регистровый файл, только после этого к ним можно применять различные операции.
## 4. Простейшее программируемое устройство (PPD)
## 4. Простейшее программируемое устройство
![../.pic/Labs/lab_04_cybercobra/ppd_5.drawio.svg](../.pic/Labs/lab_04_cybercobra/ppd_5.drawio.svg)
Эта работа небольшое отступление от реализации процессора с архитектурой RISC-V и нужна для более глубокого понимания принципов работы и организации программируемых устройств. В рамках четвертой лабораторной работы из реализованных блоков собирается примитивное программируемое устройство, для которого пишется программа в машинных кодах.
## 5. Основной дешифратор команд (MD)
## 5. Декодер инструкций
![../.pic/Labs/lab_05_md.drawio.svg](../.pic/Labs/lab_05_md.drawio.svg)
Пятая лабораторная посвящена разработке устройства управления основному дешифратору команд. Функция основного дешифратора — получать на вход коды выполняемых операций и преобразовывать их в управляющие сигналы для всех блоков процессора (АЛУ, память, регистровый файл, мультиплексоры). Работа требует внимательности в реализации, а ее результат проверяется заранее подготовленными автоматическими тестами.
@@ -137,24 +137,24 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
Данная вспомогательная лабораторная работа позволяет реализовать память без этого ограничения.
## 7. Тракт данных (DP)
## 7. Тракт данных
![../.pic/Labs/lab_07_datapath.drawio.svg](../.pic/Labs/lab_07_datapath.drawio.svg)
Разработанные блоки объединяются, образуя тракт данных, управляемый основным дешифратором команд. Результатом шестой лабораторной работы является однотактный процессор, с архитектурой RISC-V, поддерживающий стандартный набор целочисленных инструкций RV32I. В качестве проверки на процессоре запускаются программы, заранее написанные на языке ассемблера RISC-V. Сравнивается результат полученный на симуляторе и на разработанном процессоре.
## 8. Блог загрузки и сохранения данных (LSU)
## 8. Блок загрузки и сохранения данных
![../.pic/Labs/lab_08_lsu.drawio.svg](../.pic/Labs/lab_08_lsu.drawio.svg)
Для корректного исполнения инструкций `LB`, `LBU`, `SB`, `LH`, `LHU`, `SH` мало использовать память с побайтовой записью. Необходимо также уметь управлять этой памятью, определенным образом подготавливать данные как для записи в память данный, так и для записи в регистровый файл, а также следить за тем, чтобы за время работы с памятью, программа процессора не начала исполняться дальше. Все эти задачи возлагаются на специальный модуль, который называется **Блок загрузки и сохранения** (**Load and Store Unit**, **LSU**)
## 9 Интеграция LSU
## 9 Интеграция блока загрузки и сохранения
Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `riscv_unit`.
![../.pic/Labs/lab_09_lsu_integration.drawio.svg](../.pic/Labs/lab_09_lsu_integration.drawio.svg)
## 10. Подсистема прерывания (IC)
## 10. Подсистема прерывания
![../.pic/Labs/lab_10_irq.drawio.svg](../.pic/Labs/lab_10_irq.drawio.svg)
@@ -172,7 +172,7 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
![../.pic/Labs/lab_12_daisy_chain/fig_02.drawio.svg](../.pic/Labs/lab_12_daisy_chain/fig_02.drawio.svg)
## 13. Периферийные устройства (PU)
## 13. Периферийные устройства
![../.pic/Labs/lab_13_peripheral_units.drawio.svg](../.pic/Labs/lab_13_peripheral_units.drawio.svg)