mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР10. Исправление описки
This commit is contained in:
committed by
GitHub
parent
228cb0cb48
commit
4ab28745d0
@@ -109,7 +109,7 @@ _Таблица 2. Список регистров, подлежащих реа
|
||||
|
||||
_Таблица 3. Кодирование причины прерывания в регистре `mcause`_
|
||||
|
||||
Нас интересуют части, выделенные красным. В первую очередь то как кодируется старший бит регистра `mcause`. Он зависит от типа причины перехвата (`1` в случае прерывания, `0` в случае исключения). Оставшиеся 31 бит регистра отводятся под коды различных причин. Поскольку мы создаем учебный процессор, который не будет использован в реальной жизни, он не будет поддерживать большую часть прерываний/исключений (таких как невыровненный доступ к памяти, таймеры и т.п.). В рамках данного курса мы должны поддерживать исключение по нелегальной инструкции (код 0x02) и должны уметь поддерживать прерывания периферийных устройств (под которые зарезервированы коды начиная с 16-го). Для кодирования причины прерывания нам потребуется 16 разрядов в регистре `mcause`. Поскольку мы можем использовать коды начиная со значения 16, мы не будем использовать 4 младших бита, вместо этого взяв разместив код причины прерывания в `mcause[19:4]`.
|
||||
Нас интересуют части, выделенные красным. В первую очередь то как кодируется старший бит регистра `mcause`. Он зависит от типа причины перехвата (`1` в случае прерывания, `0` в случае исключения). Оставшиеся 31 бит регистра отводятся под коды различных причин. Поскольку мы создаем учебный процессор, который не будет использован в реальной жизни, он не будет поддерживать большую часть прерываний/исключений (таких как невыровненный доступ к памяти, таймеры и т.п.). В рамках данного курса мы должны поддерживать исключение по нелегальной инструкции (код 0x02) и должны уметь поддерживать прерывания периферийных устройств (под которые зарезервированы коды начиная с 16-го). Для кодирования причины прерывания нам потребуется 16 разрядов в регистре `mcause`. Поскольку мы можем использовать коды начиная со значения 16, мы не будем использовать 4 младших бита, вместо этого разместив код причины прерывания в `mcause[19:4]`.
|
||||
|
||||
Таким образом: в случае если произошло исключение (в связи с нелегальной инструкцией), значение `mcause` должно быть `0x00000002`. Если произошло прерывание, значение `mcause` должно быть `{1'b1, 11'd0, irq_cause, 4'd0}`.
|
||||
|
||||
|
Reference in New Issue
Block a user