diff --git a/.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg b/.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg index 49e0295..3f135d2 100644 --- a/.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg +++ b/.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg @@ -1,865 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - mret - - - _i - - -
-
-
-
- - mret_i - -
-
- - - - -
-
-
- irq_req_i -
-
-
-
- - irq_req_i - -
-
- - - - -
-
-
- - - mie - - - _i - - -
-
-
-
- - mie_i - -
-
- - - - -
-
-
- - - exception - - - - - _i - - -
-
-
-
- - exception_i - -
-
- - - - - - -
-
-
- - - irq_o - - -
-
-
-
- - irq_o - -
-
- - - - - -
-
-
- - - irq_ret - - - - - _o - - -
-
-
-
- - irq_ret_o - -
-
- - - - - -
-
-
- - - irq_cause - - - - - _o - - -
-
-
-
- - irq_cause_o - -
-
- - - - -
-
-
- Daisy -
- chain -
-
-
-
- - Daisy... - -
-
- - - - -
-
-
- - - 16 -
-
-
-
-
-
-
- - 16 - -
-
- - - - -
-
-
- - - 16 -
-
-
-
-
-
-
- - 16 - -
-
- - - - - -
-
-
- - - masked_irq_i - - -
-
-
-
- - masked_irq_i - -
-
- - - - -
-
-
- - - ready - - - _i - - -
-
-
-
- - ready_i - -
-
- - - - -
-
-
- - - irq_ret_i - - -
-
-
-
- - irq_ret_i - -
-
- - - - -
-
-
- - - irq_o - - -
-
-
-
- - irq_o - -
-
- - - - -
-
-
- - - irq_ret_o - - -
-
-
-
- - irq_ret_o - -
-
- - - - -
-
-
- - - irq_cause_o - - -
-
-
-
- - irq_caus... - -
-
- - - - -
-
-
- - - rst_i - - -
-
-
-
- - rst_i - -
-
- - - - - - -
-
-
- - - clk - - - - - _i - - -
-
-
-
- - clk_i - -
-
- - - - -
-
-
- - - rst - - - - - _i - - -
-
-
-
- - rst_i - -
-
- - - - - -
-
-
- - irq_h - -
-
-
-
- - irq_h - -
-
- - - - - -
-
-
- D -
-
-
-
- - D - -
-
- - - - -
-
-
- Q -
-
-
-
- - Q - -
-
- - - - -
-
-
- RST -
-
-
-
- - RST - -
-
- - - - - - - - - - - - -
-
-
- reset -
-
-
-
- - reset - -
-
- - - - -
-
-
- set -
-
-
-
- - set - -
-
- - - - - -
-
-
- - - clk - - - - - _i - - -
-
-
-
- - clk_i - -
-
- - - - - -
-
-
- - - rst - - - - - _i - - -
-
-
-
- - rst_i - -
-
- - - - - - - - - - -
-
-
- - exc_h - -
-
-
-
- - exc_h - -
-
- - - - - -
-
-
- D -
-
-
-
- - D - -
-
- - - - -
-
-
- Q -
-
-
-
- - Q - -
-
- - - - -
-
-
- RST -
-
-
-
- - RST - -
-
- - - - - - - - - - - - -
-
-
- reset -
-
-
-
- - reset - -
-
- - - - -
-
-
- set -
-
-
-
- - set - -
-
- - - - - -
-
-
- - - clk - - - - - _i - - -
-
-
-
- - clk_i - -
-
- - - - - -
-
-
- - - rst - - - - - _i - - -
-
-
-
- - rst_i - -
-
- - - - - - - - - - - - - - - -
-
-
- - - 16 -
-
-
-
-
-
-
- - 16 - -
-
- - - - - -
-
-
- - - 32 -
-
-
-
-
-
-
- - 32 - -
-
- - -
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file + + + +
mret_i
irq_req_i
mie_i
exception_i
irq_o
irq_ret_o
irq_cause_o
Daisy
chain
16
16
masked_irq_i
ready_i
irq_ret_i
irq_o
irq_ret_o
irq_cause_o
rst_i
clk_i
rst_i
irq_h
D
Q
RST
reset
set
clk_i
rst_i
exc_h
D
Q
RST
reset
set
clk_i
rst_i
16
32
16
\ No newline at end of file diff --git a/ERRATA.md b/ERRATA.md index c1a13f7..87de8e7 100644 --- a/ERRATA.md +++ b/ERRATA.md @@ -2,6 +2,24 @@ ![http://95.215.8.74:5000/days_since_last_commit.png](http://95.215.8.74:5000/days_since_last_commit.png) +**22.05.2025**: Исправлено несоответствие в названиях модулей в ЛР10-12. + +- `irq_controller` следует читать как `interrupt_controller`; +- `processor_unit` следует читать как `processor_system`. + +В рисунке II.12-3 добавлена разрядность сигнала `irq_ret_o` (должна быть 16 бит). + +
+ Обновлённый рисунок + +![.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg](.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg) + +_Рисунок II.8-3. Структурная схема блока приоритетных прерываний._ + +
+ +--- + **13.05.2025**: Исправлен рисунок II.8-3 — исправлена опечатка в названии нижнего сигнала (`mem_wd_i` → `mem_wd_o`).
diff --git a/Labs/11. Interrupt integration/README.md b/Labs/11. Interrupt integration/README.md index 716ed0d..d277ffc 100644 --- a/Labs/11. Interrupt integration/README.md +++ b/Labs/11. Interrupt integration/README.md @@ -17,7 +17,7 @@ _Рисунок 2. Схема без выделения новых частей ## Задание -Интегрировать модули `csr_controller` и `irq_controller` в модуль `processor_core`. При этом у модуля `processor_core` будет обновлённый прототип (поскольку добавился вход `irq_req_i` и `irq_ret_o`): +Интегрировать модули `csr_controller` и `interrupt_controller` в модуль `processor_core`. При этом у модуля `processor_core` будет обновлённый прототип (поскольку добавился вход `irq_req_i` и `irq_ret_o`): ```Verilog module processor_core ( @@ -46,7 +46,7 @@ module processor_core ( ## Порядок выполнения работы 1. Замените файл `program.mem` в `Design Sources` проекта новым файлом [program.mem](program.mem), приложенном в данной лабораторной работе. Данный файл содержит программу из _листинга 1_ ЛР№10. -2. Интегрируйте модули `csr_controller` и `irq_controller` в модуль `processor_core`. +2. Интегрируйте модули `csr_controller` и `interrupt_controller` в модуль `processor_core`. 1. Обратите внимание, что что в модуле `processor_core` появились новые входные и выходные сигналы: `irq_req_i` и `irq_ret_o`. Эти порты должны быть использованы при подключении `processor_core` в модуле `processor_system`. 1. Ко входу `irq_req_i` должен быть подключён провод `irq_req`, другой конец которого пока не будет ни к чему подключён. 2. К выходу `irq_ret_o` необходимо подключить провод `irq_ret`, который также пока не будет использован. diff --git a/Labs/12. Daisy chain/README.md b/Labs/12. Daisy chain/README.md index 89849ed..7dcd803 100644 --- a/Labs/12. Daisy chain/README.md +++ b/Labs/12. Daisy chain/README.md @@ -69,8 +69,8 @@ _Рисунок 2. Структурная схема блока приорите ## Задание - Реализовать модуль `daisy_chain`. -- Интегрировать `daisy_chain` в модуль `irq_controller` по схеме, представленной на _рис. 3_. -- Отразить изменения в прототипе сигнала `irq_controller` в модулях `riscv_core` и `riscv_unit`. +- Интегрировать `daisy_chain` в модуль `interrupt_controller` по схеме, представленной на _рис. 3_. +- Отразить изменения в прототипе сигнала `interrupt_controller` в модулях `processor_core` и `processor_system`. ![../../.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg](../../.pic/Labs/lab_12_daisy_chain/fig_03.drawio.svg) @@ -86,8 +86,8 @@ _Рисунок 3. Структурная схема блока приорите 2. Формирование нижнего массива элементов И можно сделать с помощью одного непрерывного присваивания посредством операции побитовое И. 2. Проверьте модуль `daisy_chain` с помощью верификационного окружения, представленного в файле [`lab_12.tb_daisy_chain`](lab_12.tb_daisy_chain.sv). В случае, если в TCL-консоли появились сообщения об ошибках, вам необходимо [найти](../../Vivado%20Basics/05.%20Bug%20hunting.md) и исправить их. 1. Перед запуском моделирования, убедитесь, что у вас выбран корректный модуль верхнего уровня в `Simulation Sources`. -3. Интегрируйте модуль `daisy_chain` в модуль `irq_controller` по схеме, представленной на _рис. 3_. - 1. Не забудьте обновить разрядность сигналов `irq_req_i`, `mie_i`, `irq_ret_o` в модуле `irq_controller`. +3. Интегрируйте модуль `daisy_chain` в модуль `interrupt_controller` по схеме, представленной на _рис. 3_. + 1. Не забудьте обновить разрядность сигналов `irq_req_i`, `mie_i`, `irq_ret_o` в модуле `interrupt_controller`. 2. Также не забудьте обновить разрядность сигналов `irq_req_i`, `irq_ret_o` в модулях `processor_core` и `processor_system`. - 3. Кроме того, теперь вам нужно использовать старшие 16 бит сигнала `mie` вместо одного при подключении модуля `irq_controller` в модуле `processor_core`. + 3. Кроме того, теперь вам нужно использовать старшие 16 бит сигнала `mie` вместо одного при подключении модуля `interrupt_controller` в модуле `processor_core`. 4. Проверьте с помощью верификационного окружения из ЛР№11, что в процессе интеграции ничего не сломалось.