Лабораторная работа 11 "Интеграция подсистемы прерывания"
После реализации подсистемы прерывания, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль riscv_core по схеме, приведенной на рис. 1:
Рисунок 1. Интеграция подсистемы прерываний в ядро процессора.
Схема без выделения новых частей относительно старой версии модуля
Рисунок 2. Схема без выделения новых частей относительно старой версии модуля.
Задание
Интегрировать модули csr_controller и irq_controller в модуль riscv_core. При этом у модуля riscv_core будет обновленный прототип (поскольку добавился вход irq_req_i и irq_ret_o):
module riscv_core (
input logic clk_i,
input logic rst_i,
input logic stall_i,
input logic [31:0] instr_i,
input logic [31:0] mem_rd_i,
input logic irq_req_i,
output logic [31:0] instr_addr_o,
output logic [31:0] mem_addr_o,
output logic [ 2:0] mem_size_o,
output logic mem_req_o,
output logic mem_we_o,
output logic [31:0] mem_wd_o,
output logic irq_ret_o
);
Обновите описание создания модуля riscv_core в модуле riscv_unit с учетом появившихся портов. Для этого создайте провода irq_req и irq_ret и подключите их к соответствующим входам riscv_core. Другим концом эти провода не будут пока что ни к чему подключены — это изменится в ЛР№13.
В случае, если вы захотите расширить количество источников прерывания, вы можете выполнить вспомогательную ЛР№12.
Порядок выполнения работы
- Интегрируйте модули
csr_controllerиirq_controllerв модульriscv_core.- Обратите внимание, что что в модуле
riscv_coreпоявились новые входные и выходные сигналы:irq_req_iиirq_ret_o. Эти порты должны быть использованы при подключенииriscv_coreв модулеriscv_unit.- Ко входу
irq_req_iдолжен быть подключен проводirq_req, другой конец которого пока не будет ни к чему подключен. - К выходу
irq_ret_oнеобходимо подключить проводirq_ret, который также пока не будет использован. - Имена проводов
irq_reqиirq_retдолжны быть именно такими, т.к. используются верификационным окружением при проверке данной лабораторной работы.
- Ко входу
- Обратите внимание на то, что появилась константа
imm_Z— это единственная константа ядра, которая расширяется нулями, а не знаковым битом.
- Обратите внимание, что что в модуле
- После интеграции модулей проверьте процессорную систему с помощью программы, текст которой был представлен в ЛР10 с помощью предоставленного тестбенча.