mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР10. Переименование рисунков и небольшие предложения по тексту
This commit is contained in:
@@ -179,7 +179,7 @@ _Таблица 5. Кодирование причины перехвата в
|
||||
|
||||
## Структура разрабатываемых устройств
|
||||
|
||||
В рамках лабораторной работы необходимо реализовать поддержку обработки аппаратных прерываний. Для этого необходимо реализовать для два аппаратных блока: блок управления регистрами контроля и статуса (**CSR-контроллер**) и контроллер прерываний **(Interrupt Controller)**.
|
||||
В рамках лабораторной работы необходимо реализовать поддержку обработки аппаратных прерываний. Для этого необходимо реализовать два аппаратных блока: блок управления регистрами контроля и статуса (**CSR-контроллер**) и контроллер прерываний **(Interrupt Controller)**.
|
||||
|
||||
Блок управления регистрами контроля и статуса позволяет добавить особые **архитектурные регистры**, которые будут использоваться нами при обработке прерываний и исключений.
|
||||
|
||||
@@ -187,17 +187,17 @@ _Таблица 5. Кодирование причины перехвата в
|
||||
|
||||

|
||||
|
||||
_Рисунок 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) на тот же регистр.
|
||||
|
||||

|
||||
|
||||
_Рисунок 3. Структурная схема контроллера CS-регистров_
|
||||
_Рисунок 4. Структурная схема контроллера CS-регистров_
|
||||
|
||||
3-битный вход **opcode_i** определяет операцию, которая будет производиться над содержимым CSR по адресу **addr_i**.
|
||||
|
||||
@@ -207,20 +207,18 @@ _Рисунок 3. Структурная схема контроллера CS-
|
||||
|
||||
### Контроллер прерываний
|
||||
|
||||
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 4_.
|
||||
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 5_.
|
||||
|
||||

|
||||
|
||||
_Рисунок 4. Структурная схема контроллера прерываний_
|
||||
_Рисунок 5. Структурная схема контроллера прерываний_
|
||||
|
||||
Несмотря на простоту схемы, данный контроллер состоит из:
|
||||
Несмотря на простоту схемы, данный контроллер состоит из логики:
|
||||
|
||||
- логики обработки вложенных прерываний, частью которой являются регистры отслеживания обработки прерывания и исключения (`irq_h` и `exc_h` соответственно),
|
||||
- логики установки и сброса этих регистров (которая вместе с этими регистрами заключена в штрихованные прямоугольники),
|
||||
- логики приоритета исключений над прерываниями,
|
||||
- а так же логики маскирования запросов на прерывание.
|
||||
|
||||
Разберем каждую из этих частей.
|
||||
- обработки вложенных прерываний, частью которой являются регистры отслеживания обработки прерывания и исключения (`irq_h` и `exc_h` соответственно),
|
||||
- установки и сброса этих регистров (которая вместе с этими регистрами заключена в штрихованные прямоугольники),
|
||||
- приоритета исключений над прерываниями,
|
||||
- маскирования запросов на прерывание.
|
||||
|
||||
Регистры отслеживания обработки прерывания и исключения нужны для того, чтобы мы могли понимать, что в данный момент процессор уже выполняет обработку прерывания / исключения. В такие моменты (если любой из регистров `exc_h`/`irq_h` содержит значение `1`) все последующие запросы на прерывание игнорируются. За это отвечают вентили И и ИЛИ-НЕ в правом верхнем углу схемы.
|
||||
|
||||
|
Reference in New Issue
Block a user