4.3 KiB
Лабораторная работа 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 с помощью предоставленного тестбенча.