From 16e3f5f789ea0dab37edc313356e70a3de048b9d Mon Sep 17 00:00:00 2001 From: Andrei Solodovnikov Date: Thu, 18 Jul 2024 17:50:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=A011.=20=D0=94=D0=BE=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D0=B8=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Labs/11. Interrupt integration/README.md | 33 +++++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/Labs/11. Interrupt integration/README.md b/Labs/11. Interrupt integration/README.md index fb5a77c..fad2af4 100644 --- a/Labs/11. Interrupt integration/README.md +++ b/Labs/11. Interrupt integration/README.md @@ -17,14 +17,39 @@ _Рисунок 2. Схема без выделения новых частей ## Задание -Интегрировать модули `csr_controller` и `irq_controller` в модуль `riscv_core`. +Интегрировать модули `csr_controller` и `irq_controller` в модуль `riscv_core`. При этом у модуля `riscv_core` будет обновленный прототип (поскольку добавился вход `irq_req_i` и `irq_ret_o`): -В случае, если вы захотите расширить количество источников прерывания, вы можете выполнить вспомогательную [лабораторную работу №12](../12.%20Daisy%20chain). +```SystemVerilog +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](../13.%20Peripheral%20units/). + +В случае, если вы захотите расширить количество источников прерывания, вы можете выполнить вспомогательную [ЛР№12](../12.%20Daisy%20chain). ## Порядок выполнения работы 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`, другой конец которого пока не будет ни к чему подключен (в следующей лабораторной это будет изменено). + 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. После интеграции модулей проверьте процессорную систему с помощью [программы](irq_program.mem), текст которой [был представлен](../10.%20Interrupt%20subsystem#пример-обработки-перехвата) в ЛР10 с помощью предоставленного [тестбенча](tb_irq_unit.sv). \ No newline at end of file