Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программируемый контроллер прерываний Intel 8259A.



Контроллер реализован управлением приоритетов прерываний от 8 источников.

Вход запросов IRQi i=0..7

Выходной сигнал прерывания INTP подается на вход маскируемых прерываний ЦП.

 Разрешить или запретить с помощью CLI,STI.

 

Программно контроллер прерываний может быть настроен для работ в одном из четырех режимов.

           Векторное прерывание с фиксированным распределением приоритетов.

Вход IRQ0 - максимальный приоритет

     IRQ1 – минимальный приоритет

При программировании контроллера каждому входу контроллера соответствует определенный номер прерывания.

7                           3 2  1 0

NNNN                   0000

                              ….

                             1111

программируется  номер входа 

Когда поступают запросы на вход контроллера, сначала обслуживается вход с максимальным приоритетом, при этом контроллер сообщает ЦП номер прерывания для доступа к таблице прерываний.

               

Векторное прерывание с циклическим распределением приоритетов

В этом случае последнее обслуживаемое прерывание становится дном приоритетного кольца, т.е. принимает минимальный приоритет.

0→1→2→3→4→5→6→7 →убывание приоритетов

               

Векторное прерывание с адресуемым распределением приоритетов.

В конце подпрограммы обработчика прерывания указывается номер входа запросов, который станет дном приоритетного кольца.

               

Прерывание по опросу

Контроллер прерываний не программируется на определенные номера прерываний, и для того чтобы определить вход от которого произведен запрос программно считывается регистр запросов.

Последовательность работы контроллера прерываний при обработке запроса на прерывание

  1. Поступил запрос IRQ от внешнего устройства
  2. Контроллер прерываний анализирует запрос, и если маска не наложена на данный вход запросов, то передает запрос INTP в ЦП.
  3. ЦП завершает выполнение текущей команды, и если IF =1, то генерируется цикл подтверждения прерывания INTA1. Если в системе один контроллер прерываний, то в цикле ничего не происходит, иначе ведущий контроллер выдает информацию на шину каскадирования.
  4. Процессор генерирует второй цикл подтверждения прерывания INTA2. КП выдает на шину данных номер прерывания, соответствующий запросу с максимальным приоритетом. Бит IRQR сбрасывается, а бит SIRQR устанавливается. Этот установленный бит запрещает повторное обслуживание запросов по данному входу и входам с меньшим приоритетом.
  5. По номеру прерываний ЦП из таблицы прерываний берет адрес подпрограммы обработчика прерывания и передает ей управление. Обработчик прерывания должен сообщить контроллеру прерываний о своем завершении, поэтому в конце подпрограммы обработчика прерываний в контроллер направляется управляющее слово конца прерываний, которое сбрасывает бит регистра обслуживаемых запросов, тем самым разрешает обслуживание прерываний от данного входа и входам с меньшим приоритетом.

IRQ0 от таймера, IRQ1 от клавиатуры.

 

Управляющие слова инициализации

ICW1 является словом сброса. По нему сбрасывается все остальные регистры, в том числе и регистр масок запросов и устанавливается векторное прерывание с фиксированным распределением приоритетов. Определяет сколько дальше слов инициализации программируется, также вид запросов по IRQi: по уровню или по фронту.

Формат слова – адресный вход А0-0 (управляющее слово 1).

0 0X 0X 0X 1 _ 0X _ _                     

 

 Биты:

            1- слово ICW4 программируется

0 – не программируется

           1- КП единственный, ICW3 не программируется

           КН не единственный, ICW3 программируется

           1- IRQ воспринимается уровнем

0- Воспринимается фронтом

 

ICW2 определяет номера прерываний, соответствующие кодам запроса

1 _ _ _ _ _ 0X 0X 0X

 

Старшие биты – номера прерываний(вектор)

В младшие биты подставляется номер входа. Чтобы получить полный номер прерывания, соответствующему i-ому входу, надо в младшие 3 бита поставить номер входа в двоичной коде.

 

ICW3 имеет вида: для ведущего и для ведомого КП.

ICW3 для ведущего

1 _ _ _ _ _ _ _ _

 

Биты 0-7:

1-запрос от ведомого КП

0-запрос от устройства ввода-выода

 

ICW3 для ведомого

1 0 0 0 0 0 _ _ _                            

 

3 младшие бита определяют номер входа ведущего КП, к которому подключен данный ведомый.

Ведомы ПКП (выход INTP) подключается к IRQ2 ведущего. К остальным входам ведущего подключаются запросы от устройства ввода вывода.

 

ICW4

1 _ _ _ _ _ _ _ _

               

Биты:

0: 1-работа с системой х86

1: 1-разрешение автоматического конца прерывания(только для ведущего)

2: 1-ведущий

0-ведомый

3: 1- MS/SL/DE выход

4: 1- разрешение приоритета ведомого контроллера

 

Все слова инициализации программируются последовательно.

 

Программируемый контроллер прямого доступа в память Intel 8237. Структурная схема. Инициализация. Режимы работы. Пример программирования.

 

Прямой доступ к памяти (Direct Memory Access - DMA) используется для выполнения операций передачи данных непосредственно между оперативной памятью и устройствами ввода/вывода, минуя процессор. Управление Системной Шиной берет на себя специальный контроллер – контроллер прямого доступа к памяти (DMA).

При использовании DMA процессор не участвует в операциях ввода/вывода, контроллер прямого доступа сам формирует все сигналы, необходимые для обмена данными с устройством. Скорость такого непосредственного обмена значительно выше, чем при традиционном вводе/выводе с использованием центрального процессора и команд INP, OUT.

Контроллер прямого доступа реализован на базе микросхемы Intel 8237 и содержит четыре канала.

Чаще всего обмен данными происходит между жестким диском и основной памятью. DMA встроен в контроллер ЖД.

 

Структурная схема Intel 8237

 

Каждый канал содержит 16-разрядные регистры:

• регистр текущего адреса CAR, содержит текущий адрес ячейки памяти при выполнении операции обмена данными с использованием DMA;

• регистр циклов прямого доступа к памяти CWR, содержит число слов, предназначенных для передачи минус единица; при выполнении обмена данными регистр работает в режиме вычитания;

• регистр хранения базового адреса BAR, используется для хранения базового адреса памяти, используемого при передачи данных; в процессе работы канала DMA содержимое этого регистра не изменяется;

• регистр хранения базового числа циклов прямого доступа к памяти WCR; он хранит число циклов DMA, его содержимое также не изменяестя;

• регистр режима MR, определяющий режим работы канала.

Общий алгоритм ПДП.

• Для осуществления прямого доступа к памяти контроллер должен выполнить ряд последовательных операций:

• принять запрос (DREQ) от устройства ввода-вывода;

• сформировать запрос (HRQ) в процессор на захват шины;

• принять сигнал (HLDA), подтверждающий захват шины;

• сформировать сигнал (DACK), сообщающий устройству о начале обмена данными;

• выдать адрес ячейки памяти, предназначенной для обмена;

• выработать сигналы (MEMR, IOW или MEMW, IOR), обеспечивающие управление обменом;

• по окончании цикла DMA либо повторить цикл DMA, изменив адрес, либо прекратить цикл.

 

Для ЦП Контроллер прямого доступа (КПД) к памяти представлен как 16 адресованных портов в/в данных. ЦП может записывать в них и считывать с них. При программировании в контроллер заносится общее слово режима работы во все 4 канала, затем П-УВВ и УВВ-П, задается уменьшение или увеличение адреса.

При завершении инициализации контроллер может обслуживать запросы DRQi или

Рг. запросов. Контроллер формирует запрос HRQ. У ЦП есть команда LOCK (команда блокировки), которая запрещает подтверждение захвата шины. Если LOCK отсутствует, то после завершения текущего цикла шины, контроллер получает HLDA. 

ЦП отключается от системной шины, передает управление контроллеру ПД к памяти(КПД становится «хозяином» системной шины). По окончании обмена подсистема DMA возвращает процессору право управления шиной.

Режимы обслуживания.

В активном цикле обслуживание подсистемы DMA возможно в одном из четырех режимов. Окончание обслуживания распознается по переходу регистра счетчика слов из 0000Н в FFFFН. При этом возникает сигнал окончания счета (TC), который может вызвать авто инициализацию, если она запрограммирована, или маскирование канала при ее отсутствии.

Одновременно с TC вырабатывается выходной сигнал -EOP. Во время автоинициализации первоначальные значения регистров текущего адреса и счетчика восстанавливаются из соответствующих базовых регистров. После автоинициализации канал готов выполнять другое обслуживание подсистемы DMA без вмешательства CPU, как только обнаружится достоверный DREQ.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 325; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь