From 4ab28745d01a5ba03c32bc6e15a57fa3552009e5 Mon Sep 17 00:00:00 2001 From: Andrei Solodovnikov Date: Wed, 1 Nov 2023 16:19:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=A010.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Labs/10. Interrupt subsystem/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Labs/10. Interrupt subsystem/README.md b/Labs/10. Interrupt subsystem/README.md index ff214eb..dc1d798 100644 --- a/Labs/10. Interrupt subsystem/README.md +++ b/Labs/10. Interrupt subsystem/README.md @@ -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}`.