stringtranslate.com

Интел 8259

Крупный план чипа Intel 8259A IRQ ПК XT.
Распиновка

Intel 8259 — это программируемый контроллер прерываний (PIC), разработанный для микропроцессоров Intel 8085 и Intel 8086 . Первоначальная часть была 8259, более поздняя версия с суффиксом A была совместима с предыдущими версиями и могла использоваться с процессорами 8086 или 8088 . 8259 объединяет несколько входных источников прерываний в один выходной сигнал прерывания для главного микропроцессора, расширяя уровни прерываний, доступные в системе, за пределы одного или двух уровней, имеющихся на микросхеме процессора. 8259A был контроллером прерываний для шины ISA в исходных IBM PC и IBM PC AT .

8259 был представлен как часть семейства Intel MCS 85 в 1976 году. 8259A был включен в оригинальный ПК, представленный в 1981 году, и обслуживался PC / XT , когда он был представлен в 1983 году. Второй 8259A был добавлен с появлением PC / AT. . 8259 сосуществует с архитектурой Intel APIC с момента ее появления в симметричных многопроцессорных ПК. Современные ПК начали постепенно отказываться от 8259A в пользу архитектуры Intel APIC. Однако, хотя интерфейс 8259A больше не является отдельным чипом, он по-прежнему предоставляется концентратором контроллера платформы или южным мостом на современных материнских платах x86 . [1]

Функциональное описание

Основные сигнальные контакты на 8259 следующие: восемь входных линий запроса прерывания с именами от IRQ0 до IRQ7, выходная линия запроса прерывания с именем INTR, линия подтверждения прерывания с именем INTA, от D0 до D7 для передачи уровня прерывания или смещения вектора. Другие соединения включают CAS0–CAS2 для каскадирования между 8259.

До восьми подчиненных 8259 можно каскадно подключить к ведущему 8259, чтобы обеспечить до 64 IRQ. 8259 каскадируются путем подключения линии INT одного подчиненного устройства 8259 к линии IRQ одного ведущего устройства 8259.

Операции завершения прерывания (EOI) поддерживают определенный EOI, неспецифический EOI и автоматический EOI. Конкретный EOI определяет уровень IRQ, который он подтверждает в ISR. Неспецифический EOI сбрасывает уровень IRQ в ISR. Auto-EOI сбрасывает уровень IRQ в ISR сразу после подтверждения прерывания.

Режимы запуска прерываний по фронту и уровню поддерживаются 8259A. Поддерживаются режимы фиксированного приоритета и вращающегося приоритета.

8259 можно настроить для работы с 8080/8085 или 8086/8088. В 8086/8088 контроллер прерываний выдает номер прерывания на шину данных при возникновении прерывания. Цикл прерывания 8080/8085 выдаст три байта на шину данных (что соответствует команде CALL в наборе команд 8080/8085).

8259A обеспечивает дополнительную функциональность по сравнению с 8259 (в частности, режим с буферизацией и режим с запуском по уровню) и совместим с ним снизу вверх.

Рекомендации по программированию

ДОС и Windows

NEC D8259AC, используемый на оригинальной материнской плате IBM PC .

Программирование 8259 в сочетании с DOS и Microsoft Windows привело к возникновению ряда запутанных проблем ради обратной совместимости, которая возникла еще в оригинальном ПК, представленном в 1981 году.

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

Вторая проблема связана с использованием IRQ2 и IRQ9 с момента появления подчиненного устройства 8259 в ПК/АТ. Выход INT ведомого устройства 8259 подключен к IR2 ведущего устройства. Линия IRQ2 шины ISA, первоначально подключенная к этому IR2, была перенаправлена ​​на IR1 ведомого устройства. Таким образом, старая линия IRQ2 теперь генерирует IRQ9 в ЦП. Чтобы обеспечить обратную совместимость с драйверами устройств DOS, которые все еще настроены на IRQ2, в BIOS устанавливается обработчик для IRQ9, который перенаправляет прерывания на исходный обработчик IRQ2.

На ПК BIOS (и, следовательно, также DOS) традиционно сопоставляет запросы прерываний ведущего устройства 8259 (IRQ0-IRQ7) со смещением вектора прерывания 8 (INT08-INT0F), а запросы прерывания подчиненного устройства 8259 (в ПК/AT и более поздних версиях) (IRQ8). -IRQ15) для смещения вектора прерывания 112 (INT70-INT77). Это было сделано несмотря на то, что первые 32 (INT00-INT1F) вектора прерываний были зарезервированы процессором для внутренних исключений (по какой-то причине это было проигнорировано при проектировании ПК). Из-за зарезервированных векторов для исключений большинство других операционных систем сопоставляют (по крайней мере, главную) 8259 IRQ (если они используются на платформе) с другим базовым смещением вектора прерывания.

Другие операционные системы

Поскольку большинство других операционных систем допускают изменения в ожиданиях драйверов устройств, можно использовать другие режимы работы 8259, такие как Auto-EOI. Это особенно важно для современного оборудования x86 , в котором значительное количество времени может быть потрачено на задержку адресного пространства ввода-вывода при обмене данными с 8259. Это также позволяет синхронизировать ряд других оптимизаций, например критических секций, в многопроцессорной системе x86 с 8259.

Режимы срабатывания по краю и уровню

Поскольку шина ISA не поддерживает прерывания , запускаемые по уровню , режим, запускаемый по уровню, не может использоваться для прерываний, подключенных к устройствам ISA. Это означает, что на PC/XT, PC/AT и совместимых системах 8259 должен быть запрограммирован на режим запуска по фронту . В системах MCA устройства используют прерывания, запускаемые по уровню, а контроллер прерываний запрограммирован так, чтобы всегда работать в режиме, запускаемом по уровню. В более новых системах EISA, PCI и более поздних системах регистры управления пограничным/уровнем (ELCR) управляют режимом каждой линии IRQ, что фактически делает режим 8259 нерелевантным для таких систем с шинами ISA. ELCR программируется BIOS при запуске системы для правильной работы.

ELCR расположены по адресам 0x4d0 и 0x4d1 в адресном пространстве ввода-вывода x86. Они имеют ширину 8 бит, каждый бит соответствует IRQ от 8259. Если бит установлен, IRQ находится в режиме, запускаемом по уровню; в противном случае IRQ находится в режиме запуска по фронту.

Ложные прерывания

8259 генерирует ложные прерывания в ответ на ряд условий.

Во-первых, линия IRQ сбрасывается до того, как она будет подтверждена. Это может произойти из-за шума на линиях IRQ. В режиме запуска по фронту шум должен поддерживать линию в низком состоянии в течение 100 нс. Когда шум уменьшается, подтягивающий резистор возвращает линию IRQ в высокий уровень, тем самым генерируя ложное прерывание. В режиме запуска по уровню шум может вызвать высокий уровень сигнала на линии INTR системы. Если система отправляет запрос на подтверждение, 8259 нечего разрешать и поэтому отправляет в ответ IRQ7. В первом случае будут генерироваться ложные IRQ7.

Аналогичный случай может произойти, когда демаскировка 8259 и отмена подтверждения входа IRQ не синхронизированы должным образом. Во многих системах вход IRQ сбрасывается при записи ввода-вывода, и процессор не ждет, пока запись достигнет устройства ввода-вывода. Если процессор продолжит работу и демаскирует IRQ 8259 до того, как вход IRQ будет снят, 8259 снова установит INTR. К тому времени, когда процессор распознает этот INTR и выдает подтверждение на чтение IRQ от 8259, вход IRQ может быть отменен, и 8259 возвращает ложное IRQ7.

Во-вторых, на IRQ2 ведущего 8259 активен высокий уровень, когда линии IRQ ведомого 8259 неактивны по заднему фронту подтверждения прерывания. Во втором случае будут генерироваться ложные IRQ15, но это случается редко.

ПК/XT и ПК/AT

Система PC/XT ISA имела один контроллер 8259, а системы PC/AT и более поздние версии имели два контроллера 8259: главный и подчиненный. IRQ0–IRQ7 — это линии прерываний ведущего 8259, а IRQ8–IRQ15 — линии прерываний ведомого 8259. Метки на контактах 8259 — от IR0 до IR7. IRQ0–IRQ15 — это имена линий шины ISA, к которым подключены 8259.

Варианты

  1. ^ В количестве от 100 и выше.
  2. ^ Выборка, первый квартал 1986 г.

Смотрите также

Рекомендации

  1. ^ http://pdf.datasheetcatalog.com/datasheet/Intel/mXvqwzr.pdf [ пустой URL-адрес PDF ]
  2. ^ Корпорация Intel, «8086 Доступен для промышленной среды», Специальный выпуск Intel Preview: 16-битные решения, май/июнь 1980 г., стр. 29
  3. ^ Корпорация Intel, «Компоненты микрокомпьютеров: новая линейка продуктов промышленного класса отвечает спросу на высоконадежные компоненты для работы в промышленных приложениях», Intel Preview, март/апрель 1979 г., стр. 11
  4. ^ Корпорация Intel, «Военная продукция: Intel идет вперед!», Intel Preview, март/апрель 1979 г., стр. 19
  5. ^ Корпорация Intel, «NewsBit: Intel лицензирует Oki на версии CMOS нескольких продуктов», Solutions, июль/август 1984 г., стр. 1.
  6. ^ Эшборн, Джим; «Усовершенствованная упаковка: небольшое дело имеет большое значение», корпорация Intel, Solutions, январь/февраль 1986 г., стр. 2

Внешние ссылки