Перенос drawio-изображений в svg-формат

This commit is contained in:
Andrei Solodovnikov
2024-01-29 15:51:31 +03:00
parent 7208184af8
commit 0ede1572f7
159 changed files with 396 additions and 127 deletions

View File

@@ -96,7 +96,7 @@ _Таблица 1. Регистры контроля и состояния ма
|1110011 | 110 | I | csrrsi rd, csr, rs1 | Чтение и Установка бит CSR| rd = csr, csr = csr \| imm |
|1110011 | 111 | I | csrrci rd, csr, rs1 | Чтение и Очистка бит CSR | rd = csr, csr = csr & ~imm |
_Таблица 2. Список инструкций для работы с регистрами контроля и статуса_
_Таблица 2. Список инструкций для работы с регистрами контроля и статуса._
Для удобства программирования на языке ассемблера RISC-V существуют псевдоинструкции для работы с CS-регистрами.
@@ -105,7 +105,7 @@ _Таблица 2. Список инструкций для работы с ре
| csrr rd, csr | csrrs rd, csr, x0 | Чтение CSR | rd = csr |
| csrw csr, rs1 | csrrw x0, csr, rs1 | Запись CSR | csr = rs1 |
_Таблица 3. Псевдоинструкции для работы с регистрами контроля и статуса_
_Таблица 3. Псевдоинструкции для работы с регистрами контроля и статуса._
Операция логического ИЛИ нулевого регистра с содержимым CS-регистра не меняет его содержимого, поэтому при использовании инструкции `csrr` происходит только операция чтения. Подобным образом реализована псевдоинструкция `csrw`.
@@ -120,7 +120,7 @@ _Таблица 3. Псевдоинструкции для работы с ре
|0x341 | MRW | mepc | Регистр, хранящий адрес перехваченной инструкции. |
|0x342 | MRW | mcause | Причина перехвата |
_Таблица 4. Список регистров, подлежащих реализации в рамках лабораторной работы_
_Таблица 4. Список регистров, подлежащих реализации в рамках лабораторной работы._
По адресу `0x304` должен располагаться регистр, позволяющий маскировать прерывания. Например, если на 5-ом входе системы прерывания генерируется прерывание, то процессор отреагирует на него только в том случае, если 5-ый бит регистра `mie` будет равен 1.
@@ -143,7 +143,7 @@ _Таблица 4. Список регистров, подлежащих реа
![../../.pic/Labs/lab_10_irq/tab_05.png](../../.pic/Labs/lab_10_irq/tab_05.png)
_Таблица 5. Кодирование причины перехвата в регистре `mcause`_
_Таблица 5. Кодирование причины перехвата в регистре `mcause`._
Нас интересуют части, выделенные красным. В первую очередь то, как кодируется старший бит регистра `mcause`. Он зависит от типа причины перехвата (`1` в случае прерывания, `0` в случае исключения). Оставшиеся 31 бит регистра отводятся под коды различных причин. Поскольку мы создаем учебный процессор, который не будет использован в реальной жизни, он не будет поддерживать большую часть прерываний/исключений (таких как невыровненный доступ к памяти, таймеры и т.п.). В рамках данного курса мы должны поддерживать исключение по нелегальной инструкции (код 0x02) и должны уметь поддерживать прерывания периферийных устройств (под которые зарезервированы коды начиная с 16-го). В рамках данной лабораторной работы процессор будет поддерживать только один источник прерывания, поэтому для кодирования причины прерывания нам потребуется только первый код из диапазона _"Designated for platform use"_.
@@ -187,7 +187,7 @@ _Таблица 5. Кодирование причины перехвата в
Контроллер прерываний позволит обрабатывать входящие запросы на прерывания: маски́ровать их, выбирать один запрос из нескольких, а также игнорировать запросы во время обработки текущего прерывания.
![../../.pic/Labs/lab_10_irq/fig_03.drawio.png](../../.pic/Labs/lab_10_irq/fig_03.drawio.png)
![../../.pic/Labs/lab_10_irq/fig_03.drawio.svg](../../.pic/Labs/lab_10_irq/fig_03.drawio.svg)
_Рисунок 3. Место разрабатываемых блоков в структуре процессора._
@@ -197,9 +197,9 @@ _Рисунок 3. Место разрабатываемых блоков в с
Рассмотрим один из возможных вариантов организации блока **Control and Status Registers**. Основная работа по описанию схемы блока состоит в описании мультиплексора и демультиплексора. Мультиплексор подает на выход **read_data_o** значение регистра, который соответствует пришедшему адресу. В свою же очередь, демультиплексор маршрутизирует сигнал разрешения на запись **write_enable_i** (en) на тот же регистр.
![../../.pic/Labs/lab_10_irq/fig_04.drawio.png](../../.pic/Labs/lab_10_irq/fig_04.drawio.png)
![../../.pic/Labs/lab_10_irq/fig_04.drawio.svg](../../.pic/Labs/lab_10_irq/fig_04.drawio.svg)
_Рисунок 4. Структурная схема контроллера CS-регистров_
_Рисунок 4. Структурная схема контроллера CS-регистров._
3-битный вход **opcode_i** определяет операцию, которая будет производиться над содержимым CSR по адресу **addr_i**.
@@ -211,9 +211,9 @@ _Рисунок 4. Структурная схема контроллера CS-
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 5_.
![../../.pic/Labs/lab_10_irq/fig_05.drawio.png](../../.pic/Labs/lab_10_irq/fig_05.drawio.png)
![../../.pic/Labs/lab_10_irq/fig_05.drawio.svg](../../.pic/Labs/lab_10_irq/fig_05.drawio.svg)
_Рисунок 5. Структурная схема контроллера прерываний_
_Рисунок 5. Структурная схема контроллера прерываний._
Контроллер состоит из логики: