You are on page 1of 23

Profr.

Salvador Saucedo
IPN - ESIME ZACATENCO
COMPUTACIN V
DISEO DE UNA MICROCOMPUTADORA DIDCTICA

RESUMEN
Se presenta el diseo de un sistema didctico para enseaza y experimentacin con base en
el microprocesador 8088 de INTEL, con 16 KBytes de memoria EPROM, 8 KBytes de memoria RAM,
salida y entrada paralela, teclado, despliegue de cristal lquido, circuito contador temporizador, sali-
da audible, interrupciones de hardware, rea de experimentacin, interfaz RS-232C para comunica-
cin serial asncrona, fuente de poder estndar y dos conectores de expansin.

1. Caractersticas Generales

Se usar el microprocesador 8088 por su bajo costo y facilidad de encontrarlo en el mercado. Para
reducir el nmero de circuitos integrados se emplear el modo mnimo del 8088. Los circuitos de soporte a
emplear son: el generador de reloj 8284A-1, el controlador programable de interrupciones 8259A-2, la inter-
faz paralela programable 8255A-5 y el temporizador programable 82C54.

Se tendrn dos circuitos integrados de memoria EPROM 27C64, de 8KB cada uno, para obtener
16KB de memoria EPROM, donde residir el programa monitor.

Se tendr memoria RAM poniendo el circuito integrado 6164 de ocho Kbytes de capacidad.

Se contar con despliegue de cristal lquido con dos lneas de caracteres ASCII de veinte posiciones
cada una, esto es, se pueden exhibir hasta 40 caracteres alfanumricos al mismo tiempo.

El dispositivo de entrada para el usuario ser un teclado de 20 teclas para ejecutar los comandos
que brindar el programa monitor.

Se emplea la USART 8251 de INTEL para tener comunicacin serial asncrona a travs de un conec-
tor macho DB9.

2. Generador de reloj

Se usar el circuito integrado 8284A-1 de INTEL que produce tres seales que se aplican directa-
mente al 8088 y que son: 1) La seal RELOJ que es un tercio de la frecuencia del cristal usado, esto es,
4.9M/3 = 1.63MHz; 2) la seal INIC que arranca al 8088, haciendo que ste ejecute la instruccin en la loca-
lidad fsica FFFF0h y 3) la seal LISTO que al estar activa hace que el 8088 trabaje a velocidad normal,
pero si se hace "0", entonces el 8088 inserta estados de espera, reduciendo, en consecuencia, su velocidad
de operacin.

Figura 1 Generacin de seales de inicio y de reloj.

1
Profr. Salvador Saucedo
El 8284A produce adems otras dos seales: una es OSC que no se usa en el sistema, pero si se
enva al conector de expansin; la otra seal es RELP que es el reloj de perifricos y cuya frecuencia es la
sexta parte del valor del cristal.

El 8284A recibe por su entrada RES- la seal que activa, tras cierto lapso, a la seal INIC que inicia
a la CPU.

La entrada RDY1 es activa alta y sirve para indicar que el dato ya se recibi o que l est disponible.
Para que RDY1 pueda pasar la entrada AEN1- debe estar activa (en bajo). Los dispositivos lentos deben
inactivar la seal RDY1 para insertar estados de espera en la CPU.

Las entradas RDY2 y AEN2- se comportan de manera idntica a las anteriores. En este caso se in-
activa a esta ltima pareja conectando AEN2- a "1".

3. Amplificacin de seales

Con el fin de poder conectar algunas seales a varios circuitos integrados se hace necesario darles
mayor capacidad de entregar corriente por lo que se emplear el circuito integrado 74HCT367 que puede
lograr que una seal lgica se pueda conectar hasta a quince compuertas TTL.

Figura 2 Acondicionamiento de seales.


En este caso se acondicionan las seales IO/M-, RD-, WR- e INIC, que ya amplificadas reciben los nombres
ES/M-, LEER-, ESCR- e INICIO, respectivamente.

Quedan disponibles dos entradas para amplificar otras dos seales lgicas del sistema.

El 74HCT367 es un buffer no inversor de tres estados de tecnologa CMOS de alta velocidad.

La seal IO/M- cuando est en "1" indica que se har una transferencia de datos con algn puerto; y
cuando est en "0" indica que se har una transferencia de datos con memoria.

La seal LEER- es activa baja, por lo que si est en "0" indica que la CPU tomar un dato externo a
ella. Del mismo modo, si la seal ESCR- es la que est activa (en bajo) la CPU enviar un dato hacia afuera
de ella. Ambas seales nunca estn activas al mismo tiempo.

4. Generacin de direcciones de puertos

Para poder direccionar los puertos de entrada salida se propone el empleo del circuito integrado
74HC138, que activa slo una de sus salidas cuando la seal ES/M- est en alto y la lnea de direccin Y8
se encuentra en su nivel bajo.

En la tabla siguiente se dan las direcciones para cada uno de los dispositivos que estn en la tarjeta
principal de la computadora.

2
Profr. Salvador Saucedo

Figura 3 Generacin de seales para seleccionar puertos.

DISPOSITIVO SEAL DIR.


TECLADO STEC- 00H
PIC 8259 S59- 20H
TEMPORIZADOR S54- 40H
PPI 8255 S55- 60H
DESPLIEGUE SLDC- 80H
USART S51- E0H

Las lneas de seleccin A0H- y C0H- se envan al conector de expansin para su uso en el desarrollo
de experimentos.

5. El microprocesador 8088

Este microprocesador tiene un ducto de datos de ocho bits y un ducto de direcciones de 20 bits, por
lo que su espacio de direcciones es de un megabyte. Internamente tiene un ducto de 16 bits y su juego de
instrucciones es el mismo que el del 8086.

Figura 4 CPU de INTEL en modo mnimo.

El 8088 tiene cuatro registros aritmticos, cuatro registros ndices, cuatro registros de segmento, re-
gistro de banderas y cola de instrucciones.

3
Profr. Salvador Saucedo
Puede trabajar en uno de dos modos: mximo (usando el 8288) o mnimo (como aqu) que no re-
quiere del controlador de ductos 8288.

Puede direccionar 64K localidades de E/S, cuenta con doce modos de direccionamiento y se puede
interfazar con un coprocesador numrico. En la actualidad est obsoleto desde el punto de vista comercial,
pero como elemento de aprendizaje conserva mucha importancia, tomando en cuenta que INTEL preserva
el juego de instrucciones en los procesadores ms nuevos.

Notar que la entrada INTR recibe la seal INTR proveniente del controlador de interrupciones, lo que
significa que la CPU reconoce interrupciones de hardware, cuando su bandera de interrupciones est en "1".
La CPU indica al 8259 que ha reconocido una interrupcin activando la seal INTA-. La entrada para la inte-
rrupcin no mascarable, NMI, se desactiva conectndola a tierra lgica, pues dicha interrupcin queda sin
uso.

Como la CPU no tiene otro procesador que le solicite el control de los ductos del sistema, la entrada
HOLD es tambin desactivada conectndola a tierra lgica.

6. Controlador programable de interrupciones

Para controlar las interrupciones de hardware en un esquema de niveles de prioridad se emplea el


8259A que permite habilitar hasta ocho interrupciones en forma individual.

Figura 5 Controlador Programable de interrupciones.

La figura muestra la manera de conectarlo al sistema: su salida INT se conecta a la entrada INTR del
8088 y su entrada INTA- se conecta a la salida INTA- del 8088.

La salida EN- se usa para deshabilitar al tranceptor HC245 cuando el PIC debe enviar un dato hacia
la CPU.

Las lneas CAS0-CAS2 no se conectan, pues stas slo se usan cuando varios 8259s se conectan en
cascada, cosa que aqu no ocurre.

El 8259A cuenta con tres registros: el registro IRR salva todos los niveles que estn pidiendo servi-
cio; el registro ISR salva todos los niveles que estn recibiendo servicio; y el registro IMR salva los niveles
de interrupcin que estn permitidos.

Cuando una o ms de las seales IRQx est en "1", el PIC pone en "1" los bits correspondientes. A
continuacin el 8259 evala dichas peticiones y si procede activa la salida INT para avisar a la CPU.

Si as procede la CPU reconoce la interrupcin activando la seal INTA- (un pulso) por lo que el
8259A pone a "1" el bit de ms prioridad del registro ISR y el correspondiente bit del registro IRR es regre-
sado a "0".

4
Profr. Salvador Saucedo
El 8088 manda un segundo pulso por su salida INTA- con lo que el 8259A enva el tipo de interrup-
cin (ocho bits) por el ducto de datos.

Para que el 8259A regrese a "0" el bit del registro ISR debe recibir el comando EOI (fin de interrup-
cin) desde la CPU, a menos que est funcionando en el modo AEOI, en cuyo caso regresa dicho bit a "0"
en cuanto recibe el segundo pulso en INTA-.

La programacin del 8259A es algo complicada pero vale la pena el esfuerzo pues es la nica mane-
ra de poder hacer aplicaciones en tiempo real con la computadora (y tambin en una PC).

7. Transceptor de datos y cerrojo de direcciones

Para poder demultiplexar las ocho lneas ms bajas de direccin es necesario usar un cerrojo que
permita capturar el valor de la direccin durante el pulso de reloj en que dicha informacin est presente. Se
usar para ello el cerrojo de tres estado 74HCT573, que se comporta igual que el 74HCT373, pero que tiene
todas las entradas de un solo lado del paquete y todas sus salidas en el otro lado, para facilitar el diseo del
circuito impreso.

Figura 6 Demultiplexaje de datos y direcciones. Tranceptor de datos.

El HCT573 captura la direccin cuando se activa la seal ALE (Address Latch Enable) que se activa
justamente cuando el valor de la direccin est presente.

Algo semejante sucede con el tranceptor de datos 74HCT245 que, como su nombre lo indica, permi-
te transferir la informacin en los dos sentidos.

El circuito HCT245 est controlado por dos seales: la seal DEN- producida por el 8088 le indica
que es momento de transferir un dato, por lo que el tranceptor slo se activa cuando dicha seal est activa
(en bajo). La seal EN-, generada por el PIC, impide que la seal DEN- acte sobre el tranceptor pues EN-
se activa cuando el 8259A usa el bus local para transferir un dato. La otra seal que afecta al HCT245 es
DT/R- que fija la direccin del flujo de informacin, cuando es "1" transmite de A a B, y en caso contrario
recibe de B a A.

En el diagrama general se aprecia que se usan otros dos cerrojos 74HCT573 para abarcar a todas
5
Profr. Salvador Saucedo
las lneas de direccionamiento.

8. Puertos de entrada/salida paralela

Para dotar al sistema de capacidad de salida paralela se propone el uso del CI 8255A-5 que es una
interfaz programable con 24 terminales de entrada o salida. Se usar a dicho dispositivo en el modo 0, de tal
suerte que el puerto A es siempre de entrada y los puertos B y C son siempre de salida (palabra de control =
90H).

Figura 7 Puertos paralelos (PPI).

La forma de operar del 8255A se da en la siguiente tabla.

Y1 Y0 LEER- ESCR- S55- Operaciones de lectura


0 0 0 1 0 Pto. A ducto de datos
0 1 0 1 0 Pto. B ducto de datos
1 0 0 1 0 Pto. C ducto de datos
Operaciones de escritura
0 0 1 0 0 Ducto de datos pto. A
0 1 1 0 0 Ducto de datos pto. B
1 0 1 0 0 Ducto de datos pto. C
1 1 1 0 0 Ducto de datos control
Funciones de deshabilitar
x x x x 1 Salida de datos a 3er edo
1 1 0 1 0 Condicin ilegal
x x 1 1 0 Salida de datos a 3er edo

En la figura se ilustra la forma de conectar la interfaz PPI al sistema. La entrada RESET se conecta a
la seal INICIO la que al ponerse en "1" limpia los tres registros A, B y C y al registro de control. Define a A,
B y C como entradas.

El 8255A es un medio muy poderoso para poder conectar un sistema digital a muchos perifricos, ta-
6
Profr. Salvador Saucedo
les como impresoras, monitores, convertidores A/D y D/A, etc.

En este caso se envan doce de sus lneas de E/S hacia un conector de expansin para aplicaciones
de tipo experimental.

9. Temporizador programable

El dispositivo 82C54 es un contador/temporizador diseado para resolver problemas de generacin


precisa de eventos en tiempo real en microcomputadoras. Cuenta con tres contadores independientes, cada
uno de 16 bits, capaces de recibir entradas de reloj de hasta 10 MHz. Cada canal puede trabajar en cual-
quiera de los seis modos de operacin.

La siguiente tabla muestra cmo se opera al dispositivo.

Y1 Y0 LEER- ESCR- S54 Operacin


0 0 1 0 0 Escribe contador 0
0 1 1 0 0 Escribe contador 1
1 0 1 0 0 Escribe contador 2
1 1 1 0 0 Escribe reg de control
0 0 0 1 0 Lee contador 0
0 1 0 1 0 Lee contador 1
1 0 0 1 0 Lee contador 2
1 1 0 1 0 No hay operacin 3er edo
x x x x 1 No hay operacin 3er edo
x x 1 1 0 No hay operacin 3er edo

El canal 0 se usar en el modo 2 (Generador de interrupciones) el cual enva un pulso negativo con
duracin de un pulso de reloj cada vez que transcurren N pulsos de reloj, donde N es el valor cargado en el
contador.

El canal 2 se usar en el modo 3 que genera una seal peridica cuadrada y se emplear para exci-
tar una pequea bocina.

El canal 1 se programar en el modo 2 con la idea de medir la duracin de eventos externos, pues
su seal de compuerta, G1, viene desde el conector de expansin.

7
Profr. Salvador Saucedo

Figura 8 Temporizador programable. Altavoz.

Cuando un contador es escrito, toda su lgica de control es iniciada y su salida OUT se pone en un
estado conocido, sin que se requieran pulsos en su entrada CLK.

10. Memoria EPROM

El programa monitor debe residir en memoria que no pierda su contenido cuando se desenergiza el
sistema. Ello se logra poniendo memoria de slo lectura que pueda ser grabada en un programador comer-
cial estndar. Dicha memoria es conocida como memoria EPROM.

El sistema emplea dos circuitos integrados 27C64, cada uno de los cuales tiene una capacidad de
8Kx8, que son 16 Kbytes en total de memoria permanente. En tal memoria radicar el firmware de la compu-
tadora. En la siguiente figura se muestra como se conecta la memoria mencionada.

8
Profr. Salvador Saucedo

Figura 9 Memoria de slo lectura.


Como la memoria permanente debe estar en la parte ms alta del espacio de memoria se usa una
compuerta NAND de cuatro entradas, la 74HC20 que genera el permisivo general para poder acceder a
ambos CIs.

Para evitar colisiones, en la excitacin para activar cualquiera de las salidas de datos se incluye a la
seal LEER- con el fin de que si se hace una operacin de escritura sobre dichos dispositivos, stos perma-
nezcan con su salida de datos en el estado de alta impedancia.

Las localidades de la memoria de la izquierda van de la FC000H a la FDFFFH con espejo de la


FE000H a la FFFFFH, por lo que es aqu donde debe residir el programa monitor, incluyendo el salto inicial
grabado en la localidad fsica FFFF0H.

Las localidades de la memoria de la derecha van de la F8000H a la F9FFFH con espejo de la


FA000H a la FBFFFH, por lo que es aqu donde debe residir la aplicacin del usuario, que pueden ser ruti-
nas aritmticas, control de dispositivos externos, etc.

La existencia del espejo se explica porque Y13 no se usa para direccionar a la memoria.

11. Memoria de trabajo

Toda computadora requiere de memoria que pueda leer y tambin escribir para poder salvar datos
que necesita procesar. Por dicha razn se agrega memoria voltil conocida como RAM.

Se propone usar la memoria RAM 6164 que tiene una organizacin de 8Kx8, esto es, tiene una ca-
pacidad de 8 KB. Ver la siguiente figura.

9
Profr. Salvador Saucedo

Figura 10 Memoria voltil (RAM).


En virtud de que los vectores de interrupcin necesitan ser colocados en la parte ms baja del espa-
cio de memoria, para producir el permisivo general para acceder a esta memoria, se usa una compuerta OR
de tres entradas, la HC4075, cuya salida se combina con las seales Y16 y ES/M- para seleccionar al CI
6164.

La memoria 6164 comprende las localidades 00000H a 01FFFH, con varios espejos, entre los que
est el que va de la localidad 02000H a la localidad 03FFFH. La seal SELM-, para expansin, elige locali-
dades a partir de la direccin 10000H.

12. Teclado

El sistema contar con un teclado de veinte teclas controlado mediante el circuito integrado 74C923,
segn muestra la siguiente figura. Al oprimirse y soltarse una tecla se genera la interrupcin IRQ0 hacia el
8259A, mismo que activa la seal INTR para que la CPU efecte la lectura de la tecla oprimida

10
Profr. Salvador Saucedo

Figura 11 Teclado con el 74C923.


Los comandos que tendr el programa monitor son los siguientes:

ER Comando para examinar y modificar los registros.


DAR Comando para despliegue automtico de registros.
EM Comando para examinar y modificar localidades de memoria.
DAM Comando para despliegue automtico de memoria.
MBM Comando para mover bloques de memoria.
CBM Comando para comparar bloques de memoria.
ABCD Comando para exhibir los registros AX, BX, CX y DX.
DESC Comando para exhibir los registros DS, ES, SS y CS.
IPSP Comando para exhibir los registros IP, SP, SI y DI.
PAS Comando para ejecutar slo una instruccin.
RUP Comando para insertar un punto de ruptura o removerlos todos.
FLAG Comando para ver las banderas y el registro BP.
EJ Comando para correr un programa.
USU Comando para ejecutar comando del usuario.
E/S Comando para leer y escribir puertos.

Uso de las teclas

La tecla ESC sirve para abortar el comando en que se encuentra trabajando el usuario. La tecla
EJEC sirve para terminar el comando normalmente. Las teclas + y - sirven para avanzar o retroceder una
localidad o un registro al estar examinando/modificando memoria o registros.

11
Profr. Salvador Saucedo
13. Despliegue de cristal lquido

Figura 12 Despliegue de cristal lquido.

Para examinar el estado del sistema se emplea un despliegue de 40 caracteres alfanumricos en


dos hileras de 20 posiciones cada una. En la siguiente figura se muestra como se conecta el dispositivo
LCM2020 que permite desplegar la informacin sobre el sistema. El LCM requiere de una inicializacin y
cuenta con varios modos de operacin.

14. Conectores de expansin y de E/S

Figura 13 Conectores para expansin y puertos paralelos.

El sistema contar con posibilidad de ser expandido, para poder agregarle ms memoria o ms puer-
tos mediante un conector de expansin.

Tambin cuenta con doce lneas de E/S usando un conector de entradas y salidas paralelas.

Adems, contar con una pequea rea para alambrar dentro de la tarjeta principal.

12
Profr. Salvador Saucedo
HOJA RAIZ Revisado: Octubre 18, 2003
COMPUTADORA DIDACTICA Revisin:
Lista de Materiales Octubre 18, 2003 12:24:07

Item Cantidad Referencia Parte


1 1 BZ1 Zumbador
2 1 C1 1F
3 2 C21, C27 10n
4 1 C24 .18
5 1 C25 1.8
6 1 JP3 Header 17x2
7 1 JP4 Header 12x2
8 1 R1 10K
9 1 R 470
10 1 R? 330
11 1 U1 8284A-1 Generador de reloj
12 1 U2 8088MIN Microprocesador
13 3 U3 74HCT245 Tranceptor octal
14 1 U4, U5, U6 74HCT573 Cerrojo de 3 estados
15 1 U7 82C59A Controlador de interrupcin
16 1 U8 74HCT367 Buffer de 3 estados
17 1 U9 74HC00 NAND de 2 entradas
18 1 U10 74ACT138 Codificador 3 a 8
19 1 U11 74HC04 Inversor sxtuple
20 1 U12 8255A-5 Interfaz programable
21 1 U13 82C54 Contador / Temporizador
22 1 U14 74HCT32 OR de 2 entradas
23 2 U15, U16 27C64 EPROM de 8kx8
24 1 U17 74HC20 NAND de 4 entradas
25 1 U18 74HC4075 NOR de 3 entradas
26 1 U19 6164 SRAM de 8kx8
27 1 U20 USART 8251
28 2 U21, U28 74LS74 Flip Flor tipo D
29 1 U25 74C923 Controlador teclado
30 1 U22 LCM2020 Display C. lquido
31 1 U23 7438 NAND colector abierto
32 2 U24,U26 SN75150 intefaz RS232
33 1 U27 SN75154 inter RS232
31 1 Y1 4.9 MHz Cristal

Figura 14 Usar una fuente de PC para el prototipo.


15. El controlador programable de interrupciones 8259A

Este dispositivo maneja hasta ocho interrupciones vectorizadas, bajo un esquema de priorida-
des, para la CPU. Se pueden conectar hasta ocho 8259A's en cascada, para obtener 64 interrupciones
13
Profr. Salvador Saucedo
con niveles de prioridad, sin necesidad de circuitera adicional. El dispositivo no necesita seal de reloj
para sincronizarse con la CPU. En la figura se ofrece un diagrama a bloques del controlador.

Figura 15 Diagrama a bloques del PIC.

Diagrama a bloques del 8259A

El controlador programable de interrupciones funciona como un administrador en un sistema cu-


yo ambiente es manejado a base de interrupciones. Acepta peticiones provenientes de equipos perifri-
cos (como el teclado, el manejador de disquete, las comunicaciones, etc.), determina cual de las inte-
rrupciones tiene la mayor prioridad, compara dicha prioridad con la prioridad de la interrupcin que est
siendo atendida y, si es an mayor, enva una interrupcin a la CPU.

La rutina de servicio es el mdulo del programa asociado a una interrupcin particular, por lo
que el 8259A debe informar al 8088 de cual interrupcin se trata. Eso lo hace enviando a la CPU un
byte durante la secuencia de reconocimiento (aceptacin) de interrupcin.

En referencia a la figura vista, se tiene el registro de peticiones, IRR, que registra todos los ni-
veles de interrupcin que solicitan servicio en el momento actual. El registro de servicio, ISR, que indi-
ca los niveles de interrupcin en servicio, es decir aquellos cuya rutina de servicio est en ejecucin. El
arbitro de prioridades determina los niveles de prioridad de los bits en "1" del registro IRR. La ms alta
prioridad es elegida y el bit correspondiente es puesto a "1" en el registro ISR, durante el ciclo de bus
INTA-.

El registro de enmascaramiento de interrupciones, IMR, contiene los bits que inhiben indivi-
dualmente a los niveles de interrupcin. El registro IMR opera sobre el registro IRR. La inhibicin de una
entrada de alta prioridad no afecta a las inferiores.

La seal de interrupcin, INT, se conecta directamente a la CPU. INT es activa alta, es decir,
se pone a "1" para indicar una interrupcin.

La seal de reconocimiento de interrupcin, INTA-, es sensada por la lgica de control de


8259A para saber si la activacin de INT ha sido contestada positivamente por el 8088, y que se ha ini-
ciado el ciclo INTA-, de reconocimiento de interrupcin.

La lgica de control de lectura escritura se emplea para aceptar los comandos del 8088, me-

14
Profr. Salvador Saucedo
diante instrucciones OUT, que se almacenan en los registros ICWs, palabras de inicializacin, y los
OCWs, palabras de operacin que salvan los diferentes formatos de control. Esta lgica tambin trans-
fiere el estado del 8259A hacia el bus de datos local.

La seal de seleccin del dispositivo, CS-, indica en su estado activo (bajo) al dispositivo que
se har una lectura o escritura de sus registros. La escritura se indica activando la seal WR-, mientras
que una lectura se indica activando la seal RD-. Las seales WR- y RD- son activas bajas. La entrada
A 0 se combina con WR- o RD- para escribir comandos a los diferentes registros de comando, o bien
para leer alguno de los registros de estado.

La lgica para cascada salva y compara las IDs de todos los 8259As usados en el sistema. Tie-
ne tres terminales (CAS0-2) asociadas a esta lgica son salidas cuando el 8259A es definido como
maestro, y son entradas cuando es definido como esclavo. El 8259A que es maestro debe enviar por
dichas seales la ID del esclavo cuya interrupcin ser servida. El esclavo seleccionado de este modo
debe responder al ciclo de INTA- iniciado por la CPU, y poner en el bus de datos el vector de la inte-
rrupcin. Dicho vector se le preprograma por la CPU.

Programacin del 8259A

El 8259A acepta dos tipos de comando desde el 8088: palabras de inicializacin, ICWs, antes de
que empiece la operacin normal, y que son de 2 a 4 bytes, enviados al 8259A en ciclos de escritura de
E/S; y palabras de comandos de operacin, OCWs, que colocan al 8259A en uno de los siguientes mo-
dos de operacin:

a.- Modo completamente anidado


b.- Modo de prioridad rotatoria
c.- Modo de inhibicin especial
d.- Modo encuesta (desactiva a INT)

Un comando con A 0 = 0 y D 4 = 1 es interpretada por el 8259A como el inicio de la secuencia de


inicializacin. La palabra ICW1 arranca la inicializacin y automticamente se limpia el registro de inhibi-
cin IMR, y limpia las peticiones existentes. Ver siguiente figura

15
Profr. Salvador Saucedo

Las palabras de comando de operacin, OCWs, pueden enviarse al 8259A despus de que ste ha
sido inicializado. Mediante los comandos de operacin se puede cambiar el modo de operacin del contro-
lador de interrupciones, segn muestra la figura:

16
Profr. Salvador Saucedo


A0 D7 D6 D5 D4 D3 D2 D1 D0
MASCARA DE INT.
1 M7 M6 M5 M4 M3 M2 M1 M0
1: INHIBE
OCW1 0: PERMITE


A0 D7 D6 D5 D4 D3 D2 D1 D0 NIVEL IR A AFECTAR

0 H SL EOI 0 0 L2 L1 L0 0 1 2 3 4 5 6 7

OCW2 01010101
00110011
00001111



001 COMANDO EOI NO ESPECIFICO FIN DE
011 COMANDO EOI ESPECIFICO INTERRUP.
101 ROTAR EN MODO EOI NO ESPECIF ROTACION
100 ROTAR EN MODO EOI AUTO (PONE)) AUTOMA-
000 ROTAR EN MODO EOI AUTO (QUIT TICA
111 ROTAR EN EOI ESPECIFICO * ROTACION
110 PONER PRIORIDAD * ESPECIF.
010 NO OPERACION * COMBINA CON L2-0

LEE REGISTROS
A0 D7 D6 D5 D4 D3 D2 D1 D0
NO ACCIONLEE LEE
0 0 ESMSMM 0 1 P RR RIS IRR ISR

OCW3 0 1 0 1
0 0 1 1

0 0 NO ACCION
0 1 NO ACCION 1:MODO ENCUESTA
1 0 QUITA MASC ESP. 0: MODO NORMAL
1 1 PONE MASCARA ESP
(MASCARA ESPECIAL) (POLL)


Formato de las palabras de comando de operacin.

El modo completamente anidado consiste en que cuando la seal INT es reconocida la peticin de
ms alta prioridad es elegida y su vector es puesto en el bus de datos. Adems, el bit que corresponde al
nivel servido se pone a "1" en el registro de interrupcin en servicio, ISR. Dicho bit permanece puesto hasta
que el microprocesador enva el comando EOI (fin de interrupcin), justamente antes de finalizar la rutina de
servicio o, si el bit AEOI (fin de interrupcin automtico) est activo, hasta el ltimo filo del postrer pulso re-
cibido en INTA. Mientras el bit de ISR est puesto todas las interrupciones de igual o menor prioridad esta-
rn inhibidas, mientras que las de mayor, podrn generar una interrupcin (siempre que la bandera IF haya
sido habilitada por software).

Al ser inicializado, el 8259A tiene la ms alta prioridad en IR0, y la ms baja en IR7.

El comando de fin de interrupcin EOI lo enva la CPU antes de terminar la rutina de servicio al
controlador de interrupciones. El comando EOI debe ser enviado dos veces cuando hay varios 8259As en
cascada, una vez al maestro, u una vez al esclavo implicado.

17
Profr. Salvador Saucedo
Existen dos formas del comando EOI: especfico y no especfico. El primero consiste en que la CPU
determina cual bit del registro ISR poner a "0"; mientras que en el no especfico, el comando EOI es enviado
al 8259A el que automticamente pondr a "0" el bit de ms alta prioridad en servicio.

El fin automtico de interrupcin ocurre cuando el 8259A opera en el modo AEOI. En este caso no
se requiere recibir el comando EOI desde la CPU, sino que el bit de ISR se regresa a "0" al recibir el ltimo
filo de la secuencia de reconocimiento de interrupcin, por la terminal INTA.

La rotacin automtica de prioridades se usa cuando se quiere dar la misma prioridad a todos los
dispositivos conectados al sistema. En este modo, un dispositivo despus de ser servido recibe la prioridad
ms baja, as que un dispositivo que solicita servicio deber esperar, en el peor de los casos, hasta que
cada uno de los otros siete dispositivos es servido una vez.

La rotacin especfica de prioridades puede ser usada por el programador para fijar la prioridad
ms baja, lo que fija el resto de las prioridades, por ejemplo si se fija a IR4 como la ms baja, IR5 ser la
ms alta, seguida por IR6, etc.

Cada peticin de interrupcin puede ser inhibida individualmente por el registro de enmascara-
miento de interrupciones IMR, programado a travs de OCW1. Cada bit en IMR inhibe un canal de inte-
rrupcin si est en "1". El bit 0 inhibe a IR0, el bit 1 a IR1, y as sucesivamente.

El modo de enmascaramiento especial se usa cuando se desea habilitar a interrupciones de me-


nor nivel que la que se est ejecutando. En este caso el nivel que se ejecuta queda inhabilitado y todos los
dems que no estn inhabilitados por el IMR, quedan habilitados, por lo que una interrupcin de nivel inferior
puede interrumpir.

El modo de encuesta no usa la seal INT o la CPU tiene la bandera IF desactivada, lo que inhabilita
las interrupciones. El servicio a los dispositivos la hace la CPU mediante el comando Poll.

El 8259A responde a dicho comando, durante el ciclo de lectura subsiguiente, con el canal que ne-
cesita ser servido, si procede.

La lectura del estado del 8259A consiste en leer los registros IMR, ISR e IRR. El primero, el registro
de enmascaramiento, puede ser ledo mediante OCW1, pero ejecutando un ciclo de lectura, con la instruc-
cin IN. El registro ISR, puede ser ledo cuando, antes del consabido pulso de lectura, se le enva un co-
mando OCW3 con RR=1 y RIS=1. Lo mismo se hace para IRR, pero aqu se usa RR=1 y RIS=0.

Los modos de filo y nivel de disparo se eligen en ICW1 y fijan si las interrupciones se generan
cuando las IRs tienen una transicin de bajo a alto, en el modo de filo; o generan interrupciones por estar en
el nivel alto, en el modo de nivel. En ambos casos, las entradas IR deben permanecer en alto hasta despus
del primer filo negativo en INTA. En el modo de nivel, la peticin debe ser removida antes de que se reciba
el EOI, para evitar que se genere una segunda interrupcin.

El modo especial completamente anidado se usa cuando en el sistema existen uno o varios
8259As esclavos y se desea conservar las prioridades dentro de cada esclavo. En este caso, el modo com-
pletamente anidado debe programarse en el maestro, con ICW4.

Cuando una peticin de interrupcin proveniente de cierto esclavo est en servicio, dicho esclavo no
queda bloqueado en la lgica de prioridad del maestro y cualquier interrupcin posterior de mayor prioridad
que la que est en servicio, proveniente del mismo esclavo ser atendida. (En el modo normal, un esclavo
es enmascarado cuando una de sus interrupciones es atendida).

Antes de terminar la rutina de servicio, el software debe indagar si la rutina en servicio era la nica
de ese esclavo. Eso se hace enviando a tal esclavo un EOI no especfico y leer a continuacin su ISR. Si
todos los bits son "0", enviar un EOI no especfico al maestro, tambin. Si hay algn "1", no enviar EOI algu-
no.

18
Profr. Salvador Saucedo

MODO EN CASCADA

El 8259A puede conectarse fcilmente en cascada hasta un mximo de ocho esclavos, para tener
hasta 64 niveles de prioridad. El maestro controla a los esclavos a travs de las tres lneas CAS, que funcio-
nan como selectoras de esclavo, durante la secuencia INTA-, de reconocimiento de interrupcin.

En la configuracin en cascada las salidas INT de los esclavos se conectan a las entradas IR del
maestro. Ver prxima figura
Cada 8259A del sistema debe seguir una inicializacin separada y pueden programarse para trabajar en
modos diferentes. El decodificador de direcciones de E/S debe generar seales de seleccin separadas
para los diferentes 8259As.

19
Profr. Salvador Saucedo

20
Profr. Salvador Saucedo

21
Profr. Salvador Saucedo

22
Profr. Salvador Saucedo

23

You might also like