Files
APS/Labs/11. Interrupt integration/README.md
2024-07-18 17:50:07 +03:00

4.3 KiB
Raw Blame History

Лабораторная работа 11 "Интеграция подсистемы прерывания"

После реализации подсистемы прерывания, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль riscv_core по схеме, приведенной на рис. 1:

../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg

Рисунок 1. Интеграция подсистемы прерываний в ядро процессора.

Схема без выделения новых частей относительно старой версии модуля

../../.pic/Labs/lab_10_irq/fig_03.drawio.svg

Рисунок 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.

Порядок выполнения работы

  1. Интегрируйте модули csr_controller и irq_controller в модуль riscv_core.
    1. Обратите внимание, что что в модуле riscv_core появились новые входные и выходные сигналы: irq_req_i и irq_ret_o. Эти порты должны быть использованы при подключении riscv_core в модуле riscv_unit.
      1. Ко входу irq_req_i должен быть подключен провод irq_req, другой конец которого пока не будет ни к чему подключен.
      2. К выходу irq_ret_o необходимо подключить провод irq_ret, который также пока не будет использован.
      3. Имена проводов irq_req и irq_ret должны быть именно такими, т.к. используются верификационным окружением при проверке данной лабораторной работы.
    2. Обратите внимание на то, что появилась константа imm_Z — это единственная константа ядра, которая расширяется нулями, а не знаковым битом.
  2. После интеграции модулей проверьте процессорную систему с помощью программы, текст которой был представлен в ЛР10 с помощью предоставленного тестбенча.