Лабораторная работа №11 "Интеграция подсистемы прерывания"
После реализации подсистемы прерывания, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль processor_core
по схеме, приведённой на рис. 1:
Рисунок 1. Интеграция подсистемы прерываний в ядро процессора.
Схема без выделения новых частей относительно старой версии модуля
Рисунок 2. Схема без выделения новых частей относительно старой версии модуля.
Задание
Интегрировать модули csr_controller
и irq_controller
в модуль processor_core
. При этом у модуля processor_core
будет обновлённый прототип (поскольку добавился вход irq_req_i
и irq_ret_o
):
module processor_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
);
Обновите описание создания модуля processor_core
в модуле processor_system
с учётом появившихся портов. Для этого создайте провода irq_req
и irq_ret
и подключите их к соответствующим входам processor_core
. Другим концом эти провода не будут пока что ни к чему подключены — это изменится в ЛР№13.
В случае, если вы захотите расширить количество источников прерывания, вы можете выполнить вспомогательную ЛР№12.
Порядок выполнения работы
- Замените файл
program.mem
вDesign Sources
проекта новым файлом program.mem, приложенном в данной лабораторной работе. Данный файл содержит программу из листинга 1 ЛР№10. - Интегрируйте модули
csr_controller
иirq_controller
в модульprocessor_core
.- Обратите внимание, что что в модуле
processor_core
появились новые входные и выходные сигналы:irq_req_i
иirq_ret_o
. Эти порты должны быть использованы при подключенииprocessor_core
в модулеprocessor_system
.- Ко входу
irq_req_i
должен быть подключён проводirq_req
, другой конец которого пока не будет ни к чему подключён. - К выходу
irq_ret_o
необходимо подключить проводirq_ret
, который также пока не будет использован. - Имена проводов
irq_req
иirq_ret
должны быть именно такими, т.к. используются верификационным окружением при проверке данной лабораторной работы.
- Ко входу
- Обратите внимание на то, что появилась константа
imm_Z
— это единственная константа ядра, которая расширяется нулями, а не знаковым битом.
- Обратите внимание, что что в модуле
- Проверьте модуль с помощью верификационного окружения, представленного в файле lab_11.tb_processor_system.sv.
- Перед запуском симуляции убедитесь, что выбран правильный модуль верхнего уровня в
Simulation Sources
. - Как и в случае с проверкой процессора архитектуры CYBERcobra, вам не будет сказано пройден тест или нет. Вам необходимо самостоятельно, такт за тактом проверить что процессор правильно выполняет описанные в Листинге 1 ЛР№10 инструкции (см. порядок выполнения задания ЛР№4). Для этого, необходимо сперва самостоятельно рассчитать что именно должна сделать данная инструкция, а потом проверить что процессор сделал именно это.
- Перед запуском симуляции убедитесь, что выбран правильный модуль верхнего уровня в
- Данная лабораторная работа не предполагает проверки в ПЛИС.