Sunteți pe pagina 1din 17

25/05/2014

Arquitectura de Computadoras
Clase 14 -A
Controlador Programable de Interrupciones i8259
(PIC 8259 = programmable interrupt controller)

Controlador Programable de Interrupciones i8259


(PIC 8259 = programmable interrupt controller)

Funciones
Estructura externa (esquema de conexin)
Estructura interna
Secuencia de reconocimiento de una
interrupcin
Conexin en cascada entre varios i8259
Programacin del i8259
Modos de operacin
Ejemplo de programacin del i8259

25/05/2014

PIC 8259 = programmable interrupt controller


FUNCIONES

Este controlador de interrupciones permite:


Que un procesador pueda atender interrupciones
de hasta 64 perifricos diferentes a travs de una
sola lnea de interrupcin especialmente pensado
para procesadores i80x86
Atender a todas las interrupciones de una manera
flexible mediante un esquema de interrupciones
multinivel.

PIC 8259 = programmable interrupt controller


ESTRUCTURA EXTERNA
(esquema de conexin)

IRQ0 IRQ7: peticiones de


interrupcin de los perifricos,
de mayor a menor prioridad.
INT: peticin de interrupcin al
procesador gestionada por el
i8259.
INTA (Interrupt
Acknowledgement):
reconocimento/aceptacin de
lainterrupcin por parte del
procesador.
CS (chip select): para leer y
escribir en los registros del PIC
utilizada para programar PIC.

25/05/2014

PIC 8259 = programmable interrupt controller


ESTRUCTURA EXTERNA
(Descripcin de Seales)
CAS2 CAS0: lneas para la conexin en cascada
de varios i8259. Actan como salida del PIC maestro
y como entrada de los PIC esclavos
EN: indica si el PIC acta como maestro o como
esclavo cuando hay varios encadenados (en
cascada).
RD, RW (read, write): permiten leer o escribir en los
registros de control del i8259.
A0: nica lnea del bus direcciones usada para
seleccionar los registros de control.
Bus de datos: intercambio de datos entre el PIC y
el resto de componentes de un computador
(memoria y procesador).

PIC 8259 = programmable interrupt controller


ESTRUCTURA INTERNA

25/05/2014

ESTRUCTURA INTERNA
Registros Internos

Todos los registros del PIC son de ocho bits:


IRR (Interrupt Request Register): cada uno de los
bits de este registro est asociado con una de las
lneas de peticin de interrupcin. Estos bits
almacenan las peticiones de interrupcin
pendientes.
ISR (In-Service Register): cada uno de los bits se
asocia con una lnea de peticin de interrupcin.
En este caso slo se activa el bit que corresponde
a la interrupcin que se est procesando en un
momento dado.
IMR (Interrupt Mask Register): registro de
enmascaramiento de interrupciones.

ESTRUCTURA INTERNA

Lgica de gestin de prioridad: determina


qu interrupcin, de las solicitadas en el IRR,
debe ser atendida primero.
Buffer del bus de datos: conecta el 8259
con el bus de datos de la placa principal del
ordenador.
Lgica de lectura y escritura: acepta los
comandos que enva la CPU; transfiere el
estado del 8259 hacia el bus de datos.
Buffer de cascada/comparador: almacena
y compara las identificaciones de todos los
8259 del sistema.

25/05/2014

PIC 8259 = programmable interrupt controller


Secuencia de Reconocimiento de una Interrupcin
1.
2.
3.
4.

5.

6.

Una o ms lneas IRQ son activadas por los perifricos conectados al PIC y
esto activa los correspondientes bits IRR
El 8259 evala la prioridad de estas interrupciones (mediante el codificador de
prioridad) y solicita una interrupcin a la CPU activando la lnea INT.
Cuando la CPU reconoce la interrupcin enva la seal INTA.
Entonces el PIC, recibida la seal INTA, activa el bit correspondiente a la
interrupcin de mayor prioridad (la que va a ser procesada) en el ISR y borra
ese mismo bit en el IRR. En este ciclo, el 8259 an no controla el bus de
datos.
Cuando la CPU enva un segundo ciclo INTA, el 8259 deposita en el bus de
datos un valor de 8 bits que indica el nmero de vector de interrupcin (type
code= offset o base de interrupciones del PIC + n de IRQ). La CPU multiplica
este valor por 4 para buscar en esa direccin de memoria la direccin de
comienzo de la RTI.
En el modo AEOI del PIC, el bit de la interrupcin en el ISR es borrado
automticamente nada ms acabar el segundo pulso INTA. En caso contrario,
este bit permanece activo hasta que la CPU enve el mandato (comand) EOI
(End of Interrupt) al final de la rutina que trata la interrupcin (esto es lo ms
normal).

PIC 8259 = programmable interrupt controller


Conexin en cascada entre varios i8259 (I)

Cuando es necesario atender a las peticiones de


interrupcin de ms de ocho perifricos se pueden
conectar varios PICs en cascada.
Se utilizan dos niveles de controladores: en el
primero tenemos al PIC master, y en el segundo
entre 1 y 8 esclavos. Slo la salida INT del master
est conectada a la entrada INTR del procesador.
Para conectar un PIC en configuracin de cascada
se conecta su salida INT a una de las entradas
IRQ del PIC master y sus entradas CAS a las
salidas CAS del master.
Adems, la entrada EN debe ser coherente con la
funcin de cada uno de los microcontroladores:
debe valer 0 para los esclavos y 1 para el master

25/05/2014

PIC 8259 = programmable interrupt controller


Conexin en cascada entre varios i8259 (I)

La secuencia de reconocimiento de una peticin de


interrupcin en las lneas del master es la misma
que ya se ha explicado. Si la peticin de
interrupcin es en una de las lneas de un esclavo,
entonces:
1.
2.

El PIC esclavo detecta la peticin de interrupcin por una


de sus lneas y activa la seal INT
El PIC master detecta la peticin de interrupcin por la
lnea a la que se conecta ese esclavo. Activa el
correspondiente bit del IRR.

PIC 8259 = programmable interrupt controller


Conexin en cascada entre varios i8259 (I)
4.
5.

6.

Con el segundo pulso de INTA, el esclavo vuelca en el bus


de datos el nmero del vector de interrupcin.
En el modo AEOI, los bits de los registros ISR del master y el
esclavo se limpian automticamente cuando termina el
segundo ciclo de INTA. Si no se trabaja en este modo, el
procesador deber enviar dos mandatos de EOI, uno al
master y otro al esclavo. Para que esto funcione as, la RTI
debe saber en cada caso si est atendiendo a una
interrupcin gestionada directamente por el master o a travs
de una pareja master-esclavo. Esto es necesario para que
enve uno o dos comandos EOI respectivamente.
Se debe tener en cuenta que la conexin de un PIC esclavo
al PIC master origina una reestructuracin del esquema de
prioridades de los niveles de interrupcin del computador: se
intercalan ocho nuevos niveles entre los que ya tuviera el
master conectados

25/05/2014

PIC 8259 = programmable interrupt controller


Programacin del i8259 (I)

El 8259 acepta dos tipos de comandos generados por la


CPU:
1.
2.

ICW (Inicialization Command Word): inicializa el 8259.


OCW (Operation Command Word): programa la modalidad de
funcionamiento.

La comunicacin con el 8259 emplea las lneas WR y RD, as


como la A0 y el bus de datos.
El hecho de que exista una sola lnea de direcciones (la A0)
implica que el PIC slo ocupa dos direcciones de puerto en el
espacio de E/S de la computadora (normalmente 20h y 21h).
El ICW constan de secuencias de 2 a 4 comandos
consecutivos que el 8259 espera recibir secuencialmente,
unos tras otros, a travs del bus de datos.
Los ICW deben mandarse antes de que el sistema comience
a trabajar. Posteriormente los OCW pueden ser enviados en
cualquier momento, una ves realizada la inicializacin.

PIC 8259 = programmable interrupt controller


Programacin del i8259 (I)- Secuencia de
Inicializacin

25/05/2014

Programacin del i8259 (II)


ICWS (Inicialization Command Words)

Cuando un mandato es enviado con A0=0 y D4=1, el PIC lo


interpreta como la primera palabra de la inicializacin e inicia la
secuencia de inicializacin.
Se inicializan (reset) todos los circuitos, se limpia el IMR y se
asignan los niveles de prioridad.
Los bits ms importantes de este comando son:
SNGL: Si vale 1 (modo simple, no es necesario ICW3); 0 (en cascada).
IC4: Si vale 0, significa que tampoco es necesario el comando ICW4
(Todas las funciones que programa esta palabra se ponen a cero).
LTIM: Indica si las lneas de peticin de interrupcin funcionan por nivel
(1) o por flancos (0).

Programacin del i8259 (III)


ICWS (Inicialization Command Words)

ICW2: se enva con A0=1, siempre a continuacin de ICW1. Programa el


Offset (base) del vector de interrupciones.

25/05/2014

Programacin del i8259 (III)


ICWS (Inicialization Command Words)

ICW3: se enva con A0=1 slo si existe ms de un 8259 en el sistema (seal


SNGL de ICW1 a 1), en caso contrario en su lugar se enviara ICW4 (si
procede). Hay que distinguir entre maestro y esclavo:
En el caso del PIC maestro, cada bit del comando indica si hay un PIC conectado a
la correspondiente lnea de peticin de interrupcin. Por ejemplo, si S6 vale 1
significa que a la lnea IRQ6 tenemos conectado un 8259 en lugar de un perifrico.
Para los PIC esclavos, este mandato sirve para indicar la lnea del PIC maestro a la
que se conectan el PIC esclavo (que siempre estar entre 0 y 7).

Programacin del i8259 (IV)


ICWS (Inicialization Command Words)

ICW4 (A0 = 1): se enva cuando se quiere que el PIC trabaje en un modo de
operacin diferente al establecido por defecto. (previamente hay que poner
el bit IC4 de ICW1 a 1).
SFNM: Bit que activa el Special Fully Nested Mode.
BUF: Bit que activa el Buffered Mode.
M/S: l cuando se trata del NC maestro, y 0 cuando se trata de un NC esclavo.
AEOI: Bit que activa el modo auto EOI.
MD: Bit que seala si trabajamos con el modo del PIC para el 8086.

Fully Nested Mode, modo por defecto, que ordena las IR por prioridades
(IR0, mxima IR7, mnima). Equivale a enviar ICW4 con todos sus bits a
cero.
Buffered Mode, el 8259 tiene una serie de buffers internos para almacenar
los datos antes de volcarlos al bus.
Modos de EOI, bajar el bit del registro ISR al final de la seal INTA (AEOI) o
paraque no se baje de forma manual usando OCW2.

25/05/2014

Programacin del i8259


OCWS (Operation Command Words)

Existen tres comandos bsicos,


OCW1 (con A0=l), OCW2 y OCW3 (estos dos ltimos con
A0=0).

Permiten realizar operaciones de:


habilitar/deshabilitar niveles de interrupcin,
modificar las prioridades de estos niveles,
enviar rdenes de EOI cuando no se trabaja en modo
automtico,...

OCW1. Los bits a 1 inhiben (enmascaran) la


correspondiente IR y los que estn a 0 habilitan
(desenmascaran) la IR.

Programacin del i8259 (II)


OCWS (Operation Command Words)

OCW2. Varias funciones.


Permite configurar un sistema de rotaciones de prioridades: la ltima IR
atendida pasa a ser la IR de menor prioridad.
Permite el envo del EOI manual por parte del procesador.

10

25/05/2014

Programacin del i8259 (III)


OCWS (Operation Command Words)

OCW3: Varias funciones.


Permite leer los registros IRR e ISR.
Permite mediante el bit POLL gestionar las interrupciones por software
(poco utilizado) inhibiendo la salida INT y posteriormente leyendo el registro
ISR.
Tambin permite trabajar con el modo de operacin Special Mask.

PIC 8259 programmable interrupt controller


Modos de operacin (I)
Fully Nested Mode (modo de anidamiento completo): el i8259 opera, por
defecto, en esta modalidad.
En este modo, tras la secuencia de inicializacin, las interrupciones quedan
ordenadas, por prioridades, de mayor (IRQ0) a menor (IRQ7). Este orden
puede modificarse en la modalidad de prioridad rotatoria o con el mandato de
asignacin de prioridad.
Cuando se produce un reconocimiento de interrupcin por parte de la CPU,
el i8259 evala cul es la interrupcin pendiente de mayor prioridad, coloca
su nmero de vector en el bus y activa su bit correspondiente en el ISR.
Este bit permanece activo hasta que el 8259 recibe el mandato EOI (fin de
interrupcin) por parte del procesador. Mientras el bit del ISR est activo,
todas las interrupciones de igual o menor prioridad que lleguen permanecen
inhibidas; Sin embargo, las de mayor prioridad podrn interrumpir

11

25/05/2014

PIC 8259 programmable interrupt controller


Modos de operacin (II)
Special Fully Nested Mode (modo de anidamiento completo especial):
se emplea en sistemas que tienen varios PIC conectados. Slo el i8259 maestro
es programado en este modo.
Las diferencias respecto al Fully Nested Mode normal son:
Cuando se atiende una interrupcin de un 8259 esclavo, si viene otra de
mayor prioridad de ese mismo 8259 esclavo, se provoca una
interrupcin al maestro (normalmente, el 8259 esclavo estara
enmascarado mientras se procesa una de sus interrupciones).
Cuando acaba la rutina de servicio de interrupcin, hay que enviar un
EOI al 8259 esclavo. Adems hay que leer a continuacin su ISR y
comprobar si es cero. En ese caso, hay que enviar adems otro EOI al
8259 maestro (si no es cero significa que an hay interrupciones en
proceso en el 8259 esclavo).

PIC 8259 programmable interrupt controller


Modos de operacin: Modos de EOI (III)

El EOI (End Of lnterrupt) sirve para bajar el bit del ISR que representa la
interrupcin que est siendo procesada.
El EOI puede producirse automticamente (AEOI) al final de la ltima seal
INTA que enva la CPU.
Como la mayora de los sistemas requieren una gestin de prioridades en las
interrupciones, es mejor que el EOI lo enve el propio procesador al 8259 a
travs de OCW2 cuando termine la RTI (rutina de tratamiento de la
interrupcin).
En un sistema con varios PIC, el EOI debe ser enviado al 8259 esclavo y
tambin al maestro. Hay dos modalidades de EOI:
No especifico: el 8259 borra el bit ms significativo que est activo en el registro ISR,
que se supone que es el correspondiente a la ltima interrupcin producida (la de
mayor prioridad y que est siendo procesada). Esto es suficiente para un sistema
donde se respeta el Fully Nested Mode.
Especifico: si el 8259 es incapaz de determinar cul fue el ltimo nivel de interrupcin
procesado (no se respeta el Fully Nested Mode), la RTI debe enviar un EOI
especfico al PIC indicndole qu bit hay que borrar en el ISR.

12

25/05/2014

PIC 8259 programmable interrupt controller


Modos de operacin (IV)

Rotacin de prioridades. Hay sistemas en que varios perifricos tienen el


mismo nivel de prioridad, en los que no interesa mantener un orden de
prioridades en las lneas IR.
La solucin consiste en asignar el menor nivel de prioridad a la interrupcin
recin atendida para permitir que las dems pendientes seprocesen tambin.
Para ello se enva un EOI que rote las prioridades. Por ejemplo, si se haba
procesado una IRQ3, entonces IRQ3 pasar a tener el menor nivel de
prioridad e IRQ4 el mayor. Existe tambin una asignacin especfica de
prioridades a travs de OCW2.
Special Mask Mode. Hay ocasiones en las que mientras se ejecuta una RTI
es necesario permitir que se produzcan ciertas interrupciones de menor
prioridad. Esto implica alterar la estructura normal de prioridades activando el
Special Mask Mode con OCW3 durante la RTI (es importante inhibirlo de
nuevo al final). Una vez activado este modo, el registro IMR indica qu
interrupciones estn permitidas (bit a 0) y cules inhibidas (bit a 1). Al final
hay que enviar un EOI especifico, ya que este modo de trabajo altera el Fully
Nested Mode.

PIC 8259 programmable interrupt controller


Interrupciones en la PC
En un PC existen dos i8259, uno acta como maestro y el
otro como esclavo.
Ambos son inicializados por la BIOS al arrancar el
ordenador. Generalmente la inicializacin de la BIOS se
hace usando cdigo ensamblador.
El 8259 est conectado al puerto (direccin) de E/S 20h y
el esclavo al puerto A0h.
El Master genera tipos de interrupcin a partir del 08h y el
esclavo a partir del 70h

13

25/05/2014

PIC 8259 programmable interrupt controller


Ejemplo de programacin del i8259

PIC 8259 programmable interrupt controller


Interrupciones en la PC
A partir de la IBM AT se incluyen 2
controladores de interrupcin, donde el
segundo
controlador
(ESCLAVO)
est
conectado
en cascada a la lnea de
interrupcin 2 del primer controlador (
MAESTRO) . L a lneas de interrupcin del
segundo controlador estn numeradas de 8 a
15.
Debido a este cascadeo, la lnea de
interrupcin 2 no est disponible. Sin embargo
; para compatibilidad con la PC original, la
lnea de interrrupcin 2 es conectada a al lnea
9 del segundo controlador ( tal que, si un
dispositivo en la PC es configurado para la
interrupcin 2, en realidad ste usa la
interrupcin 9)

Carlos Canto Q.

14

25/05/2014

PIC 8259 programmable interrupt controller


Interrupciones en la PC
Interrupciones reservadas:
IRQ0 Temporizador (Timer)
IRQ1 Teclado
IRQ8 Reloj de tiempo real
IRQ13 Errores del coprocesador
IRQ14 Controlador de disco duro
IRQ3 Puerto serie COM1
IRQ4 Puerto serie COM2
IRQ6 Controlador de diskette
IRQ7 Puerto paralelo

Al inicio del sistema se especifica:


PIC MAESTRO INT = IRQ + 8
PIC ESCLAVO INT = IRQ + 70h

PIC MAESTRO Dir E/S = 20h, 21h


PIC ESCLAVO Dir E/S = A0h, A1h

Carlos Canto Q.

PIC 8259 programmable interrupt controller


Interrupciones en la PC
Entradas del controlador programable de interrupciones PIC 8259

Carlos Canto Q.

15

25/05/2014

PIC 8259 programmable interrupt controller


Ejemplo de programacin del i8259

Ejemplo de inicializacin.
MOV
OUT
MOV
OUT
MOV
OUT

AL,13H
20H,AL
AL,08H
21H,AL
AL,09H
21H,AL

; PIC necesita ICW4, un solo PIC, disparo por flanco


; Vector de Int. 08H -0FH
; Modo Buffer, EOI Normal, 8086/8088

PIC 8259 programmable interrupt controller


Ejemplo de programacin del i8259

Ejemplo para habilitar entradas de la mscara de interrupciones


MOV
OUT

AL,10111100b
21H,AL

; IRQ 0, 1 y 6 permitidas

Ejemplo de Fin de interrupcin EOI, no especifica


MOV
OUT
IRET

AL,20H
20H,AL
; Retorno de la rutina de Interrupcin

16

25/05/2014

PIC 8259 programmable interrupt controller


Ejemplo de programacin del i8259

Ejemplo para setear la Interrupcin


CLI
MOV
MOV
MOV
MOV
CLD
STOSW
MOV
STOSW
MOV
OUT
STI

; Deshabilita interrupciones
AX,0
ES,AX
DI,24H ; Punto de entrada para la interrupcin del tipo 09h
AX,OFFSET KBINT
; Movimiento ascendente
; Pone el Offset de la Rutina de atencin a la INT.
AX,CS
; Pone el CS de la Rutina de atencin a la INTAL,0FCH ;Pone la mascara de interrupciones
21H,AL
; Habilita Interrupciones

17

S-ar putea să vă placă și