ЛР10-11. Добавлена методичка по прерываниям

This commit is contained in:
Andrei Solodovnikov
2023-09-14 13:29:28 +03:00
parent e266b76927
commit 3769cdb972
10 changed files with 371 additions and 11 deletions

View File

@@ -0,0 +1,31 @@
# Лабораторная работа 11 "Интеграция подсистемы прерываний"
После реализации подсистемы прерываний, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль `riscv_core` по приведенной ниже схеме:
![../../.pic/Labs/lab_08_lsu/fig_01.drawio.png](../../.pic/Labs/lab_10_irq/fig_02.drawio.png)
<details>
<summary>Схема выделения новых частей относительно старой версии модуля</summary>
![../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.png](../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.png)
</details>
## Задание
Интегрировать модули `csr_controller` и `irq_controller` в модуль `riscv_core`.
## Порядок выполнения работы
1. Интегрируйте модули `csr_controller` и `irq_controller` в модуль `riscv_core`.
1. Обратите внимание, что что в модуле `riscv_core` появились новые входные и выходные сигналы. Эти сигналы должны быть подключены и в модуле `riscv_unit` (просто в виде проводов, которые с другой стороны не подключены ни к чему, в следующей лабораторной мы найдем им применение).
2. Большой мультиплексор на схеме, определяющий записываемое в `PC` значение является мультиплексором с приоритетами (в первую очередь проверяется сигнал `trap`, затем, если он равен нулю, проверяется сигнал `mret`, и только если оба предыдущих равны нулю выдается значение `default`). Такой мультиплексор можно описать как на цепочке выражений `if-else-if`, так и с помощью выражения `case` в качестве управляющего сигнала которого подана единица, а выбор осуществляется не по значениям, а по сигналам:
```SystemVerilog
case(1'b1)
a: ...
b: ...
c: ...
```
2. После интеграции модулей, проверьте процессорную систему с помощью программы из ЛР10 с помощью предоставленного тестбенча.