mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
Старые названия модулей (#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:
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
@@ -64,13 +64,13 @@
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 15px; margin-left: 871px;">
|
||||
<div data-drawio-colors="color: #007FFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 127, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
nexys_riscv_unit
|
||||
nexys_processor_system
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="970" y="22" fill="#007FFF" font-family="Helvetica" font-size="22px" text-anchor="middle">
|
||||
nexys_riscv_unit
|
||||
nexys_processor_system
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
@@ -189,13 +189,13 @@
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 165px; margin-left: 1411px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
riscv_core
|
||||
processor_core
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="1482" y="172" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">
|
||||
riscv_core
|
||||
processor_core
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
@@ -240,13 +240,13 @@
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 65px; margin-left: 1401px;">
|
||||
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
|
||||
<div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
riscv_unit
|
||||
processor_system
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="1472" y="72" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">
|
||||
riscv_unit
|
||||
processor_system
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
@@ -1,4 +1,4 @@
|
||||
# Проверка работы riscv_unit на ПЛИС
|
||||
# Проверка работы processor_system на ПЛИС
|
||||
|
||||
После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС.
|
||||
|
||||
@@ -6,21 +6,21 @@
|
||||
|
||||
На _рис. 1_ представлена схема прототипа в ПЛИС.
|
||||
|
||||

|
||||

|
||||
|
||||
_Рисунок 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_:
|
||||
|
||||

|
||||

|
||||
|
||||
_Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах._
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
|
||||

|
||||
|
||||
_Рисунок 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. Если память данных вы не инициализировали, можете удалить/закомментировать соответствующий вызов. При необходимости вы можете добавить столько вызовов, сколько вам потребуется.
|
||||
|
@@ -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),
|
||||
|
@@ -148,7 +148,7 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
|
||||
|
||||
## 9 Интеграция блока загрузки и сохранения
|
||||
|
||||
Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `riscv_unit`.
|
||||
Вспомогательная лабораторная работа по интеграции реализованного ранее блока загрузки и сохранения, а также новой памяти данных в модуль `processor_system`.
|
||||
|
||||

|
||||
|
||||
|
Reference in New Issue
Block a user