-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Feat(06/board):Переписывание sv модуля * Ref(06/board/top.sv):Изм-ие положения модулей * Fix(06/board):Испр-ие синхронного сброса * Feat(pic/06/board/struct):Доб-ие схемы * Ref(06/board/top.sv):Доб-ие обработки всего opcode * Feat(pic/04/board/op):Доб-ие пикчи * Ref(pic/06/board/op):Обн-ие названий * Feat(06/board/md):Обн-ие md * Feat(06/board/md):Доб-ие инфы про инстр с памятью * Ref(06/board/md):Изм-ие формулирвки для PC
- Loading branch information
Showing
5 changed files
with
389 additions
and
162 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,46 @@ | ||
# Проверка работы riscv_unit на ПЛИС | ||
|
||
Если вы не понимаете, что лежит в этой папке, или если надо вспомнить, как прошить ПЛИС, можно воспользоваться [`этой инструкцией`](../../../Vivado%20Basics/Program%20nexys%20a7.md) | ||
После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС. | ||
|
||
Файл [`nexys_riscv_unit.sv`](nexys_riscv_unit.sv), который нужно запускать с [`демонстрационным файлом инструкций`](../program.mem), является демонстрацией работы вашего ядра, каждое нажатие на BTND формирует тактовый импульс, впоследствии пошагово переходя по инструкциям, которые в свою очередь отображаются на семисегментных индикаторах. | ||
Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md). | ||
|
||
На _рис. 1_ представлена схема прототипа в ПЛИС. | ||
|
||
![../../../.pic/Labs/board%20files/nexys_riscv_unit_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_riscv_unit_structure.drawio.svg) | ||
|
||
_Рисунок 1. Структурная схема модуля `nexys_riscv_unit`._ | ||
|
||
Прототип позволяет потактово исполнять программу, прошитую в память инструкций. Также прототип отображает операцию исполняемую в данный момент. | ||
|
||
> [!NOTE] | ||
> Объект модуля `riscv_core` в модуле `riscv_unit` **должен** называться `core`. Т.е. строка создания сущности модуля должна выглядеть следующим образом: `riscv_core core(...)`. | ||
## Описание используемой периферии | ||
|
||
- ### Кнопки | ||
|
||
- `BTND` — при нажатии создает тактовый импульс, поступающий на порт тактирования `clk_i` модуля дизайна. Стоит помнить то, что инструкции, работающие с внешней памятью, требуют несколько тактов для своего выполнения. | ||
- `CPU_RESET` — соединен со входом `rst_i` модуля дизайна. Поскольку в модуле `riscv_unit` используется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуля `riscv_unit` и вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования. | ||
|
||
- ### Семисегментные индикаторы | ||
|
||
Семисегментные индикаторы разбиты на 2 блока (см. _рис. 1_): | ||
|
||
- `PC` — отображают в виде шестнадцатеричного числа младшие 16 бит программного счетчика, которые вычисляются на основе выхода `instr_addr_o` модуля процессорного ядра. | ||
- `operation` — отображают [операцию](#операции-отображаемые-прототипом), исполняемую процессором на текущем такте. | ||
|
||
## Операции, отображаемые прототипом | ||
|
||
Прототип определяет тип операции по младшим 7 битам инструкции. | ||
|
||
Если тип операции является легальным в рамках процессорного устройства, реализуемого на лабораторных работах, то отображается соответствующий опкод. Опкоды описаны в [riscv_pkg.sv](../../05.%20Main%20decoder/riscv_pkg.sv). Если определенный прототипом тип операции является нелегальным, то на семисегментных индикаторах отображается `ILL` (от **ill**egal). | ||
|
||
Соответствие операции ее отображению на семисегментных индикаторах представлено на _рис. 2_: | ||
|
||
!['../../../.pic/Labs/board%20files/nexys_riscv_unit_operations.drawio.svg'](../../../.pic/Labs/board%20files/nexys_riscv_unit_operations.drawio.svg) | ||
|
||
_Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах._ | ||
|
||
## Демонстрационная программа | ||
|
||
В качестве демонстрационной программы, предлагается использовать [program.mem](../program.mem). Описание ее работы можно прочитать в разделе [#задание](../README.md#задание). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.