* Старые названия модулей Старые названия у модулей riscv_core (processor_core) и riscv_unit (processor_system) в Labs/07. Datapath/board files/README.md * Чистка старых названий модулей --------- Co-authored-by: Andrei Solodovnikov <voultboy@yandex.ru>
Проверка работы processor_system на ПЛИС
После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 1 представлена схема прототипа в ПЛИС.
Рисунок 1. Структурная схема модуля nexys_processor_system
.
Прототип позволяет потактово исполнять программу, прошитую в память инструкций. Также прототип отображает операцию исполняемую в данный момент.
Note
Объект модуля
processor_core
в модулеprocessor_system
должен называтьсяcore
. Т.е. строка создания сущности модуля должна выглядеть следующим образом:processor_core core(...)
.
Описание используемой периферии
-
Кнопки
BTND
— при нажатии создает тактовый импульс, поступающий на порт тактированияclk_i
модуля дизайна. Стоит помнить то, что инструкции, работающие с внешней памятью, требуют несколько тактов для своего выполнения.CPU_RESET
— соединен со входомrst_i
модуля дизайна. Поскольку в модулеprocessor_system
используется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуляprocessor_system
и вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования.
-
Семисегментные индикаторы
Семисегментные индикаторы разбиты на 2 блока (см. рис. 1):
PC
— отображают в виде шестнадцатеричного числа младшие 16 бит программного счетчика, которые вычисляются на основе выходаinstr_addr_o
модуля процессорного ядра.operation
— отображают операцию, исполняемую процессором на текущем такте.
Операции, отображаемые прототипом
Прототип определяет тип операции по младшим 7 битам инструкции.
Если тип операции является легальным в рамках процессорного устройства, реализуемого на лабораторных работах, то отображается соответствующий опкод. Опкоды описаны в decoder_pkg.sv. Если определенный прототипом тип операции является нелегальным, то на семисегментных индикаторах отображается ILL
(от illegal).
Соответствие операции ее отображению на семисегментных индикаторах представлено на рис. 2:
Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах.
Демонстрационная программа
В качестве демонстрационной программы, предлагается использовать program.mem. Описание ее работы можно прочитать в разделе #задание.