diff --git a/.pic/Labs/l1.png b/.pic/Labs/l1.png deleted file mode 100644 index a076f1d..0000000 Binary files a/.pic/Labs/l1.png and /dev/null differ diff --git a/.pic/Labs/l2.png b/.pic/Labs/l2.png deleted file mode 100644 index 0b88be0..0000000 Binary files a/.pic/Labs/l2.png and /dev/null differ diff --git a/.pic/Labs/l3.png b/.pic/Labs/l3.png deleted file mode 100644 index 77b6eb0..0000000 Binary files a/.pic/Labs/l3.png and /dev/null differ diff --git a/.pic/Labs/l5.png b/.pic/Labs/l5.png deleted file mode 100644 index 1aea12d..0000000 Binary files a/.pic/Labs/l5.png and /dev/null differ diff --git a/.pic/Labs/l6.png b/.pic/Labs/l6.png deleted file mode 100644 index e81b79b..0000000 Binary files a/.pic/Labs/l6.png and /dev/null differ diff --git a/.pic/Labs/l7.png b/.pic/Labs/l7.png deleted file mode 100644 index a93deaa..0000000 Binary files a/.pic/Labs/l7.png and /dev/null differ diff --git a/.pic/Labs/l8.png b/.pic/Labs/l8.png deleted file mode 100644 index 79473fd..0000000 Binary files a/.pic/Labs/l8.png and /dev/null differ diff --git a/.pic/Labs/l9.png b/.pic/Labs/l9.png deleted file mode 100644 index eca3400..0000000 Binary files a/.pic/Labs/l9.png and /dev/null differ diff --git a/.pic/Labs/lab_01_adder.drawio.png b/.pic/Labs/lab_01_adder.drawio.png new file mode 100644 index 0000000..b2772d0 Binary files /dev/null and b/.pic/Labs/lab_01_adder.drawio.png differ diff --git a/.pic/Labs/lab_02_alu.drawio.png b/.pic/Labs/lab_02_alu.drawio.png new file mode 100644 index 0000000..53d4431 Binary files /dev/null and b/.pic/Labs/lab_02_alu.drawio.png differ diff --git a/.pic/Labs/lab_03_rf.drawio.png b/.pic/Labs/lab_03_rf.drawio.png new file mode 100644 index 0000000..e30ba10 Binary files /dev/null and b/.pic/Labs/lab_03_rf.drawio.png differ diff --git a/.pic/Labs/lab_05_md.drawio.png b/.pic/Labs/lab_05_md.drawio.png new file mode 100644 index 0000000..56106d5 Binary files /dev/null and b/.pic/Labs/lab_05_md.drawio.png differ diff --git a/.pic/Labs/lab_06_datapath.drawio.png b/.pic/Labs/lab_06_datapath.drawio.png new file mode 100644 index 0000000..a79182a Binary files /dev/null and b/.pic/Labs/lab_06_datapath.drawio.png differ diff --git a/.pic/Labs/lab_08_lsu.drawio.png b/.pic/Labs/lab_08_lsu.drawio.png new file mode 100644 index 0000000..0769aef Binary files /dev/null and b/.pic/Labs/lab_08_lsu.drawio.png differ diff --git a/.pic/Labs/lab_09_lsu_integration.drawio.png b/.pic/Labs/lab_09_lsu_integration.drawio.png new file mode 100644 index 0000000..2635f56 Binary files /dev/null and b/.pic/Labs/lab_09_lsu_integration.drawio.png differ diff --git a/.pic/Labs/lab_10_irq.drawio.png b/.pic/Labs/lab_10_irq.drawio.png new file mode 100644 index 0000000..a2364e2 Binary files /dev/null and b/.pic/Labs/lab_10_irq.drawio.png differ diff --git a/.pic/Labs/lab_11_irq_integration.drawio.png b/.pic/Labs/lab_11_irq_integration.drawio.png new file mode 100644 index 0000000..61b4a9b Binary files /dev/null and b/.pic/Labs/lab_11_irq_integration.drawio.png differ diff --git a/.pic/Labs/lab_12_peripheral_units.drawio.png b/.pic/Labs/lab_12_peripheral_units.drawio.png new file mode 100644 index 0000000..ce90ed5 Binary files /dev/null and b/.pic/Labs/lab_12_peripheral_units.drawio.png differ diff --git a/.pic/Labs/lab_14_programming_device.drawio.png b/.pic/Labs/lab_14_programming_device.drawio.png new file mode 100644 index 0000000..cde228d Binary files /dev/null and b/.pic/Labs/lab_14_programming_device.drawio.png differ diff --git a/.pic/Labs/lab_overview.gif b/.pic/Labs/lab_overview.gif new file mode 100644 index 0000000..44b245d Binary files /dev/null and b/.pic/Labs/lab_overview.gif differ diff --git a/.pic/Labs/labs_overview.drawio.png b/.pic/Labs/labs_overview.drawio.png new file mode 100644 index 0000000..38bc753 Binary files /dev/null and b/.pic/Labs/labs_overview.drawio.png differ diff --git a/Labs/README.md b/Labs/README.md index f079bb9..77da3ad 100644 --- a/Labs/README.md +++ b/Labs/README.md @@ -82,7 +82,7 @@ Создаваемая система на ПЛИС состоит из: процессора, памяти, контроллера прерываний и контроллеров периферийных устройств. -![../.pic/Labs/ldone.png](../.pic/Labs/ldone.png) +![../.pic/Labs/ldone.png](../.pic/Labs/lab_overview.gif) Выполнение лабораторных работ это последовательный процесс в результате которого будет освоен ряд различных инструментов и средств. В общих словах это: @@ -104,17 +104,17 @@ ## 1. Сумматор. SystemVerilog (Adder) -![../.pic/Labs/l1.png](../.pic/Labs/l1.png) +![../.pic/Labs/l1.png](../.pic/Labs/lab_01_adder.drawio.png) На первой лабораторной работе изучаются базовые конструкции языка описания аппаратуры SystemVerilog, с помощью которого разрабатывается цифровой сумматор из примитивных логических вентилей, который, в последствии, конфигурируется в ПЛИС и его работа проверяется на отладочном стенде. ## 2. Арифметико-логическое устройство (ALU) -![../.pic/Labs/l2.png](../.pic/Labs/l2.png) +![../.pic/Labs/l2.png](../.pic/Labs/lab_02_alu.drawio.png) На второй лабораторной изучаются новые конструкции языка SystemVerilog, на основе которых разрабатывается блок арифметико-логического устройства (АЛУ). АЛУ — это устройство, на входы которого подаются операнды, над которыми нужно выполнить некоторую операцию (сложение, вычитание и тому подобное) и код операции, которую нужно выполнить, а на выходе появляется результат этой операции. Проще говоря АЛУ - это "калькулятор" процессора. ## 3. Регистровый файл и внешняя память (RF) -![../.pic/Labs/l3.png](../.pic/Labs/l3.png) +![../.pic/Labs/l3.png](../.pic/Labs/lab_03_rf.drawio.png) На третьей лабораторной разрабатываются элементы памяти для будущего процессора: память команд, память данных и регистровый файл. В памяти команд будет храниться программа, которую будет выполнять процессор. В памяти данных хранятся данные, которые будут обрабатываться процессором. Регистровый файл — это маленькая память, тоже с данными, которые могут быть поданы непосредственно на АЛУ. Особенность RISC-архитектур в том, что данные перед обработкой необходимо перенести из памяти данных в регистровый файл, только после этого к ним можно применять различные операции. ## 4. Простейшее программируемое устройство (PPD) @@ -124,12 +124,12 @@ ## 5. Основной дешифратор команд (MD) -![../.pic/Labs/l5.png](../.pic/Labs/l5.png) +![../.pic/Labs/l5.png](../.pic/Labs/lab_05_md.drawio.png) Пятая лабораторная посвящена разработке устройства управления – основному дешифратору команд. Функция основного дешифратора — получать на вход коды выполняемых операций и преобразовывать их в управляющие сигналы для всех блоков процессора (АЛУ, память, регистровый файл, мультиплексоры). Работа требует внимательности в реализации, а ее результат проверяется заранее подготовленными автоматическими тестами. ## 6. Тракт данных (DP) -![../.pic/Labs/l6.png](../.pic/Labs/l6.png) +![../.pic/Labs/l6.png](../.pic/Labs/lab_06_datapath.drawio.png) Разработанные блоки объединяются, образуя тракт данных, управляемый основным дешифратором команд. Результатом шестой лабораторной работы является однотактный процессор, с архитектурой RISC-V, поддерживающий стандартный набор целочисленных инструкций RV32I. В качестве проверки на процессоре запускаются программы, заранее написанные на языке ассемблера RISC-V. Сравнивается результат полученный на симуляторе и на разработанном процессоре. ## 7. Внешняя память @@ -140,7 +140,7 @@ ## 8. Блог загрузки и сохранения данных (LSU) -![../.pic/Labs/l7.png](../.pic/Labs/l7.png) +![../.pic/Labs/l7.png](../.pic/Labs/lab_08_lsu.drawio.png) Для корректного исполнения инструкций `LB`, `LBU`, `SB`, `LH`, `LHU`, `SH` мало использовать память с побайтовой записью. Необходимо также уметь управлять этой памятью, определенным образом подготавливать данные как для записи в память данный, так и для записи в регистровый файл, а также следить за тем, чтобы за время работы с памятью, программа процессора не начала исполняться дальше. Все эти задачи возлагаются на специальный модуль, который называется **Блок загрузки и сохранения** (**Load and Store Unit**, **LSU**) @@ -148,9 +148,11 @@ Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `riscv_unit`. +![../.pic/Labs/l8.png](../.pic/Labs/lab_09_lsu_integration.drawio.png) + ## 10. Подсистема прерывания (IC) -![../.pic/Labs/l8.png](../.pic/Labs/l8.png) +![../.pic/Labs/l8.png](../.pic/Labs/lab_10_irq.drawio.png) Одной из основных функций процессоров является возможность реагировать на внешние события (дернуть мышку, нажать кнопку и т.п.), автоматически запуская, при их возникновении, соответствующие программы. В данной лабораторной создается и подсистема прерывания, к которой относятся контроллер прерываний с циклическим опросом и блок регистров статуса и управления. @@ -158,9 +160,11 @@ Вспомогательная лабораторная работа по интеграции реализованной ранее подсистемы прерывания. +![../.pic/Labs/l9.png](../.pic/Labs/lab_11_irq_integration.drawio.png) + ## 12. Периферийные устройства (PU) -![../.pic/Labs/l9.png](../.pic/Labs/l9.png) +![../.pic/Labs/l9.png](../.pic/Labs/lab_12_peripheral_units.drawio.png) В данной лабораторной создаются и подключаются к общей шине и подсистеме прерывания контроллеры периферийных устройств: переключатели, светодиоды, клавиатура, семисегментные дисплеи а так же контроллер uart. @@ -176,4 +180,4 @@ В рамках данной лабораторной работы мы немного упростим процесс передачи программы: вместо записи в ПЗУ, программатор будет записывать её сразу в память инструкций, минуя загрузчик. -![../.pic/Labs/lab_14_programming_device/fig_04.drawio.png](../.pic/Labs/lab_14_programming_device/fig_04.drawio.png) +![../.pic/Labs/lab_14_programming_device/fig_04.drawio.png](../.pic/Labs/lab_14_programming_device.drawio.png)