mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
ЛР11. Дополнение методички
This commit is contained in:
@@ -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).
|
Reference in New Issue
Block a user