Files
APS/Labs/07. Datapath/board files
Andrei Solodovnikov a28002e681 WIP: APS cumulative update (#98)
* WIP: APS cumulative update

* Update How FPGA works.md

* Перенос раздела "Последовательностная логика" в отдельный док

* Исправление картинки

* Исправление оформления индексов

* Переработка раздела Vivado Basics

* Добавление картинки в руководство по созданию проекта

* Исправление ссылок в анализе rtl

* Обновление изображения в sequential logic

* Исправление ссылок в bug hunting

* Исправление ссылок

* Рефактор руководства по прошивке ПЛИС

* Mass update

* Update fig_10

* Restore fig_02
2024-09-02 10:20:08 +03:00
..
2024-09-02 10:20:08 +03:00

Проверка работы riscv_unit на ПЛИС

После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС.

Инструкция по реализации прототипа описана здесь.

На рис. 1 представлена схема прототипа в ПЛИС.

../../../.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 битам инструкции.

Если тип операции является легальным в рамках процессорного устройства, реализуемого на лабораторных работах, то отображается соответствующий опкод. Опкоды описаны в decoder_pkg.sv. Если определенный прототипом тип операции является нелегальным, то на семисегментных индикаторах отображается ILL (от illegal).

Соответствие операции ее отображению на семисегментных индикаторах представлено на рис. 2:

'../../../.pic/Labs/board%20files/nexys_riscv_unit_operations.drawio.svg'

Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах.

Демонстрационная программа

В качестве демонстрационной программы, предлагается использовать program.mem. Описание ее работы можно прочитать в разделе #задание.