Вы находитесь на странице: 1из 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, salida audible, interrupciones de hardware, rea de experimentacin, interfaz RS-232C para comunicacin 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 interfaz 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 conector macho DB9.

2.

Generador de reloj

Se usar el circuito integrado 8284A-1 de INTEL que produce tres seales que se aplican directamente 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 localidad 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 inactiva 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.

Profr. Salvador Saucedo

Figura 3 Generacin de seales para seleccionar puertos.

DISPOSITIVO TECLADO PIC 8259 TEMPORIZADOR PPI 8255 DESPLIEGUE USART

SEAL STECS59S54S55SLDCS51-

DIR. 00H 20H 40H 60H 80H 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, registro 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 requiere 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 interrupcin 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 servicio; 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 regresado 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 interrupcin (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 interrupcin) 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 manera 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, permite 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 ENse 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 0 0 1 0 0 1 1 x 1 x Y0 0 1 0 0 1 0 1 x 1 x LEER0 0 0 1 1 1 1 x 0 1 ESCR1 1 1 0 0 0 0 x 1 1 S550 0 0 0 0 0 0 1 0 0 Operaciones de lectura Pto. A ducto de datos Pto. B ducto de datos Pto. C ducto de datos Operaciones de escritura Ducto de datos pto. A Ducto de datos pto. B Ducto de datos pto. C Ducto de datos control Funciones de deshabilitar Salida de datos a 3er edo Condicin ilegal 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, ta6

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 cualquiera de los seis modos de operacin. La siguiente tabla muestra cmo se opera al dispositivo. Y1 0 0 1 1 0 0 1 1 x x Y0 0 1 0 1 0 1 0 1 x x LEER1 1 1 1 0 0 0 0 x 1 ESCR0 0 0 0 1 1 1 1 x 1 S54 0 0 0 0 0 0 0 0 1 0 Operacin Escribe contador 0 Escribe contador 1 Escribe contador 2 Escribe reg de control Lee contador 0 Lee contador 1 Lee contador 2 No hay operacin 3er edo No hay operacin 3er edo 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 excitar 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.

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 comercial 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 computadora. En la siguiente figura se muestra como se conecta la memoria mencionada.

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 permanezcan 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 rutinas 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 capacidad de 8 KB. Ver la siguiente figura.

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 espacio 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 localidades 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 DAR EM DAM MBM CBM ABCD DESC IPSP PAS RUP FLAG EJ USU E/S Comando para examinar y modificar los registros. Comando para despliegue automtico de registros. Comando para examinar y modificar localidades de memoria. Comando para despliegue automtico de memoria. Comando para mover bloques de memoria. Comando para comparar bloques de memoria. Comando para exhibir los registros AX, BX, CX y DX. Comando para exhibir los registros DS, ES, SS y CS. Comando para exhibir los registros IP, SP, SI y DI. Comando para ejecutar slo una instruccin. Comando para insertar un punto de ruptura o removerlos todos. Comando para ver las banderas y el registro BP. Comando para correr un programa. Comando para ejecutar comando del usuario. 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 puertos 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 31 1 1 2 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 BZ1 C1 C21, C27 C24 C25 JP3 JP4 R1 R R? U1 U2 U3 U4, U5, U6 U7 U8 U9 U10 U11 U12 U13 U14 U15, U16 U17 U18 U19 U20 U21, U28 U25 U22 U23 U24,U26 U27 Y1

Parte
Zumbador 1 F 10n .18 1.8 Header 17x2 Header 12x2 10K 470 330 8284A-1 Generador de reloj 8088MIN Microprocesador 74HCT245 Tranceptor octal 74HCT573 Cerrojo de 3 estados 82C59A Controlador de interrupcin 74HCT367 Buffer de 3 estados 74HC00 NAND de 2 entradas 74ACT138 Codificador 3 a 8 74HC04 Inversor sxtuple 8255A-5 Interfaz programable 82C54 Contador / Temporizador 74HCT32 OR de 2 entradas 27C64 EPROM de 8kx8 74HC20 NAND de 4 entradas 74HC4075 NOR de 3 entradas 6164 SRAM de 8kx8 USART 8251 74LS74 Flip Flor tipo D 74C923 Controlador teclado LCM2020 Display C. lquido 7438 NAND colector abierto SN75150 intefaz RS232 SN75154 inter RS232 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 prioridades, 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 cuyo ambiente es manejado a base de interrupciones. Acepta peticiones provenientes de equipos perifricos (como el teclado, el manejador de disquete, las comunicaciones, etc.), determina cual de las interrupciones 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 niveles de interrupcin que solicitan servicio en el momento actual. El registro de servicio, ISR, que indica 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 individualmente 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 iniciado el ciclo INTA-, de reconocimiento de interrupcin. La lgica de control de lectura escritura se emplea para aceptar los comandos del 8088, me14

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 transfiere 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. Tiene 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 interrupcin. 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 modos 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 inhibicin 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 controlador 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 recibido en INTA. Mientras el bit de ISR est puesto todas las interrupciones de igual o menor prioridad estarn 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 enmascaramiento de interrupciones IMR, programado a travs de OCW1. Cada bit en IMR inhibe un canal de interrupcin 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 menor 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 necesita 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 instruccin IN. El registro ISR, puede ser ledo cuando, antes del consabido pulso de lectura, se le enva un comando 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 completamente 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 alguno.
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 funcionan 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

Вам также может понравиться