La Interfaz Periférica Programable 82C55 El Intel 82C55A es un dispositivo programable de E/S de alto-rendimiento de propósito general, versión CHMOS del estándar de la industria 8255A el cual se diseñó para usarse con todos los microprocesadores INTEL y la mayoría de los demás. El provee 24 patitas de E/S las cuales pueden ser individualmente programadas en 2 grupos de 12 y usarse en 3 modos principales de operación. El 82C55A es compatible en terminales con los NMOS 8255A y 8255A-5. En el MODO 0, cada grupo de 12 patitas de E/S puede ser programado en conjuntos de 4 y 8 para ser entradas o salidas. En el MODO 1, cada grupo puede ser programado para tener 8 líneas de entrada o salida. Tres de las 4 patitas remanentes se usan para protocolo (handshaking) y control de señales de interrupción. El MODO 2 es una configuración de bus con estrobo, tipo bi-direccional. El 82C55A se fabrica con la tecnología avanzada CHMOS III de Intel la cual provee de bajo consumo de energía con rendimiento igual o mayor que el producto equivalente NMOS. El 82C55A está disponible en paquetes de 40-pines tipo DIP y 44-pines en portadora de plástico (PLCC).
Figura 1. Diagrama a bloques de la interfaz paralela programable.
82C55A: DESCRIPCION FUNCIÓNAL General El 82C55A es una interfaz programable periférica y es un dispositivo diseñado para uso en sistemas microcomputadoras de Intel. Su función es aquella de una interfaz de propósito general de E/S hacia componentes de interfaces periféricas del equipamiento de un sistema de buses en una microcomputadora. La configuración funcional del 82C55A es programada mediante el software del sistema de modo que normalmente no se necesita lógica externa para interfaz a dispositivos periféricos o a estructuras.
Prof. S. Saucedo
1
ICE/2008
Buffer del Bus de Datos Tal buffer de tres estados, bi direccional, de 8 bits es usado para interfaz al 82C55A hacia el bus de datos del sistema. Los datos son transmitidos o recibidos mediante el buffer a consecuencia de la ejecución de instrucciones de de entrada o salida por parte de la CPU. Palabras de control y de estatus de la información son también transferidas a través del buffer del bus de datos.
Lógica de Control para Leer/Escribir La función de tal bloque es el administrar todas las transferencias internas y externas tanto de datos como de control o de estatus. El acepta entradas desde los buses de dirección y de control de la CPU y a su vez, envía comandos hacia ambos de los Grupos de Control.
Controles para Grupo A y Grupo B La configuración funcional de cada puerto es programada mediante el software de los sistemas. En esencia, la CPU “saca” una palabra de control hacia el 82C55A. Tal palabra de control contiene información tales como ”modo”, “bit a 1'”, “bit a 0”, etc., que inicializa la configuración funcional del chip 82C55A. Cada bloque de Control (Grupo A y Grupo B) acepta “comandos” para Leer/Escribir desde la lógica de Control, recibe “palabras de control” desde el bus de datos interno y envía los comandos adecuados hacia sus puertos asociados. Control Grupo A - Puerto A y Puerto C superior (C 7 - C4) Control Grupo B - Puerto B y Puerto C inferior (C 3 - C0) El registro con la palabra de control puede ser tanto escrito y leído según muestra en la tabla decodificación de la tabla en las descripciones de los pines. La figure 6 ilustra el formato de la palabra de control ya sea para operaciones de Leer o de Escribir. Cuando la palabra de control es leída, el bit D7 será siempre un 1 lógico, como lo implica la información del modo de la palabra de control.
Puertos A, B y C El integrado 82C55A contiene tres puertos de 8 bits (A, B, y C). Todos ellos pueden ser configurados en una amplia variedad de características funcionales mediante el software del sistema pro cada uno tiene sus propios aspectos especiales o “personalidad” para aumentar todavía más la eficiencia y la flexibilidad del 82C55A.
Puerto A. Un latch/buffer para datos de salida de 8 bits y una entrada latch buffer de 8 bits. Dispositivos de subida “pull-up” y bajada “pulldown” de retención de bus están presentes en el puerto A.
Puerto B. Un latch/buffer para datos de entrada/salida de 8 bits. Sólo dispositivos de subida “pull-up” de retención de bus están presentes en el puerto B.
Puerto C. Un latch/buffer para datos de salida de 8 bits y una entrada tipo buffer de 8 bits (no latch para entrada). Tal puerto puede ser dividido en dos puertos de 4 bits por el control de modo. Cada puerto de 4 bits contiene un latch de 4 bits y se puede usar para las salidas de señales de control y entradas de señales de estatus en conjunción con puertos los A y B. Sólo dispositivos “pull-up” de retención de bus están presentes en el Puerto C. Ver la Figura 4 para la configuración de los circuitos de la retención de bus para Puerto A, B, y C.
Prof. S. Saucedo
2
ICE/2008
82C55A: DESCRIPCION OPERACIONAL Selección del Modo Hay tres modos básicos de operación que pueden ser seleccionados mediante el software del sistema: Modo 0 ⎯ Entrada/salida Básicas Modo 1 ⎯ Entrada/salida con Estrobo Modo 2 ⎯ Bus Bi-direccional Tabla 1. Descripción de terminales para paquetes DIP y PLCC.
Prof. S. Saucedo
3
ICE/2008
Cuando la entrada reset se hace “alta” los tres puertos serán puestos al modo de entrada con todas las 24 líneas de los puertos mantenidas a un nivel 1 lógico mediante los dispositivos internos de retención del bus (ver nota de la figura 4). Después que el reset es removido el 82C55A puede permanecer en el modo de entrada con no inicialización adicional requerida. Ello elimina la necesidad de dispositivos de pullup o de pulldown en diseños “sólo CMOS”. Durante la ejecución del programa del sistema, cualquiera de los otros modos puede ser seleccionado mediante el uso de una sencilla instrucción de salida. Eso permite a un solo 82C55A el servir a una variedad de dispositivos periféricos con una simple rutina software de mantenimiento. Los modos para Puerto A y Puerto B pueden ser separadamente definidos, mientras que el Puerto C se divide en dos partes según se requiera mediante las definiciones para el Puerto A y Puerto B. Todos los registros de la salida, incluyendo los flip-flops el estatus, serán reseteados siempre que el modo sea cambiado. Tales modos pueden ser combinados de modo que la definición de sus funcionalidades puede ajustarse a casi toda estructura de E/S. Por ejemplo; el grupo B puede ser programado en el Modo 0 para monitorear cierres de un simple switch o exhibir resultados computacionales, y el grupo A pudiera ser programado en el Modo 1 para monitorear un teclado o leer una cinta en un programa a base de interrupciones.
Las definiciones de modo y las combinaciones posibles de modos pueden parecer confusas al principio pero tras una revisión metódica de la operación completa del dispositivo una simple, lógica técnica de E/S emergerá. El diseño del 82C55A ha sido tomado en consideración para lograr cosas como
Prof. S. Saucedo
4
ICE/2008
eficientes placas para PCs, la definición de señales de control vs PC layout y completa funcionalidad y flexibilidad para soportar casi cualquier dispositivo periférico sin usar lógica externa. Tal diseño representa el máximo uso de las patitas disponibles.
Capacidad de Set/Reset a un Simple Bit Cualquiera de los ocho bits del puerto C puede ser puesto a 1 (Set) o a 0 (Reset) usando una simple instrucción de Salida (MOV). Esta característica reduce los requisitos del software en aplicaciones basadas en Control. Cuando el Puerto C está siendo usado como status/control por el Puerto A o el B, tales bits pueden ser puestos a 1 (set) o a 0 (reset) al usar la operación de Bit Set/Reset justo como si ellos fueran puertos con datos de salida.
Funciones de Control de Interrupción Cuando el 82C55A es programado para operar en modo 1 o en modo 2, las señales de control que pueden ser usadas como entradas de petición de interrupción hacia la CPU. Las señales de petición de interrupción, generadas desde el puerto C, pueden ser inhibidas o habilitadas al hacer 1 o 0 el asociado flip-flop INTE, usando la función bit set/reset del puerto C. Tal función permite al Programador el permitir o no a dispositivos específicos de E/S para interrupción a la CPU no afectando a cualquier otro dispositivo en la estructura de interrupción. Definición del flip-flop INTE: (BIT-SET) ⎯ INTE es 1 (SET) ⎯ Interrupción es habilitada (BIT-RESET) ⎯ INTE es 0 (RESET) ⎯ Interrupción es deshabilitada Nota: Todos los flip-flops son automáticamente reset durante la selección de modo y Reset al dispositivo.
Modos de Operación Modo 0 (Entradas/Salidas Básicas). Tal configuración funcional provee operaciones de entradas y salidas simples para cada uno de los tres puertos. No se requieren señales de protocolo (handshaking), pues los datos son simplemente escritos o leídos desde un puerto especificado.
Modo 0 Definiciones Funcionales Básicas: Dos puertos de 8 bits y dos puertos de 4 bits. • Cualquier puerto puede ser entrada o salida. • Salidas son latcheadas. • Entradas no son latcheadas. • 16 diferentes configuraciones de Entrada/Salida son posibles en este Modo. •
Algunas combinaciones del modo 0 del 82C55. D 7 = 1, D6 = D5 = 0. Prof. S. Saucedo
5
ICE/2008
Capacidad de manejo de Corriente Cualquier salida en el Puerto A, B o C puede sumir o suministrar 2.5 mA. Tal capacidad permite al 82C55A manejar directamente drives tipo Darlington y exhibidores de alto-voltaje que demanden tal corriente como fuente o sumidero.
Leyendo estatus del Puerto C En Modo 0, el puerto C transfiere datos hacia o desde los dispositivos periféricos. Cuando el 82C55A es programado para funcionar en Modos 1 o 2, el puerto C genera o acepta señales de protocolo“handshaking” con los dispositivos periféricos. Leyendo los contenidos del Puerto C permite al programador probar o verificar el “estatus” de cada dispositivo periférico periférico y cambiar el flujo del programa en consecuencia. No hay instrucciones especiales para leer la información de estatus desde el Puerto C. Una operación normal de lectura de Puerto C se ejecuta para llevar a cabo esta función. (MOVX).
Prof. S. Saucedo
6
ICE/2008