Старые названия модулей (#116)

* Старые названия модулей

Старые названия у модулей riscv_core (processor_core) и riscv_unit (processor_system) в Labs/07. Datapath/board files/README.md

* Чистка старых названий модулей

---------

Co-authored-by: Andrei Solodovnikov <voultboy@yandex.ru>
This commit is contained in:
markast555
2025-06-07 01:08:13 +03:00
committed by GitHub
parent 5f357fdd7e
commit af6c6134cc
7 changed files with 19 additions and 19 deletions

View File

@@ -1,4 +1,4 @@
# Проверка работы riscv_unit на ПЛИС
# Проверка работы processor_system на ПЛИС
После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС.
@@ -6,21 +6,21 @@
На _рис. 1_ представлена схема прототипа в ПЛИС.
![../../../.pic/Labs/board%20files/nexys_riscv_unit_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_riscv_unit_structure.drawio.svg)
![../../../.pic/Labs/board%20files/nexys_processor_system_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_processor_system_structure.drawio.svg)
_Рисунок 1. Структурная схема модуля `nexys_riscv_unit`._
_Рисунок 1. Структурная схема модуля `nexys_processor_system`._
Прототип позволяет потактово исполнять программу, прошитую в память инструкций. Также прототип отображает операцию исполняемую в данный момент.
> [!NOTE]
> Объект модуля `riscv_core` в модуле `riscv_unit` **должен** называться `core`. Т.е. строка создания сущности модуля должна выглядеть следующим образом: `riscv_core core(...)`.
> Объект модуля `processor_core` в модуле `processor_system` **должен** называться `core`. Т.е. строка создания сущности модуля должна выглядеть следующим образом: `processor_core core(...)`.
## Описание используемой периферии
- ### Кнопки
- `BTND` — при нажатии создает тактовый импульс, поступающий на порт тактирования `clk_i` модуля дизайна. Стоит помнить то, что инструкции, работающие с внешней памятью, требуют несколько тактов для своего выполнения.
- `CPU_RESET` — соединен со входом `rst_i` модуля дизайна. Поскольку в модуле `riscv_unit` используется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуля `riscv_unit` и вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования.
- `CPU_RESET` — соединен со входом `rst_i` модуля дизайна. Поскольку в модуле `processor_system` используется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуля `processor_system` и вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования.
- ### Семисегментные индикаторы
@@ -37,7 +37,7 @@ _Рисунок 1. Структурная схема модуля `nexys_riscv_u
Соответствие операции ее отображению на семисегментных индикаторах представлено на _рис. 2_:
!['../../../.pic/Labs/board%20files/nexys_riscv_unit_operations.drawio.svg'](../../../.pic/Labs/board%20files/nexys_riscv_unit_operations.drawio.svg)
!['../../../.pic/Labs/board%20files/nexys_processor_system_operations.drawio.svg'](../../../.pic/Labs/board%20files/nexys_processor_system_operations.drawio.svg)
_Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах._

View File

@@ -64,7 +64,7 @@ typedef struct {
logic dp;
} Semseg;
module nexys_riscv_unit(
module nexys_processor_system(
input logic clk_i,
input logic arstn_i,
input logic btnd_i,

View File

@@ -12,7 +12,7 @@
2. Изучить информацию о конечных автоматах и способах их реализации ([#практика](#практика))
3. Описать перезаписываемую память инструкций ([#память инструкций](#перезаписываемая-память-инструкций))
4. Описать и проверить модуль программатора ([#программатор](#программатор))
5. Интегрировать программатор в процессорную систему и проверить её ([#интеграция](#интеграция-программатора-в-riscv_unit))
5. Интегрировать программатор в процессорную систему и проверить её ([#интеграция](#интеграция-программатора-в-processor_system))
6. Проверить работу системы в ПЛИС с помощью предоставленного скрипта, инициализирующего память системы ([#проверка](#%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B))
## Теория
@@ -517,11 +517,11 @@ _Листинг 5. Готовая часть программатора._
> Так как вышесказанное по сути является полным описанием работы программатора на русском языке, то фактически **задача сводится к переводу** текста описания программатора **с русского на SystemVerilog**.
### Интеграция программатора в riscv_unit
### Интеграция программатора в processor_system
![../../.pic/Labs/lab_15_programming_device/fig_04.drawio.svg](../../.pic/Labs/lab_15_programming_device/fig_04.drawio.svg)
_Рисунок 4. Интеграция программатора в `riscv_unit`._
_Рисунок 4. Интеграция программатора в `processor_system`._
В первую очередь, необходимо заменить память инструкций и добавить новый модуль. После чего подключить программатор к памяти инструкций и мультиплексировать выход интерфейса памяти данных программатора с интерфейсом памяти данных LSU. Сигнал сброса процессора необходимо заменить на выход `core_reset_o`.
@@ -580,7 +580,7 @@ _Листинг 6. Пример использования скрипта для
2. Добавьте в модуль `processor_system` экземпляр модуля-программатора.
1. Интерфейс памяти инструкций подключается к порту записи модуля `rw_instr_mem`.
2. Интерфейс памяти данных мультиплексируется с интерфейсом памяти данных модуля `LSU`.
3. Замените сигнал сброса модуля `riscv_core` сигналом `core_reset_o`.
3. Замените сигнал сброса модуля `processor_core` сигналом `core_reset_o`.
4. В случае если у вас есть периферийное устройство `uart_tx` его выход `tx_o` необходимо мультиплексировать с выходом `tx_o` программатора аналогично тому, как был мультиплексирован интерфейс памяти данных.
6. Проверьте процессорную систему после интеграции программатора с помощью верификационного окружения, представленного в файле [`lab_15.tb_processor_system.sv`](lab_15.tb_processor_system.sv).
1. Данный тестбенч необходимо обновить под свой вариант. Найдите строки со вспомогательным вызовом `program_region`, первыми аргументами которого являются "YOUR_INSTR_MEM_FILE" и "YOUR_DATA_MEM_FILE". Обновите эти строки под имена файлов, которыми вы инициализировали свои память инструкций и данных в ЛР№13. Если память данных вы не инициализировали, можете удалить/закомментировать соответствующий вызов. При необходимости вы можете добавить столько вызовов, сколько вам потребуется.

View File

@@ -59,7 +59,7 @@ module lab_16_tb_coremark();
end
initial #500ms $finish();
riscv_unit DUT(
processor_system DUT(
.clk_i (clk100mhz_i),
.resetn_i (aresetn_i),
.rx_i (rx_i),

View File

@@ -148,7 +148,7 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
## 9 Интеграция блока загрузки и сохранения
Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `riscv_unit`.
Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `processor_system`.
![../.pic/Labs/lab_09_lsu_integration.drawio.svg](../.pic/Labs/lab_09_lsu_integration.drawio.svg)