Лабораторная работа №11 "Интеграция подсистемы прерывания"
После реализации подсистемы прерывания её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль processor_core по схеме, приведённой на рис. 1:
Рисунок 1. Интеграция подсистемы прерываний в ядро процессора.
Схема без выделения новых частей относительно старой версии модуля
Рисунок 2. Схема без выделения новых частей относительно старой версии модуля.
Задание
Интегрировать модули csr_controller и interrupt_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иinterrupt_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). Для этого необходимо сперва самостоятельно рассчитать что именно должна сделать данная инструкция, а потом проверить что процессор сделал именно это.
 
- Перед запуском симуляции убедитесь, что выбран правильный модуль верхнего уровня в 
- Данная лабораторная работа не предполагает проверки в ПЛИС.