mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР10-11. Добавлена методичка по прерываниям
This commit is contained in:
31
Labs/11. Interrupt integration/README.md
Normal file
31
Labs/11. Interrupt integration/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Лабораторная работа 11 "Интеграция подсистемы прерываний"
|
||||
|
||||
После реализации подсистемы прерываний, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль `riscv_core` по приведенной ниже схеме:
|
||||
|
||||

|
||||
|
||||
<details>
|
||||
<summary>Схема выделения новых частей относительно старой версии модуля</summary>
|
||||
|
||||

|
||||
|
||||
</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 с помощью предоставленного тестбенча.
|
Reference in New Issue
Block a user