
El Intel 8259 es un controlador de interrupciones programable (PIC) diseñado para los microprocesadores Intel 8080 e Intel 8085. La versión inicial fue el 8259; la posterior versión 8259A era compatible con versiones anteriores y podía utilizarse con los procesadores 8086 y 8088. El 8259 combina múltiples fuentes de entrada de interrupción en una única salida de interrupción para el microprocesador principal, extendiendo los niveles de interrupción disponibles en un sistema más allá de los uno o dos niveles que se encuentran en el chip del procesador. El 8259A era el controlador de interrupciones para el bus ISA en los IBM PC y IBM PC AT originales .
El 8259 se introdujo como parte de la familia MCS 85 de Intel en 1976. El 8259A se incluyó en el PC original presentado en 1981 y se mantuvo en el PC/XT cuando se presentó en 1983. Un segundo 8259A se añadió con la introducción del PC/AT . El 8259 ha coexistido con la arquitectura Intel APIC desde su introducción en PC multiprocesador simétricos . Los PC modernos han comenzado a eliminar gradualmente el 8259A en favor de la arquitectura Intel APIC. Sin embargo, aunque ya no es un chip independiente, la interfaz del 8259A todavía la proporciona el Platform Controller Hub o el puente sur en las placas base x86 modernas . [ 1 ]
Descripción funcional
Los pines de señal principales de un microcontrolador 8259 son los siguientes: ocho líneas de entrada de solicitud de interrupción denominadas IRQ0 a IRQ7, una línea de salida de solicitud de interrupción denominada INTR, una línea de confirmación de interrupción denominada INTA y los pines D0 a D7 para comunicar el nivel de interrupción o el desplazamiento del vector. Otras conexiones incluyen los pines CAS0 a CAS2 para la conexión en cascada entre microcontroladores 8259.
Se pueden conectar en cascada hasta ocho unidades esclavas 8259 a una unidad maestra 8259 para proporcionar hasta 64 interrupciones (IRQ). Las unidades 8259 se conectan en cascada uniendo la línea INT de una unidad esclava 8259 a la línea IRQ de una unidad maestra 8259.
Las operaciones de fin de interrupción (EOI) admiten EOI específico, EOI no específico y EOI automático. Un EOI específico indica el nivel de IRQ que reconoce en la rutina de servicio de interrupción (ISR). Un EOI no específico restablece el nivel de IRQ en la ISR. El EOI automático restablece el nivel de IRQ en la ISR inmediatamente después de que se reconoce la interrupción.
El chip 8259A admite los modos de activación por interrupción de flanco y de nivel. Admite los modos de prioridad fija y de prioridad rotativa.
El 8259 puede configurarse para funcionar con un 8080/8085 o un 8086/8088. En el 8086/8088, el controlador de interrupciones proporciona un número de interrupción en el bus de datos cuando se produce una interrupción. El ciclo de interrupción del 8080/8085 emite tres bytes en el bus de datos (correspondientes a una instrucción CALL en el conjunto de instrucciones del 8080/8085).
El modelo 8259A ofrece funcionalidades adicionales en comparación con el 8259 (en particular, el modo con búfer y el modo activado por nivel) y es compatible con versiones anteriores del mismo.
Consideraciones de programación
MS-DOS y Windows

placa madre.]]
La programación de un procesador 8259 junto con MS-DOS y Windows ha introducido una serie de problemas confusos en aras de la retrocompatibilidad, que se remonta al IBM PC original de 1981.
- Se espera que los controladores de dispositivos MS-DOS envíen una señal EOI genérica a los 8259 cuando finalicen el mantenimiento de su dispositivo. Esto impide el uso de cualquier otra señal EOI del 8259 y excluye la diferenciación entre las interrupciones de dispositivo redirigidas del 8259 maestro al 8259 esclavo.
- El uso de IRQ2 e IRQ9 se originó con la introducción del procesador esclavo 8259 en el IBM PC/AT. La salida INT del esclavo 8259 se conecta a la IR2 del maestro. La línea IRQ2 del bus ISA, originalmente conectada a esta IR2, se redirigió a la IR1 del esclavo. De esta forma, la antigua línea IRQ2 ahora genera IRQ9 en la CPU. Para garantizar la compatibilidad con versiones anteriores de controladores de dispositivos DOS que aún utilizan IRQ2, la BIOS instala un controlador para IRQ9 que redirige las interrupciones al controlador IRQ2 original.
Para los compatibles con IBM PC , la BIOS asigna las solicitudes de interrupción del maestro 8259 (IRQ0–IRQ7) a las interrupciones INT 08–INT 0Fh. Cuando está presente, el esclavo 8259 del IBM PC/AT se asigna a las interrupciones INT 70–INT 77h. Esto se hizo a pesar de que los primeros 32 vectores de interrupción (INT 00–INT 1F) estaban reservados por el procesador para excepciones internas. Esto significaba que, en chips posteriores, los manejadores para los vectores de menor numeración necesitaban diferenciar entre tres causas:
- Fallos, excepciones y trampas causadas incidentalmente.
- Interrupciones causadas por IRQ o NMI, que potencialmente incluyen IRQ espurias.
- Llamadas deliberadas desde software que ejecuta instrucciones INT, de punto de interrupción o CALL/JMP indirectas, como las que se utilizan para interactuar con la BIOS, el sistema operativo o los controladores de dispositivos.
Por este motivo, la mayoría de los sistemas operativos que no utilizan la BIOS configuran el/los controlador/es de interrupciones para evitar por completo el rango de vectores reservados. En modo protegido , el sistema operativo puede restringir el uso de instrucciones INT a vectores específicos (por ejemplo, Linux expone INT 80h para llamadas al sistema), y cualquier intento de usar un vector no permitido generará un fallo de protección.
Esto evita en parte la necesidad de determinar la causa en los manejadores de vectores de interrupción, aunque las interrupciones espurias y el uso compartido de IRQ aún pueden complicar las cosas. Afortunadamente, se puede consultar a la mayoría de los dispositivos periféricos sobre las IRQ pendientes, y si no se encuentra ninguna fuente, la interrupción se puede tratar como espuria o ignorar por completo.
Otros sistemas operativos
Dado que la mayoría de los demás sistemas operativos permiten modificar las expectativas de los controladores de dispositivos , se pueden utilizar otros modos de funcionamiento del 8259, como Auto-EOI. Esto es especialmente importante para el hardware x86 moderno , donde el retardo del espacio de direcciones de E/S puede ser considerable al comunicarse con los 8259. Además, permite otras optimizaciones en la sincronización, como en secciones críticas, en un sistema multiprocesador x86 con 8259.
Modos activados por borde y nivel
Dado que el bus ISA no admite interrupciones activadas por nivel , el modo activado por nivel no se puede utilizar para las interrupciones conectadas a dispositivos ISA. Esto significa que en los sistemas PC/XT, PC/AT y compatibles, el 8259 debe programarse para el modo activado por flanco . En los sistemas MCA, los dispositivos utilizan interrupciones activadas por nivel y el controlador de interrupciones está cableado para funcionar siempre en modo activado por nivel. En los sistemas EISA, PCI y posteriores, los registros de control de flanco/nivel (ELCR) controlan el modo por línea IRQ, lo que hace que el modo del 8259 sea irrelevante para dichos sistemas con buses ISA. El BIOS programa el ELCR al arrancar el sistema para un funcionamiento correcto.
Las ELCR se encuentran en las direcciones 0x4d0 y 0x4d1 del espacio de direcciones de E/S x86. Tienen un ancho de 8 bits, y cada bit corresponde a una IRQ de los microcontroladores 8259. Cuando un bit está activado, la IRQ se activa por nivel; de lo contrario, se activa por flanco.
Interrupciones espurias
El microcontrolador 8259 genera interrupciones espurias en respuesta a diversas condiciones.
La primera causa es que una línea IRQ se desactive antes de ser confirmada. Esto puede ocurrir debido al ruido en las líneas IRQ. En el modo activado por flanco, el ruido debe mantener la línea en estado bajo durante 100 ns. Cuando el ruido disminuye, una resistencia pull-up devuelve la línea IRQ a estado alto, generando así una interrupción falsa. En el modo activado por nivel, el ruido puede provocar un nivel de señal alto en la línea INTR del sistema. Si el sistema envía una solicitud de confirmación, el 8259 no tiene nada que resolver y, por lo tanto, envía una IRQ7 en respuesta. Este primer caso generará IRQ7 espurias.
Un caso similar puede ocurrir cuando la activación de la señal 8259 y la desactivación de la entrada IRQ no están correctamente sincronizadas. En muchos sistemas, la entrada IRQ se desactiva mediante una escritura de E/S, y el procesador no espera a que la escritura llegue al dispositivo de E/S. Si el procesador continúa y activa la IRQ 8259 antes de que se desactive la entrada IRQ, la 8259 volverá a activar INTR. Para cuando el procesador reconoce esta INTR y emite una confirmación para leer la IRQ de la 8259, la entrada IRQ puede estar desactivada, y la 8259 devuelve una IRQ7 errónea.
La segunda posibilidad es que la IRQ2 del maestro 8259 esté activa en alto cuando las líneas IRQ del esclavo 8259 están inactivas en el flanco descendente de una confirmación de interrupción. Este segundo caso generará IRQ15 falsas, pero es poco frecuente.
PC/XT y PC/AT
El sistema PC/XT ISA tenía un controlador 8259, mientras que los sistemas PC/AT y posteriores tenían dos controladores 8259, uno maestro y otro esclavo. Las líneas de interrupción IRQ0 a IRQ7 corresponden al controlador maestro 8259, mientras que las líneas de interrupción IRQ8 a IRQ15 corresponden al controlador esclavo 8259. Las etiquetas en los pines de un 8259 son IR0 a IR7. IRQ0 a IRQ15 son los nombres de las líneas del bus ISA a las que están conectados los controladores 8259.
Variantes
Véase también
Referencias
- ↑ "Hoja de datos de Intel" . www.datasheetcatalog.com . Consultado el 30 de abril de 2024 .
- ↑ Intel Corporation, "8086 disponible para entornos industriales", Número especial de Intel Preview: Soluciones de 16 bits, mayo/junio de 1980, página 29
- ↑ Intel Corporation, "Componente de microcomputadora: Nueva línea de productos de grado industrial responde a la demanda de componentes de alta confiabilidad para operar en aplicaciones industriales", Intel Preview, marzo/abril de 1979, pág. 11
- ↑ Intel Corporation, "Productos militares: ¡Intel sigue adelante!", Intel Preview, marzo/abril de 1979, pág. 19
- ↑ Intel Corporation, "Noticia breve: Intel licencia a Oki para la versión CMOS de varios productos", Solutions, julio/agosto de 1984, página 1.
- ↑ Ashborn, Jim; "Empaquetado avanzado: Un poco rinde mucho", Intel Corporation, Solutions, enero/febrero de 1986, página 2
- Gilluwe, Frank van. El PC indocumentado . AW Developers Press, 1997. ISBN 0-201-47950-8
- McGivern, Joseph. Diseño de sistemas de PC basados en interrupciones . Annabooks, 1998. ISBN 0-929392-50-7
- Referencia técnica de la interfaz de hardware del IBM Personal System/2 – Arquitecturas . IBM, 1990. Publicación de IBM 84F8933.
Enlaces externos
- Controlador de interrupciones programable 8259A
- chipsets de Intel
- IBM PC compatibles
- circuitos integrados de entrada/salida
- Interrumpe