ЛР10. Переименование рисунков и небольшие предложения по тексту

This commit is contained in:
Vladislav
2023-11-28 10:54:47 +03:00
committed by GitHub
parent 9aa5fcdc7a
commit 6017513b7a

View File

@@ -179,7 +179,7 @@ _Таблица 5. Кодирование причины перехвата в
## Структура разрабатываемых устройств
В рамках лабораторной работы необходимо реализовать поддержку обработки аппаратных прерываний. Для этого необходимо реализовать для два аппаратных блока: блок управления регистрами контроля и статуса (**CSR-контроллер**) и контроллер прерываний **(Interrupt Controller)**.
В рамках лабораторной работы необходимо реализовать поддержку обработки аппаратных прерываний. Для этого необходимо реализовать два аппаратных блока: блок управления регистрами контроля и статуса (**CSR-контроллер**) и контроллер прерываний **(Interrupt Controller)**.
Блок управления регистрами контроля и статуса позволяет добавить особые **архитектурные регистры**, которые будут использоваться нами при обработке прерываний и исключений.
@@ -187,17 +187,17 @@ _Таблица 5. Кодирование причины перехвата в
![../../.pic/Labs/lab_10_irq/fig_03.drawio.png](../../.pic/Labs/lab_10_irq/fig_03.drawio.png)
_Рисунок 2. Место разрабатываемых блоков в структуре процессора._
_Рисунок 3. Место разрабатываемых блоков в структуре процессора._
Пока что вам нужно реализовать только блоки **irq controller** и **control status registers**, а не саму схему, приведенную выше.
### CSR-контроллер
Рассмотрим один из возможных вариантов организации блока **Control and Status Registers**. Основную часть схемы занимают мультиплексор, подающий на выход **read_data_o** значение регистра, соответствующего пришедшему адресу, и демультиплексор маршрутизирующий сигнал разрешения на запись **write_enable_i** (en) на тот же регистр.
Рассмотрим один из возможных вариантов организации блока **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)
_Рисунок 3. Структурная схема контроллера CS-регистров_
_Рисунок 4. Структурная схема контроллера CS-регистров_
3-битный вход **opcode_i** определяет операцию, которая будет производиться над содержимым CSR по адресу **addr_i**.
@@ -207,20 +207,18 @@ _Рисунок 3. Структурная схема контроллера CS-
### Контроллер прерываний
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 4_.
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 5_.
![../../.pic/Labs/lab_10_irq/fig_05.drawio.png](../../.pic/Labs/lab_10_irq/fig_05.drawio.png)
_Рисунок 4. Структурная схема контроллера прерываний_
_Рисунок 5. Структурная схема контроллера прерываний_
Несмотря на простоту схемы, данный контроллер состоит из:
Несмотря на простоту схемы, данный контроллер состоит из логики:
- логики обработки вложенных прерываний, частью которой являются регистры отслеживания обработки прерывания и исключения (`irq_h` и `exc_h` соответственно),
- логики установки и сброса этих регистров (которая вместе с этими регистрами заключена в штрихованные прямоугольники),
- логики приоритета исключений над прерываниями,
- а так же логики маскирования запросов на прерывание.
Разберем каждую из этих частей.
- обработки вложенных прерываний, частью которой являются регистры отслеживания обработки прерывания и исключения (`irq_h` и `exc_h` соответственно),
- установки и сброса этих регистров (которая вместе с этими регистрами заключена в штрихованные прямоугольники),
- приоритета исключений над прерываниями,
- маскирования запросов на прерывание.
Регистры отслеживания обработки прерывания и исключения нужны для того, чтобы мы могли понимать, что в данный момент процессор уже выполняет обработку прерывания / исключения. В такие моменты (если любой из регистров `exc_h`/`irq_h` содержит значение `1`) все последующие запросы на прерывание игнорируются. За это отвечают вентили И и ИЛИ-НЕ в правом верхнем углу схемы.