20 мая 2019 года    
Понедельник | 17:21    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Всё о компьютерах / Контроллеры

8259A / 8259-2 / 8259A-

	       8259A / 8259-2 / 8259A-8
	   PROGRAMMABLE INTERRUPT CONTROLLER


	   1 Совместим с iAPX 86, iAPX 88...................
	   2 Совместим с MCS-80, MCS-85.....................
	   3 Контроллер с восьмиуровневым
	     приоритетом....................................
	   4 Расширение до 64 уровней.......................
	   5 Программируемые режимы прерываний..............
	   6 Возможность маскирования отдельных
	     запросов.......................................
	   7 Одиночное питание +5В (без генератора).........
	   8 28-штырьковый корпус "два-в-линию".............



	Программируемый  Контроллер  Прерываний  Intel 8259A
обрабатывает до 8 векторизируемых приоритетов прерываний для
ЦПУ.   Он   может   каскадировать   до	 64  векторизируемых
приоритетов прерываний без дополнительных цепей. Размещен  в
28-ножечном корпусе,  использует технологию  NMOS и  требует
одиночного  питания   +5В.  Цепи   статичные,  не    требуют
генераторного входа.
	8259A	разработана    для    минимизации    объемов
программного обеспечения  и накладных  расходов времени  при
обработке прерываний  с несколькими  уровнями прерываний.  В
нем  имеется  несколько  режимов,  позволяющих	 оптимизацию
многих системных требований.
	8259A полностью совместима на верхнем уровне с Intel
8259.  Оригинальное матобеспечение написанное для 8259 будет
работать с 8259A во всех эквивалентных режимах (  MCS-80/85,
небуферизованный, триггер по фронту ).

	Ф У Н К Ц И О Н А Л Ь Н О Е   О П И С А Н И Е.

Прерывание в микрокомпьютерной технике

	Дизайн микрокомпьтерных систем требует, чтобы  обмен
таких  устройств  как  клавиатура,  дисплеи,  датчики  и др.
компоненты обслуживались  эффективным образом  и большинство
общих  системных  задач  могло	выполняться  компьютером   с
небольшой или несущественной остановкой.
	Наиболее общий метод обслуживании таких устройств  -
опросный.  При	этом   процессор  должен  проверять   каждое
устройство  последовательно  и	реализует  его	запрос	 при
необходимости обслуживания.  Нетрудно заметить,  что большая
часть главной программы бесконечно зациклена на  непрерывном
опросе	и  что	такой  метод  имел бы  серьезный detrimental
-альный эффект	в системной  производительности, ограничивая
задачи,  которые  мог  бы  выполнять  компьютер  и  уменьшая
стоимостную эффективность использования таких систем.
	Более  желательным   был  бы   метод,  при   котором
компьютеру  позволялось  выполнять  его  главную программу и
останавливать  ее  для	обслуживания  периферийных устройств
только, когда устройства  говорят об этом.  Эффективен метод
обеспечивавший	 бы   внешний	асинхронный   ввод,  который
информировал  бы   процессор,  что   он  должен    завершить
выполнение текущей инструкции  и перейти к  новой программе,
которая  обслужит  запрашиваеющее  устройство.	Однако,   по
завершению обслуживания процессор вспомнил бы точно, где  он
прервался.
	Такой метод называется прерывание. Легко видеть, что
системная    производительность    резко    возрастает	  и,
следовательно  компьютер  может   выполнять  больше   задач,
увеличивая свою стоимостную эффективность.
	Функцией Программируемого  Контроллера Прерываний  (
ПКП /  PIC )  является общее  управление всем  оборудованием
систем с  прерываниями. Он  принимает запросы  от периферии,
различает  какое   из  входных	 требований  более    важное
(приоритетное),  устанавливает	выше  ли  приоритет входного
запроса  значения  текущего  обслуживаемого  уровня и выдает
прерывание в ЦПУ основываясь на этом определении.
	Каждое периферийное устройство или структура  обычно
имеет	специальную   программу   или	"рутину",    которая
ассоциируется	с   их	 специфичными	функциональными  или
операционными	требованиями;	 это	обычно	  называется
"программой  обслуживания".  ПКП  после  выдачи прерывания в
ЦПУ,  должно  как-то  ввести   информацию  в  ЦПУ,   которая
разместит счетчик команд на сервисную программу связанную  с
запрашивающим устройством. Этот указатель является адресом в
таблице векторов, и в этом документе часто будет  называться
векторными данными.

8259A

	8259A является устройством, специально разработанным
для микрокомпьютерных  систем с  прерываниями. Он  управляет
восьмью уровнями или  запросами и имеет  встроенные средства
расширения другими 8259A (до 64 уровней). Он программируется
системным матобеспечением как устройство обмена.   Доступный
программисту выбор приоритетных режимов таков, что  порядок,
по    которому	  запросы    обрабатываются    8259А   может
конфигурироваться в соответствие с системными  требованиями.
Приоритетные	  режимы      могут	 изменяться	 или
переконфигурироваться динамически  в любое  время в  главной
программе.  Это  означает,  что  полные  струтуры прерываний
могут определятся в соответствие с требованиями, основываясь
на общем системном оборудовании.

Регистр Запросов на Прерывание (IRR) и Регистр Занятости (ISR).

	Прерывания с входных  линий IR обрабатываются  двумя
каскадированными   регистрами,	  регистром   запросов	  на
прерывание  и  регистром  занятости.  IRR  используется  для
хранения   прерываний	всех   уровней,   которые  запросили
обслуживание, а  ISR хранит  все уровни  прерываний, которые
обслуживаются.

Арбитраж приоритетов.

	Этот блок определяет приоритеты битов, установленных
в  IRR.   Высший  приоритет   выбирается  и  стробируется  в
соответствующий бит ISR по сигналу  INTA

Регистр масок прерываний (IMR)

	В IMR	хранятся биты, которые	отмечают маскируемые
линии прерываний.  IMR оперирует на IRR. Маскирование  входа
с более  высоким приоритетом  не влияет  на прерывания линий
запросов с более низкими приоритетами.

INT ( Прерывания )

	Этот выход идет  непосредственно на вход  прерывания
ЦПУ. Уровень Vон этой  линии полностью совместим с  входными
уровнями 8080A, 8085A и 8086.

____
INTA ( Запрос на прерывания )

	Импульс INTA вызывает выдачу из 8259A на шину данных
векторной информации. Формат  этих данных зависит  от режима
системы (мPM) 8259A.

Буфер шины данных

	Высокоимпедансный  двунаправленный  8-битовый  буфер
используется  для  согласования  с  системной  шиной данных.
Управляющие слова и информация о состоянии передаются  череэ
буфер данных.

Логика управления обменом ( чтением/записью)

	В функции  этого блока	входит прием  команд OUT  из
ЦПУ. Он  состоит из  регистров командных  слов инициализации
(ICW)  и  командных  слов  операции  (OCW),  которое  хранят
различные  форматы  управления	операциями  устройств.	Этот
функциональный блок также позволяет передавать статус  8259A
на шину данных.

__
CS ( выбор схемы - chip select)

	Низкий уровень данного входа разрешает работу 8259A.
Пока не схема не выбрана, невозможно ничего ни прочитать  ни
записать на нее.

__
WR (запись)

	низкий уровень данного сигнала разрешает ЦПУ  запись
управляющих слов (ICW и OCW) в 8259A.

__
RD (чтение)

	Низкий	уровень  данного  сигнала  позволяет   8259A
посылать  состояние  регистра  запросов  на  прерывания IRR,
регистра обслуживания ISR, регистр масок прерывания IMR  или
уровень прерывания на шину данных.

A0						     __   __
	Этот входной  сигнал используется  вместе с  WR и RD
для записи  команд в  различные командные  регистры, а также
для считывания различных регистров состояния микросхемы. Эта
линия может подключаться непосредсвенно к одной из  адресных
линий.

Каскадный буфер/компаратор

	Этот  функциональный   блок  хранит   и   сравнивает
идентификаторы	 всех	8259A	используемых   в    системе.
Соответствующие три ножки (CAS0-2) являются выходами,  когда
8259A используется  как ведущая,  и входами,  когда 8259A  -
ведомая.   Ведущая  8259A  посылает  идентифмкатор  ведомого
устройства на линии CAS0-2.  Выбранное таким образом ведомая
схема выдает запрограммированный адрес подпрограммы на	шину
данных во время одного или двух последующих импульсов INTA (
см пункт "Каскадирование 8259A")

Последовательность прерывания

	Мощным средством 8259A для микрокомпьютерных  систем
является его программируемость и возможность адресации рутин
прерывания. Последнее позволяет непосредственно или косвенно
переходить на указанную рутину обслуживания прерывания	безо
всякого     опроса     прерывающих     устройств.    Обычная
последовательность событий  при прерывании  зависит от	типа
используемого ЦПУ.

	В системах MCS-80/85 порядок событий следующий:

1. Одна или несколько  линий запросов на прерывание  (IR0-7)
   становятся  высокими  устанавливая  соответствующие	биты
   IRR.
2. 8259A оценивает  эти запросы и  посылает INT в  ЦПУ, если
   это требуется.
3. ЦПУ подтверждает INT, отвечая импульсом INTA.
4. Получив от ЦПУ INTA,  в ISR установливается бит с  высшим
   приоритетом, а  в IRR  соответствующий бит  сбрасывается.
   8259A  также  выдает  код  инструкции  CALL (11001101) на
   8-битовую шину данных на ее линии D7-0.
5. Данная  инструкция CALL  вызовет еще  два импульса  INTA,
   посылаемых на 8259A от ЦПУ.
6. Эти	 два   импульса    INTA   разрешают   8259A   выдать
   запрограммированные	адреса	подпрограмм  на шину данных.
   Вначале  выходят  младшие  8  битов	адреса,  а  затем по
   второму импульсу INTA старшие 8 бит.
7.  Это  завершает  3-байтную  инструкцию  CALL генерируемую
   8259A.  В  режиме  AEOI  бит  ISR  сбрасывается  по концу
   третьего  импульса  INTA.  В  противном  случае  бит  ISR
   остается установленным  пока соответствующая  команда EOI
   не выдаст конец последовательности прерывания.

	В системе iAPX-86 порядок до шага 4 тот же.

4. Получив от ЦПУ INTA,  в ISR установливается бит с  высшим
   приоритетом, а  в IRR  соответствующий бит  сбрасывается.
   8259A ничего  не выдает  на шину  данных в  течение этого
   цикла.
5. iAPX-86/10  инициирует  второй  импульс  INTA. В  течение
   этого  импульса  8259A  выдает  на  шину данных 8-битовый
   указатель, откуда он считывается ЦПУ.
6.  Это  завершает  цикл  прерывания.  В режиме AEOI бит ISR
   сбрасывается по концу второго импульса INTA. В  противном
   случае    бит    ISR    остается    установленным	пока
   соответствующая    команда	 EOI	не    выдаст   конец
   последовательности прерывания.

	Если  запросы  на  прерывание  на  шаге  4  любой из
последовательностей   отсутствовали,   (т.е.	длительность
запроса  была  слишком	короткой),  8259A  выдаст прерывание
уровня 7. И векторные данные, и каскадные линии будут такими
же как и при запросе на прерывание с уровнем 7.


      В Ы В О Д  П О С Л Е Д О В А Т Е Л Ь Н О С Т И
		  П Р Е Р Ы В А Н И Я

MCS-80, MCS-85


	Данная	последовательность  синхронизируется   тремя
импульсами INTA. В течении первого на шине данных появляется
код операции CALL (CDh)

	     +D7-D6-D5-D4-D3-D2-D1-D0+
   код CALL: ¦ 1¦ 1¦ 0¦ 0¦ 1¦ 1¦ 0¦ 1¦

	По  второму  импульсу  INTA  на  шину  освобождается
младшая  часть	адреса	соответствующей рутины обслуживания.
При   интервале=4   программируются   биты   5-7,   а	 0-4
автоматически	 вставляются	8259A.	  При	 интервале=8
программируются  только  биты  6  и  7,  а  0-5  вставляются
автоматически.

  ¦IR¦	 интервал = 4	       ¦ ¦IR¦	интервал = 8	      ¦
  ¦  ¦ D7 D6 D5 D4 D3 D2 D1 D0 ¦ ¦  ¦ D7 D6 D5 D4 D3 D2 D1 D0 ¦
  ¦ 7¦ A7 A6 A5  1  1  1  0  0 ¦ ¦ 7¦ A7 A6  1	1  1  0  0  0 ¦
  ¦ 6¦ A7 A6 A5  1  1  0  0  0 ¦ ¦ 6¦ A7 A6  1	1  0  0  0  0 ¦
  ¦ 5¦ A7 A6 A5  1  0  1  0  0 ¦ ¦ 5¦ A7 A6  1	0  1  0  0  0 ¦
  ¦ 4¦ A7 A6 A5  1  0  0  0  0 ¦ ¦ 4¦ A7 A6  1	0  0  0  0  0 ¦
  ¦ 3¦ A7 A6 A5  0  1  1  0  0 ¦ ¦ 3¦ A7 A6  0	1  1  0  0  0 ¦
  ¦ 2¦ A7 A6 A5  0  1  0  0  0 ¦ ¦ 2¦ A7 A6  0	1  0  0  0  0 ¦
  ¦ 1¦ A7 A6 A5  0  0  1  0  0 ¦ ¦ 1¦ A7 A6  0	0  1  0  0  0 ¦
  ¦ 0¦ A7 A6 A5  0  0  0  0  0 ¦ ¦ 0¦ A7 A6  0	0  0  0  0  0 ¦

	По  третьему  импульсу	INTA  на  шину освобождается
старшая  часть	адреса	соответствующей рутины обслуживания,
которая   программируются   как   байт	 2    инициализующей
последовательности (A8 - A15).

	     +D7--D6--D5--D4--D3--D2--D1--D0-+
	     ¦A15¦A14¦A13¦A12¦A11¦A10¦ A9¦ A8¦

iAPX 86, iAPX 88

	Режим iAPX 86 аналогичен MCS-80 за тем	исключением,
что процессором генерируется только два цикла  подтверждения
прерывания и  никакого кода  CALL в  процессор не  выдается.
Первый цикл  подтверждения прерывания  аналогичен первому  в
системе  MCS-80/85,  в	котором  8259A	использует  его  для
внутреннего   замораживания    состояний   прерываний	 для
разрешения  приоритетности,   и  как   ведущая	выдает	 код
прерывания  код  прерывания  на  каскадные  линия  по  концу
импульса INTA.	На этом  первым цикле  никакая информация не
выдается  на  процессор,  а  буфер  шины данных запрещен. На
втором	цикле  подтверждения  прерывания  в  режиме  iAPX 86
ведущая  8259A	(или  ведомая  если  так  запрограммировано)
посылает  байт	данных	в  процессор  с  кодом подтверждения
прерывания  (  см.  ниже)  (  отметим,	что  состояние	 ADI
управляющего режима игнорируются, а A5-A11 не используются в
режиме iAPX 86).

	 ¦  ¦ D7 D6 D5 D4 D3 D2 D1 D0 ¦
	 ¦ 7¦ T7 T6 T5 T4 T3  1  1  1 ¦
	 ¦ 6¦ T7 T6 T5 T4 T3  1  1  0 ¦
	 ¦ 5¦ T7 T6 T5 T4 T3  1  0  1 ¦
	 ¦ 4¦ T7 T6 T5 T4 T3  1  0  0 ¦
	 ¦ 3¦ T7 T6 T5 T4 T3  0  1  1 ¦
	 ¦ 2¦ T7 T6 T5 T4 T3  0  1  0 ¦
	 ¦ 1¦ T7 T6 T5 T4 T3  0  0  1 ¦
	 ¦ 0¦ T7 T6 T5 T4 T3  0  0  0 ¦
	

	П Р О Г Р А М М И Р О В А Н И Е   8 2 5 9 A

	8259A принимает два типа команд, генерируемых ЦПУ:

1. Командные  слова инициализации  (ICW): прежде,  чем могут
   начаться обычные операции, каждая 8259A в системе  должна
   быть     установлена     в	  свою	   начальную   точку
   последовательностью из 2  или 4 байтов,  синхронизируемых
   по импульсу WR

2.  Командные  слова  операции	(OCW):	эти  командные слова
   указывают 8259A в  каком из различных  режимов прерывания
   она должна работать:

		a. Полностью вложенный режим
		b. Режим ротации приоритетов
		c. Режим специальных масок
		d. Режим опроса

OCW  могут  записываться  в  8259A  в  любой  момент   после
инициализации.


К О М А Н Д Н Ы Е   С Л О В А	И Н И Ц И А Л И З А Ц И И  ( ICW )

Введение

	Если   команда	 выдана   с   A0=0   и	 D4=1,	 она
интерпретируется как командное слово инициализации 1 (ICW1).
ICW1  начинает	последовательность  инициализации,  во время
которой автоматически происходит следующее:

a. Фронт цепи  чувствительности сбрасывается, это  означает,
   что после инициализации,  чтобы произошло прерывание,  на
   входе запроса  на прерывание  должен произойти  переход в
   направлении снизу вверх.
b. Регистр масок прерывания очищается.
c. Входу IR7 назначается приоритет 7.
d. Адрес для режима ведомого устанавливается в 7.
e. Режим специальных масок сбрасывается, а чтение  состояния
   устанавливается на IRR.
f. Если   IC4=0,  то   все  функции,   выбраннуе  в	ICW4
   устанавливаются в нуль.  (небуферный режим~, нет АвтоEOI,
   система MCS-80/85)

    ПРИМЕЧАНИЕ: Ведущий/ведомый в ICW4 используется только в
		буферном режиме.


A5-A15:
	Адрес  страницы  старта   рутины  обслуживания.    В
       системе	MCS-80/85  восемь   уровней  запроса   будут
       генерироватьобращения  к  восьми  ячейкам  равномерно
       распределенных	в   памяти.	 Они   могут	быть
       запрограммированы с интервалом  либо 4, либо  8 ячеек
       памяти, следовательно 8	рутин займут страницу  из 32
       или 64 байт, соответственно.
       Формат адреса  длиной в	два байта  (A0-A15).   Когда
       интервал   рутин   равен   4   А0-А4    автоматически
       вставляются  8259A,  а  А5-А15 программируются извне.
       Когда  интервал	рутин  равен  8  А0-А5 автоматически
       вставляются 8259A, а А6-А15 программируются извне.
       8-байтный  интервал  установлен	для  совместимости с
       существующим  матобеспечением,  а  4-байтный интервал
       наилучший для компактной таблицы переходов.
       В системе iAPX A15-A11 вставляются в 5 самых значащих
       битов  векторного  байта,  а  8259A устанавливает три
       младших	значащих  бита	в  соответствии  с   уровнем
       прерывания.   A10-A5  игнорируются,  а  ADI (адресный
       интервал) ни на что не влияет.

LTIM:
       Если LTIM=1, то 8259A оперирует в режиме   прерывания
       по уровню. Логика детекции по фронту будет подавлена.

ADI:
       Адресный  интервал  вызова  -  ADI=1,  то интервал 4,
       ADI=0 интервал 8.

SNGL:
       Одиночный.  Означает,   что  8259A   единственный   в
       системе. Если SNGL=1, ICW3 не должно выдаваться.

IC4:
       Если этот бит установлен, будет ожидаться ICW4.	Если
       ICW4 не нужно, установите IC4=0.

	Данное	слово  только  считывается,  когда в системе
несколько  8259A  и  используется  каскадирование,  в случае
которого SNGL=0. ICW3 загрузит 8-битовый регистр, в  функции
которого входит

1.  В  режиме  ведущего  (когда  либо  SP=1, либо в буферном
   режиме M/S=1 в ICW4) для каждого ведомого в системе 8259A
   устанавливается  "1".  При  работе  ведущий выдает первый
   байт последовательности вызыва (в системе MCS-80/85) и по
   каскадным  линиям  разрешает  соответствующему   ведомому
   выдать второй и третий байты (в iAPX только второй)
2. В режиме  ведомого (когда либо  SP=0, либо если  BUF=1, а
   M/S=1 в  ICW4) биты	2-0 идентифицируют  ведомый. Ведомый
   будет  сравнивать  их  с  входными  каскадными линиями и,
   когда они совпадут на  шину данных будут выданы  второй и
   третий   (или   только   второй   в	 iAPX	86)    байты
   последовательности вызова.

SFNM:
      если  1,	то  программируется  специальный   полностью
      вложенный режим.

BUF:
     если 1, то  программируется буферный режим.  В буферном
     режиме SP/EN становится выходом, а по M/S	определяются
     ведущие и ведомые.

M/S:
     если   в	буферном   режиме   выбрано   M/S=1,   8259A
     программируется	как    ведщий,	  M/S=0     означает
     программирование  ведомого.  M/S  не  имеет  функции  в
     случае BUF=0.

AEOI:
     если   1,	  программируется   режим    автоматического
     завершения прерывания

мPM:
     признак  микропроцессора:	мPM=0  устанавливает 8259A в
     режим  системных  операций  MCS-80/85,  а мPM=1 в режим
     iAPX 86.



  К О М А Н Д Н Ы Е   С Л О В А  О П Е Р А Ц И И   ( OCW )

	После  программирования  8259A	командными   словами
инициализации  микросхема   готова  принимать	запросы   на
прерывания по  входным линиям.	Однако, с  помощью командных
слов операции ( OCW )  во время работы 8259A можно  выбирать
алгоритмы,  которые  укажут  8259A  в  каком  режиме следует
оперировать.

	OCW1 устанавливает и сбрасывает маскировочные биты в
регистре масок прерываний  (IMR). M7-M0 представляют  восемь
битов маски. М=1 указывает, что канал маскирован (запрещен),
а М=0, что канал разрешен.

R,  SL,  EOI  -  эти  три  бита управляют режимами ротации и
    завершения прерываний, а также их комбинациями. Описание
    этих комбинаций находится на блок-схеме.

L2,  L1,  L0  -   эти  биты  определяют  уровень   активного
    прерывания, если установлен бит SL


ESMM  -   разрешает  режим   специальных  масок.   Когда  он
    установлен	в   1,	он   позволяет	устанавливать	 или
    сбрасывать	биту  SMM  режим  специальных  масок.	Если
    ESMM=0, бит SMM становится не используемым.

SMM  -	режим специальных масок.  Если ESMM=1 и  SMM=1 8259A
    войдет в  режим специальных  масок, если  ESMM=1 и SMM=0
    8259A вернется в режим обычных масок. Когда ESMM=0,  бит
    SMM не эффективен.

Полностью вложенный режим

	Данный	режим  устанавливается	после  инициализации
если не запрограммирован другой режим. Запросы на прерывания
упорядочены по приоритетам  от 0 до  7 ( 0  - высший). Когда
прерывание подтверждается,  определяется запрос  с наивысшим
проритетом и его  вектор размещается на  шине.	Кроме  того,
устанавливается   бит	 (IS0-7)    регистра	обслуживания
прерывания.   Этот   бит   останется   до   тех   пор,	пока
микропроцессор не  выдаст команду  EOI -  "конец прерывания"
непосредственно  перед	возвратом  из  рутины  обслуживания,
либо,  если  установлен   бит  AEOI  (автоматический   конец
прерывания), пока не будет заднего фронта последнего сигнала
INTA. Пока  установлен бит  в IS  все последующие прерывания
того же или более низкого приоритета запрещаются, в то время
как  более  высокие   уровнибудут  генерировать   прерывания
(которые будут подтверждаться только если внутренний триггер
разрешения  прерываний	в  микропроцессоре  был восстановлен
программой).
	После инициализирующей последовательности IR0  имеет
наивысший приоритет,  IR7 -  самый низкий.  Ниже, в описании
режима ротации приоритетов,  поясняется, как можно  изменять
приоритеты.


Конец прерывания (EOI)

	Бит   обслуживания   (IS   -   In   Service)   может
сбрасываться   либо   автоматически   по   заднему    фронту
последнего  в  последовательности   импульса  INTA,   (когда
установлен бит AEOI в ICW1), либо командным словом,  которое
должно	быть  выдано  в   8259A  перед	выходом  из   рутины
обслуживания (команда EOI).  В каскадном режиме  команда EOI
должна выдаваться дважды, первый  раз для ведущего и  другой
для соответствующего ведомого.
	Существует  две  формы	команды  EOI:  специфичная и
неспецифичная.	Если  8259A  работает  в  режимах,   которые
сохраняют структуру  полностью вложенного  режима, то  можно
определить  какой  бит	 IS  нужно  сбросить   по  EOI.   По
неспецифичной EOI в 8259A автоматически сбрасывается бит  IS
с наивысшим приоритетом  из тех, что  установлены, поскольку
при полностью вложенном режиме самый высокий  подтвержденный
и обслуженный уровень IS всегда последний.

Неспецифичный EOI может быть выдан в OCW2 (EOI=1, SL=0, R=0).

	Если же используемый  режим вызывает беспокойство  о
целостности вложенной структуры,  8259A не может  определять
последний подтвержденный уровень. В этом случае должен	быть
выдан  специфичный  "конец  прерывания",  в команду которого
включен и номер сбрасываемого уровня. Специфичный EOI  может
быть  выдан  в	OCW2  (EOI=1,  SL=1,  R=0,а  L0-L2  являются
двоичным номером сбрасываемого бита IS).
	Необходимо   отметить,	 что	бит   IS,    который
замаскирован битом IMR,  не будет очищен  неспецифичным EOI6
tckb 8259A находится в режиме специальной маски.

Автоматический конец прерывания (AEOI)

	Если в	ICW4 бит  AEOI=1, 8259A  будет оперировать в
режиме	AEOI  постоянно,  пока	не будет перепрограммирована
новым ICW4.  В данном  режиме 8259A  автоматически выполняет
операцию неспецифичного EOI по заднему фронту последнего  из
импульсов  подтверждения  прерывания  (третий  в  MCS-80/85,
второй в iAPX86). Заметим,  что с точки зрения	системы этот
режим	должен	 использоваться   только,   когда  вложенная
многоуровневая	структура  прерываний  не  требуется  внутри
единственной 8259A.
	Режим  AEOI  может  использоваться  только в ведущей
8259A, но не в ведомой.


Автоматическая ротация (равноприоритетные устройства).

	В  некоторых  приложениях  встречаются	устройства с
равным	приоритетом.   В  этом	 режиме  устройство    после
обслуживания  получает	самый  низкий  приоритет,  так	 что
устройство  запрашивающее  прерывание  должно  будет ждать в
худшем случае  пока каждое  из 7  других устройств  не будет
обслужено по крайней мере однажды.  Например, если состояния
приоритетов и обслуживание перед ротацией было такое:

		      IS7  IS6	IS5  IS4  IS3  IS2  IS1  IS0
состояние IS:		0    1	  0    1    0	 0    0    0
состояние приоритета:	7    6	  5    4    3	 2    1    0
			  \младший		   старший/

(здесь IR4 самый высокий приоритет, требующий обслуживания),
то после ротации, когда IR4 обслужен и все другие приоритеты
ротируются соответственно:

		      IS7  IS6	IS5  IS4  IS3  IS2  IS1  IS0
состояние IS:		0    1	  0    1    0	 0    0    0
состояние приоритета:	2    1	  0    7    6	 5    4    3
			  старший/	\младший

	Существует  два  способа  выполнения  автоматической
ротации   с   использованием   OCW2,   ротация	 по  команде
неспецифичного EOI  (R=1, SL=0,  EOI=1) и  ротация в  режиме
автоматического EOI, который устанавливается по (R=1,  SL=0,
EOI=0) и сбрасывается по (R=0, SL=0, EOI=0).

Специфичная ротация ( специфичный приоритет)

	Программист может  изменять приоритеты	программируя
младший приоритет и фиксируя  тем самым все остальные.	Т.е.
если IR5  запрограммирован как	самый младшее  по приоритету
устройство, то IR6 будет иметь самый высокий приоритет.
Команда  установки   приоритета  выдается   в  в   OCW2  при
R=1, SL=1, EOI=0 и в L0-L2 двоичный код приоритетного уровня
младшего по приоритету устройства.
Видно, что в этом режиме внутреннее состояние изменяется под
программным управлением по OCW2.  Однако, оно не зависит  от
команды  EOI  (также  выполняемой  с  помощью  OCW2). Замена
приоритетов может  быть выполнена  и во  время команды	EOI,
используя OCW2 с командой  ротации по специфичному EOI (R=1,
SL=1, EOI=1, а	L0-L2 = уровню	IR, который получает  низший
приоритет).



Маски прерываний

	Каждый	запрос	на  прерывание	может  быть отдельно
замаскирован	 регистром     масок	 прерываний    (IMR)
программируемым через OCW1. Каждый бит в IMR маскирует	один
канал прерывания,  если он  установлен (1).  Бит 0 маскирует
IR0, бит 1  маскирует IR1 и  т.д. Маскирование канала  IR не
влияет на операции по другим каналам.


Режим специальной маски.

	Некоторые   приложения	 могут	 потребовать  рутину
обслуживания для динамического выбора структуры  приоритетов
системы  во   время  своего   выполнения  под	 управлением
программного обеспечения. Например, желательно, чтобы рутина
запретила запросы младших приоритетов для одной группы своих
операторов, но разрешила некоторые из них для другой группы.
	Трудность здесь в том, что если запрос на прерывание
подтвержден, а команда "конец прерывания" не сбросила его IS
бит  (т.е.  рутина  обслуживания  пока	выполняется)   8259A
запрещает все запросы с младшими приоритетами при отсутствии
простого программного способа разрешить их.
	Здесь вполне пригодится  режим специальной маски.  В
этом режиме бит маски, установленный по OCW1, запрещает  все
прерывания по данному уровню и разрешает прерывания по	всем
другим	уровням,  как  старшим,так  и  младшим,  которые  не
маскированы.
	Следовательно,	прерывания   могут  быть   выборочно
разрешены, путем загрузки в регистр масок.
	Режим специальной  маски устанавливается  в OCW3,  в
котором SSMM=1, SMM=1 и сбрасывается при SSMM=1, SMM=0.



Команда опроса

	В  этом  режиме  выход	INT  не  используется, или в
микропроцессоре  сброшен  триггер  разрешающий	 прерывания.
Обслуживание   устройств    обеспечивается   программно    с
использованием команды опроса.
	Команда опроса	выдается при  установке P=1  в OCW3.
8259A трактует	следующий импульс  RD на  8259A (т.е.  RD=0,
CS=0)	 как	подтверждение	 прерывания	устанавливая
соответствующий бит  IS если  запрос существует  и считывает
приоритетный уровень. Прерывания  замораживаются между WR  и
RD.

	В течение RD на шину данных выдается слово:

  +D7-D6-D5-D4-D3-D2-D1-D0+ W0-W2 двоичный код высшего
  ¦  ¦	¦  ¦  ¦  ¦  ¦  ¦  ¦	  приоритетного уровня
  ¦ I¦ -¦ -¦ -¦ -¦W2¦W1¦W0¦	  затребовшего обслуживание
  +-----------------------+ I	  =1, если существует
				  прерывание

	Этот  режим  полезен,  если  существует  общая	 для
нескольких   уровней   рутина,	 так   что   не    требуется
последовательность  INTA  (экономия  памяти  ПЗУ).  С другой
стороны  режим	опроса	полезен  для расширения приоритетных
уровней до более чем 64.



Считывание состояние 8259A

	Для   обновления   пользовательской   информации  по
системе  можно	 прочитать  входное   состояние   нескольких
внутренних регистров. С помощью  OCW3 можно прочитать IRR  и
ISR, а OCW1 читается IMR.
	Регистр  запросов  на	прерывание  IRR:   8-битовый
регистр,  который   содержит  уровни   с   неподтвержденными
запросами на прерывание.  Старший уровень запроса  сброшен в
IRR, когда прерывание подтверждено (не изменяется IMR).
	Регистр обслуживания ISR: 8-битовый регистр, который
содержит обслуживаемые	уровни приоритетов.  ISR обновляется
по команде "конец прерывания".
	Регистр  масок	прерывания  IMR:  8-битовый регистр,
который   содержит   замаскированные   линии   запросов   на
прерывание.
	IRR можно прочитать, если перед импульсом RD  выдать
команду чтения регистра с OCW3 (RR=1, RIS=0).
	ISR можно прочитать, если перед импульсом RD  выдать
команду чтения регистра с OCW3 (RR=1, RIS=1).
	Нет   необходимостизаписывать	OCW3   перед  каждой
операции  чтения,  поскольку  состояние чтения соответствует
предыдущему, т.е.  8259A "помнит",  что было  прочитано, IRR
или  ISR,  ранее  выбранным  OCW3.  Это  недействительно при
использовании опроса.
После	инициализации	8259A	устанавливается   на	IRR.
Для   считывания   IMR	 OCW3	не   нужен.   Шина  выходных
данных будет содержать IMR  как только активизируется RD,  а
A0=1  (OCW1).	 Опрос	перекрывает   статус  чтения   когда
P=1, RR=1 в OCW3.


Режимы реагирования на уровень и на фронт.

	Этот режим программируется битом 3 в ICW1.
	Если  LTIM=0,  прерывание  будет  распознаваться  по
переходу от нижнего уровня к  верхнему на входе IR. Вход  IR
может оставаться высоким, без генерации других прерываний.
	Если  LTIM=1,  прерывание  будет  распознаваться  по
"высокому"  уровню  на  входе  IR,  и  нет необходимости для
определения фронта.  Запрос на	прерывание должен  убираться
перед  выдачей	команды  EOI,  либо  прерывание  ЦПУ  должно
позволить предотвратить реагирование на второе прерывание.
	На   диаграмме	  приоритетной	  ячейки    показана
концептульная  цепь  реагирования  на  фронт  и  на  уровень
входных сигналов в 8259A. Обязательно отметьте, что  триггер
запроса является D-триггером.
	В обоих режимах реагирования как по фронту, так и по
уровню вход IR должен  оставаться высоким до заднего  фронта
первого  INTA.	Если  вход   IR  станет  низким  до   этого,
произойдет прерывание по умолчанию IR7, когда ЦПУ подтвердит
прерывание. Это может быть полезно для гарантии  определения
прерываний вызванных вызванных всплесками шума на входе  IR.
Чтобы использовать это средство, рутина для IR7 используется
для   "уборки"   в   виде   простой   инструкции   возврата,
следовательно игнорируя прерывание. Если IR7 необходимо  для
других целей, IR7,  вызванную по умолчания,  можно выделить,
прочитав ISR. Обычное IR7 устанавливает соответствующий  бит
ISR, а	шумовое IR7  нет. Если	произойдет IR7-  шумовое при
выполнении  рутины  обслуживания  обычного  IR7, регистр ISR
останется   установленным.   В	 этом	случае	  необходимо
прослеживать,  вошли  или  нет	в  рутину  IR7	ранее.	Если
произошло второе IR7, то это шум.


Специальный полностью вложенный режим.

	Этот режим  используется в  больших системах,  когда
применяется каскадирование, а  приоритеты хранятся в  каждом
ведомом 8259A. В  этом случае ведущий  8259A программируется
(используя ICW4) на полностью  вложенный режим.  Этот  режим
похож на обычный вложенный режим за исключением следующего:

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

b.   При   выходе   из	 рутины   обслуживания	  прерывания
   матобеспечение  обязано  проверить,	было  ли обслуженное
   прерывание единственным в  данном ведомом.	Это делается
   путем посылки  команды неспецифичного  EOI на  ведомый, с
   последующим считыванием регистра обслуживания и  проверки
   его на  нуль. Если  он пуст,  команда неспецифичного  EOI
   может быть послана и на  ведущий. Если же не нуль,  то не
   должно посылаться никакого EOI.



Буферный режим

	Когда 8259A используется в больших системах, где для
подключения на	шину данных  требуются буферы  и применяется
каскадный режим, существуют проблемы с разрешением буферов.
	Буферный  режим  будет	структурировать  8259A	так,
чтобы посылать сигнал разрешения на SP/EN разрешая буфера. в
данном	режиме	как  только  разрешаются  выходы шины данных
8259A, становится активным выход SP/EN.
	Данная	 модификация	заставляет   определять    в
программном обеспечении,  является ли  данная 8259A  ведущей
или ведомой. Бит 3 в ICW4 программирует в буферный режим,  а
бит 2 в ICW4  определяет, является данная 8259A  ведущей или
ведомой.



		К А С К А Д Н Ы Й   Р Е Ж И М.

	8259A  может  быть  лего  подсоединен  в  систему из
одного	главного  и   до  8  ведущих,	обрабатывая  до   64
приоритетных уровней.
	Ведущий управляет ведомыми по трем линиям  каскодной
шины.  Каскадная  шина	работает  как "выбор микросхемы" для
ведомого во время последовательности INTA.
	В каскадной  конфигурации выходы  прерывания ведомых
подключаются на  входы запросов  на прерывания	IR ведущего.
Когда  активизируется  линия  запроса  в  ведомом,  а  затем
подтверждается, ведущий  разрешит соответствующему  ведомому
выдать адрес рутины устройства в течение второго и  третьего
байта INTA (только второго в 8086/8088)
	Сигналы каскадной шины обычно низкие и содержат  код
адреса ведомого между задним фронтом первого импульса INTA и
задним фронтом	третьего импульса.   Каждый 8259A  в системе
должен	быть  раздельно  проинициализирован  и	может	быть
запрограммирован для работы в различных режимах. Команда EOI
должно выдаваться дважды:  один раз на	ведущий и другой  на
соответствующий  ведомый.  Для	активизации  входа CS (выбор
схемы) каждого 8259A требуется адресный декодер.
	Каскадные  сигналы  ведущего  8259A   активизируются
только	для  входов  ведомых,  ни  один  вход  ведомого   не
оставляет каскадные линии неактивными (низкими).
.
 	       8259A / 8259-2 / 8259A-
Лента новостей


2006 (c) Copyright Hardline.ru