1 Estructura y tecnología de Computadores Módulo E. El subsistema de E/S Tema 1. Interfaces de E/S programables José Manuel Mendías Cuadros Dpto.. Arquitectura de Computadores y Automática Universidad Complutense de Madrid 2 contenidos 1. Estructura y función del interfaz de E/S Repaso de conceptos. Estructura general de un interfaz de E/S. Métodos de transmisión de información entre interfaz y periférico: E/S paralela y E/S serie. Tipos de interfaces de E/S: genéricos y específicos. 2. Interfaces de E/S paralela: MC6821 PIA Organización de la PIA. Programación de la PIA. Ejemplo: conexión del MC68 a una impresora paralelo a través de la PIA 3. Fundamentos de E/S serie Transmisión serie asíncrona. Transmisión serie síncrona. Estructura de un interfaz serie asíncrono. Estructura de un interfaz serie síncrono. Ejemplos de interfaces de E/S serie 4. Interfaces de E/S serie: MC685 ACIA Organización de la ACIA. Programación de la ACIA. Ejemplo: conexión del MC68 a una impresora serie a través de la ACIA
8 8 5 3 Repaso de conceptos 1. estructura y función del interfaz de E/S Los dispositivos periféricos se conectan al computador a través de un INTERFAZ de E/S Interfaz = Controlador = Adaptador = Tarjeta de E/S Funciones del interfaz de E/S Interpretar las órdenes que recibe de la CPU y transmitirlas al periférico Controlar la transferencia de datos entre la CPU y el periférico Conversión de formatos y/o niveles eléctricos Adaptar la diferencia de velocidades entre CPU y periférico (mediante buffers de almacenamiento) Informar a la CPU del estado del periférico Ejemplo conversión de formatos Esquema de conexión CPU-interfaz-periférico Tipo de conversión CPU 8 8 5 Datos en el periférico ANALÓGICOS SERIE DIGITALES PARALELO E: conversión A/D S: conversión A/D E: conversión S/P S: conversión P/S E: -- S: -- CPU BUS Sistema o de E/S INTERFAZ PERIFÉRICO Conexión con periféricos 4 1. estructura y función del interfaz de E/S Estructura general de un interfaz de E/S Interfaz CPU BUS DIR Bus del sistema o de E/S IRQ* BUS DATOS DECODIF. DIR CS* RS R/W* REGISTRO ESTADO LOGICA CONTROL REGISTRO DATOS ENTRADA REGISTRO DATOS SALIDA REGISTRO CONTROL ENT Control ENT. Datos SAL. Datos SAL Control P e r i f é r i c o Un interfaz de E/S se está constituido de 3 elementos básicos Líneas de comunicación con la CPU Permiten a la CPU comunicarse con el interfaz Líneas de comunicación con el periférico Permiten al interfaz comunicarse con el periférico Registros del interfaz Permiten a la CPU programar el interfaz, consultar el estado y enviar o recibir datos hacia/desde el periférico
5 1. estructura y función del interfaz de E/S Estructura general de un interfaz de E/S (cont.) Registros del interfaz Registro de datos de salida Cuando la CPU quiere enviar datos al periférico los escribe sobre el registro(s) de datos de salida Registro de datos de entrada Cuando la CPU quiere recibir datos del periférico los lee desde el registro(s) de datos de entrada Registro de estado Cuando la CPU quiere conocer el estado del periférico, lo hace leyendo el registro de estado: Registro de control Cuando la CPU quiere transmitir una orden al periférico lo hace escribiendo en el registro de control Líneas de comunicación con la CPU Líneas de datos Para transferencia de datos entre la CPU y el interfaz Programación del registro de control y lectura del registro de estado Línea R/W* Para especificar el tipo de operación (lectura o escritura) Línea CS* (Chip Select) y RS (Register Select) Para seleccionar el interfaz y acceder a un registro particular del mismo Normalmente se conectan al bus de direcciones (mediante un descodificador en el caso de CS*) Línea IRQ* Para petición de interrupción cuando el periférico está listo para transmitir/recibir Líneas de comunicación con el interfaz Líneas de datos de entrada y salida Para transferencia de datos entre el interfaz y el periférico Líneas de control de entrada y salida Para transferencia de órdenes al periférico (salida control) y consultar su estado (entrada control) 6 1. estructura y función del interfaz de E/S Métodos de transmisión de información entre interfaz y periférico E/S paralela Utiliza varias líneas de comunicación a través de las cual se se envía varios bits de información de forma simultánea Es adecuada para conexión de dispositivos a distancias cortas, que requieran altas velocidades de transmisión Conexión de elementos dentro de un computador mediante buses Conexión de dispositivos externos a cortas distancias a través de un interfaz paralelo Problema de la E/S paralela Para conectar dispositivos a distancias medias o largas resulta muy costosa Redes de computadores Los dispositivos de baja velocidad no aprovechan el potencial de la transmisión paralela Teclados, ratones, modems, etc. E/S serie Utiliza una única línea de comunicación a través de las cual se se envían varios bits de información de forma secuencial Es menos costosa que la E/S paralela Adecuada para conexión de dispositivos a largas distancias Es útil para conexión de dispositivos de velocidad media o baja Modos de transmisión serie Transmisión asíncrona Transmisión síncrona
7 Tipos de interfaces de E/S De propósito general: Permiten conectar distintos tipos de dispositivos al computador Interfaces de E/S paralela Para conectar dispositivos que realizan E/S paralela (reciben o transmiten varios bits de forma simultánea) Ejemplos: MC6821 PIA, R6522 VIA, MC6832 PI/T, i8255 PPI Interfaces de E/S serie Para conectar dispositivos que realizan E/S serie Ejemplos: MC685 ACIA, R6552 DACIA, MC6854 ADLC, UART i825, USART i8251 De propósito específico: Diseñados para conectar un tipo particular de periférico Controladores de teclado/display Ejemplos: i8279 Controladores de disco y disquete Ejemplos: MC6824, i8271, i8262 Controladores de red de área local Ejemplos: i8251 (controlador Ethernet) Conversores A/D-D/A etc. 1. estructura y función del interfaz de E/S Ejemplos: AD7824 8 2. interfaces de E/S paralela: MC6821 PIA Interfaz MC6821 PIA (Peripheral Interface Adaptor) Interfaz paralelo diseñado para sistemas basados en el MC68 (bus síncrono) Compatible con el MC68 Organización de la PIA Dispone de dos puertos paralelos de 8 bits cada uno (Puerto A y Puerto B) Las líneas de comunicación con el periférico (PA7-PA, PB7-PB), pueden programarse como entradas o como salidas IRQA* E (reloj) R/W* CS CS1 CS2* RS RS1 IRQB* Puerto A DDRA ORA CRA DDRB ORB CRB Puerto B CA1 CA2 PA7-PA PB7-PB CB1 CB2 Registros de datos (ORA y ORB) Se utilizan como registro de entrada o de salida de datos, según como estén programadas las líneas de comunicación con el periférico (PA7-PA y PB7-PB) Registros de sentido de datos (DDRA y DDRB) Se utilizan para programar las líneas de comunicación con el periférico (PA7-PA y PB7-PB) Si DDRA[i] = PAi actúa como línea de entrada Si DDRA[i] = 1 PAi actúa como línea de salida (El mismo funcionamiento para el puerto B) Líneas de control (CA1-CA2, CB1-CB2) Se utilizan como líneas de control de entrada y salida Para examinar el estado de los periféricos Para generar señales de control sobre los mismos Registros de control (CRA, CRB) Se utilizan para programar el funcionamiento de las líneas de control (CA1-CA2, CB1-CB2) Permiten capacitar/decapacitar localmente las interrupciones del interfaz También contienen información de estado
9 2. interfaces de E/S paralela: MC6821 PIA Selección de registros en la PIA Para acceder a cualquier registro de la PIA deben estar activadas las líneas de Chip Select CS-CS1 se activan a alta CS2* se activa a baja Para seleccionar un registro particular se usan las líneas de Register Select RS1 selecciona entre el puerto A o el puerto B Si RS1 = acceso a puerto A Si RS1 = 1 acceso a puerto B RS selecciona entre los registros de datos del puerto (ORx, DDRx) y registro de control (CRx) Si RS = acceso a registros de datos (ORx o DDRx) (Para discriminar entre el registro ORx y DDRx se utiliza el bit 2 del registro de control CRx) Si RS = 1 acceso a registros de control (CRx) Acceso a puerto A Acceso a puerto B RS1 RS CRA2 CRB2 Registro seleccionado x DDRA 1 x ORA 1 x x CRA 1 x DDRB 1 x 1 ORB 1 1 x x CRB 1 Programación de la PIA 2. interfaces de E/S paralela: MC6821 PIA La programación de la PIA se realiza a través de los registros de control CRA y CRB Tipo de transición a detectar por las líneas Cx1 y Cx2 (positiva o negativa) Capacitación/descapacitación de interrupciones cuando se detecta la transición programada Programación de Cx2 como salida para generar pulsos o señales de control específicas CRx Se activa cuando se detecta la transición programada por Cx1 (activa IRQx* si está capacitada) Se activa cuando se detecta la transición programada por Cx2 (activa IRQx* si está capacitada) 7 6 5 4 3 2 1 Trans. Trans. Cx1 Cx2 Programación de Cx2 (línea de entrada/salida) CRx[5]: programa Cx2 como entrada o salida CRx[5] = 1 Cx2 actúa como entrada CRx[5] = Cx2 actúa como salida Si Cx2 programada como entrada CRx[4]: tipo de transición a detectar CRx[4] = transición positiva CRx[4] = 1 transición negativa CRx[3]: Capacitación de IRQx* CRx[3] = IRQx* descapacitada CRx[3] = 1 IRQx* capacitada Program. Cx2 DDRx Program. /ORx Cx1 Programación de Cx1 (sólo entrada) CRx[1]: tipo de transición a detectar CRx[1] = 1 transición positiva CRx[1] = transición negativa CRx[]: Capacitación de IRQx* CRx[] = IRQx* descapacit. CRx[] = 1 IRQx* capacitada Selección del acceso a DDRx o ORx Si Cx2 programada como salida CRx Modo Descripción bit 5 bit 4 bit 3 1 "Handshake" en lectura (A) Cx2 a alta cuando se produce una transición programada por Cx1 o en escritura (B) Vuelve a baja cuando se hace una lectura (A) o una escritura (B) del puerto Cx2 a baja durante un ciclo después de 1 1 Salida pulso una lectura (A) o una escritura (B) del puerto. Puede usarse para indicar al periférico que se ha leído el dato 1 1 Salida manual Cx2 a baja (sigue a bit 3) 1 1 1 Salida manual Cx2 a alta (sigue a bit 3)
11 2. interfaces de E/S paralela: MC6821 PIA Ejemplo: conexión de una impresora paralela al MC68 a través de la PIA MC68 A1 A2 A23-A3 AS* VPA* LDS* VMA* E DECODIF. DIR EN* RS RS1 CS1 CS CS2* Protocolo de comunicación con la impresora (Handshake simple) STB ACK carácter 1 carácter 2 carácter n E PIA MC6821 Puerto A PA7-PA CA2 CA1 Puerto B PB7-PB CB2 CB1 STB ACK IMPRESORA PARALELA 8 BITS Conexión de la PIA (puerto A) a la impresora Líneas de datos de la impresora (D-D7) Se conectan a las líneas PA-PA7 (programadas como salidas) Línea de orden de impresión (STB = Strobe) Se conecta a la línea CA2 (progr. como salida) Un flanco positivo por STB indica a la impresora que hay un nuevo carácter en el registro ORA que debe imprimir Línea de respuesta de dato impreso (ACK) Se conecta a la línea CA1 (entrada) La impresora genera un flanco positivo por ACK cuando ha terminado de imprimir un carácter y está lista para el siguiente 12 2. interfaces de E/S paralela: MC6821 PIA Conexión de la PIA al bus del MC68 Utilizamos el bus síncrono del MC68 (ya que la PIA es un interfaz síncrono) E (señal de reloj) conectada al reloj de la PIA VMA* (Valid Memory Address) conectada a CS2* Conectamos la parte baja del bus de datos (D-D7) a las líneas de datos de la PIA Elegimos direcciones impares para los registros de la PIA LDS* conectada a CS2* A23-A3 conectadas a CS1 a través de un descodificador (elegimos direcciones no usadas por la memoria) A1-A2 conectadas a RS-RS1 Conectamos VPA* a la salida del descodificador para que el MC68 utilice interrupciones autovectorizadas Programa de impresión a través de la PIA con E/S programada con espera de respuesta Inicialización de la PIA 1. Programamos las líneas PA-PA7 como salida: DDRA 11111111 = $FF (CRA[2] debe tener el valor ) 2. Programación del registro de control CRA: CRA XX11X11 = $36 a) Programamos CA2 como salida manual (haciendo que siga al valor de CRA3) para generar la señal STB CRA[4] 1; CRA[3] 1 b) Programamos para que CA1 detecte un pulso positivo (señal ACK) y descapacitamos interrupciones CRA[1] 1; CRA[] c) CRA[2] 1 para que quede seleccionado el registro de datos ORA Transmisión de un carácter a la impresora 1. Enviar carácter a ORA (datos válidos en PA-PA7) 2. Generar manualmente pulso de Strobe Poner CA2 a (poniendo un en CRA[3] CRA XX1111 = $36) Poner CA2 a 1 (poniendo un 1 en CRA[3] CRA XX11111 = $3E) 3. Comprobar valor de CRA[7] 4. Si CRA[7]= (impresora no ha generado el pulso positivo ACK) volver a 3
13 2. interfaces de E/S paralela: MC6821 PIA SÍ Programar PIA Inicializar puntero del texto A #TEXTO Leer siguiente carácter D (A)+ Final de texto? D = #EOT? Enviar carácter a impres. ORA D Generar pulso STB CRA #$36 CRA #$3E ACK activada? CRA[7]=1? NO NO SÍ FIN Programa ensamblador ORA EQU $ee1 Etiqueta de ORA DDRA EQU $ee1 Etiqueta de DDRA (=ORA) CRA EQU $ee3 Etiqueta del registro CRA MAXCAR EQU 1 Máx. nº de caracteres del texto EOT EQU 2 Carácter ASCII de fin de texto * TEXTO DS.B MAXCAR Reservamos MAXCAR bytes * para el texto * INICIO MOVE.B #,CRA Seleccionar DDRA (CRA[2] ) MOVE.B #$FF,DDRA Programar PA-PA7 como salidas MOVE.B #$36,CRA Programar el registro CRA MOVEA.L #TEXTO,A Llevar dir. de comienzo del texto a A BUCLE MOVE.B (A)+,D Leer carácter e incrementar A * para apuntar al siguiente carácter CMP #EOT,D Comprobar si es el final de texto BEQ FIN Si es final de texto vamos a FIN MOVE.B D,ORA Enviar carácter a impresora MOVE.B #$36,CRA Generar señal STB CA2 = MOVE.B #$3E,CRA Generar señal STB CA2 = 1 LEE_CRA BTST.B #7,CRA Chequer CRA[7] BEQ LEE_CRA Si CRA[7] = carácter no impreso BRA BUCLE Si CRA[7] = 1 siguiente carácter FIN TRAP #15 FIN: Regresar al programa monitor DC.W $1 14 Modo de transmisión serie asíncrona El emisor y el receptor utilizan señales de reloj distintas Problema Aunque utilicen la misma frecuencia, los relojes del emisor y el receptor pueden estar desfasados Aunque ambos relojes estén perfectamente sincronizados, transcurrido un cierto tiempo tenderán a desincronizarse Solución El receptor y el emisor resincronizan sus relojes al inicio de cada carácter Con cada carácter se incluyen un bit de start y uno (o varios) bits de stop Polaridad opuesta provoca una transición al inicio de cada carácter Esta transición es utilizada por el receptor para sincronizarse con el emisor Es útil únicamente a bajas velocidades de transmisión Desde unos pocos bps hasta varios Kbps 3. fundamentos de la E/S serie Errores por desincronización de los relojes 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 START Errores Sincronización mediante bits de start y stop Punto medio bit destart Periodo 1 bit Caracter transmitido: $8B (1111) 1 1 1 1 DATOS muestreos en recepción datos transmitidos muestreo sincronizado muestreo desincronizado car1 car2 car3 car4 LSB MSB PARI (par) STOP t
15 Modo de transmisión serie síncrona El emisor y el receptor utilizan la misma señal de reloj 3. fundamentos de la E/S serie Puede utilizarse una línea independiente para transmitir la señal de reloj en paralelo con los datos Mayor coste de la línea Puede codificarse la señal de reloj junto con los datos Codificación bipolar Codificación Manchester Codificación Manchester diferencial Etc. 1 1 1 1 1 Código Manchester: Codificación por Nivel = 1 = Codificación Manchester Reloj extraído Es necesaria para transmisión serie a velocidades medias y altas Del orden de Mbps o Gbps 16 Esquema de un interfaz serie asíncrono 3. fundamentos de la E/S serie Líneas TxD y RxD Para transmisión y recepción de datos Líneas Hin y Hout Líneas de control o handshake para realizar los protocolos de comunicación Registro de desplazamiento de transmisión Realiza la conversión serie/paralelo Registro de desplazamiento de recepción Realiza la conversión paralelo/ serie Generador de reloj Genera la señal de reloj de la transmisión y la recepción Registro de estado Bus Datos R/W* Permite detectar el estado de las líneas de handshake de entrada IRQ CS* RS Reg Estado Reg Control Lógica Control Permite conocer el estado de los registros de recepción y transmisión (llenos o vacíos) Registro de control Permite programar los parámetros de la transmisión Velocidad de transmisión Nº de bits de stop (1, 1.5 ó 2) Nº de bits por carácter (5, 6, 7 u 8) Tipo de paridad (par, impar, no paridad) Permite programar el funcionamiento de las líneas de handshake de salida Permite capacitar/descapacitar localmente las interrupciones... Reg Trans. Reg Desp. T Reg Desp. R Reg Recep. Reloj Trans. Reloj Recep. Hin TxD Generador Reloj RxD Hout
17 Esquema de un interfaz serie síncrono 3. fundamentos de la E/S serie Líneas TxD y RxD Para transmisión y recepción de datos Líneas Hin y Hout Líneas de control o handshake para realizar los protocolos de comunicación Registro de desplazamiento de transmisión Realiza la conversión serie/paralelo Mezcla la señal de reloj junto con los datos Registro de desplazamiento de recepción Realiza la conversión paralelo/serie IRQ Bus Datos R/W* Extrae la señal de datos a partir de la señal recibida Extractor de reloj Extrae la señal de reloj a partir de la señal recibida Colas (FIFO) de transmisión y recepción Para adaptar la velocidad de los dispositivos Registro de estado CS* RS Reg Estado Reg Control Lógica Control Permite detectar el estado de las líneas de handshake de entrada Permite conocer el estado de los registros y las colas de recepción y transmisión Registro de control Permite programar los parámetros de la transmisión Permite programar el funcionamiento de las líneas de handshake de salida Permite capacitar/descapacitar localmente las interrupciones... FIFO Trans. FIFO Recep. Reloj Trans. Reg Desp. T Reg Desp. R Reloj Recep. Hin Generador Reloj TxD RxD Extractor Reloj Hout 18 4. interfaces de E/S serie Ejemplos de interfaces de E/S serie Interfaces para comunicación serie asíncrona i825 UART (Universal Asynchronous Receiver-Transmitter) MC685 ACIA (Asynchronous Communications Interface Adapter) R6552 DACIA (Dual Asynchronous Communications Interface Adapter), compatible con Motorola 68/68 Interfaces para comunicación serie síncrona i8273 (Programmable HDLC/SDLC Protocolo Controller) MC6852 ADLC (Advanced Data-Link Controller) MC6854 SSDA (Synchronous Serial Data Adapter) Interfaces para comunicación serie síncrona y asíncrona i8251 USART (Universal Synchronous-Asynchronous Receiver-Transmitter) MC68661 EPCI (Enhaced Programmable Communications Interface)
19 4. interfaces de E/S serie: MC685 ACIA Interfaz MC685 ACIA (Asynchronous Communications Interface Adapter) Interfaz de comunicación serie asíncrona diseñado para sistemas basados en el MC68 (bus síncrono) Compatible con el MC68 Organización de la ACIA CS TDR RDR TxData RxData Línea de transmisión de datos Línea de recepción de datos Líneas de comunicación con la CPU CS1 CS2* E R/W* RS CR SR TxCLK RxCLK CTS* RTS* DCD* Señal de reloj de la transmisión Señal de reloj de la recepción Suelen conectarse al mismo oscilador Señales de control de la transmisión para protocolos de comunicación (handshake) Son un subconjunto de las líneas del RS-232 IRQ* Registro de transmisión de datos (TDR) Para enviar datos a través de TxD Realiza la conversión paralelo/serie Registro de recepción de datos (TDR) Para leer los datos recibidos a través de RxD Realiza la conversión serie/paralelo Registro de estado (SR) Información del estado de los registros RDR y TDR Información del estado de las líneas de control Información sobre situaciones de error Registro de control (CR) Programación de los parámetros de la transferencia Programación de las líneas de control Capacitación/descapacitación local de interrupciones 2 Selección de registros de la ACIA 4. interfaces de E/S serie: MC685 ACIA La ACIA dispone de 4 registros de 8 bits cada uno Dos registros de escritura: TDR y CR Dos registros de lectura: RDR y SR Para acceder a cualquier registro de la ACIA deben estar activadas las líneas de Chip Select (CS) CS-CS1 se activan a alta CS2* se activa a baja Para seleccionar un registro particular se usan las línea de Register Select (RS) y R/W* Si RS = acceso a registros de control y estado Si RS = 1 acceso a registros de transmisión y recepción Señales de control de la transmisión Son un subconjunto de las líneas RS-232 para la conexión y control de un módem RTS* (Request to Send) fi Solicitud de envío SR 1 1 R/W* Línea de salida que activa la CPU cuando quiere solicitar permiso para enviar un dato al módem CTS* (Clear to Send) fi Preparado para el envío 1 1 Reg. Selecc. CR (escritura) SR (lectura) TDR (escritura) RDR (lectura) Línea de entrada que activa el módem cuando está listo para recibir datos de la CPU (en respuesta a RTS) y enviarlos a través de la línea telefónica DCD* (Data Carrier Detect) fi Detección de portadora Línea de entrada que activa el módem cuando detecta datos de llegada por la línea telefónica
21 Programación de la ACIA 4. interfaces de E/S serie: MC685 ACIA La programación de la ACIA se realiza a través del registro de control CR CR 1 2 3 4 5 6 7 Selecc. Frecuencia Selecc. Formato Control Transmis. Control Recepc. Selección de la frecuencia Puede modificarse la frecuencia de transmisión o recepción dividiendo la frecuencia del oscilador por 1, 16 ó 64 CR[1] CR[] Función División por 1 1 División por 16 1 División por 64 1 1 Reset ACIA Selección del formato Permite seleccionar los siguientes parámetros: Nº de bits de datos (7 u 8) Tipo de paridad (par, impar, no paridad) Nº de bits de stop (1 ó 2) CR[4] CR[3] CR[2] Función 7 bits datos + paridad par + 2 bits stop 1 7 bits datos + paridad impar + 2 bits stop 1 7 bits datos + paridad par + 1 bit stop 1 1 7 bits datos + paridad impar + 1 bit stop 1 8 bits datos + no paridad + 2 bits stop 1 1 8 bits datos + no paridad + 1 bit stop 1 1 8 bits datos + paridad par + 1 bit stop 1 1 1 8 bits datos + paridad impar + 1 bit stop Control de la Transmisión CR[6] CR[5] Función Descapacita interrupciones por TDR vacío Pone RTS* a baja 1 Capacita interrupciones por TDR vacío Pone RTS* a baja 1 Descapacita interrupciones por TDR vacío Pone RTS* a alta 1 1 Descapacita interrupciones por TDR vacío Pone RTS* a baja y TxD a baja ("break") Control de la Recepción CR[7] Función Descapacita interrupciones por RDR lleno 1 Capacita interrupciones por RDR lleno 22 Registro de estado de la ACIA (SR) 4. interfaces de E/S serie: MC685 ACIA La programación de la ACIA se realiza a través del registro de control SR Bit RDR Lleno Se activa cuando se ha recibido un carácter completo (el carácter recibido está almacenado en RDR) Se desactiva al leer RDR 1 TDR Vacío Se activa cuando se ha transmitido completamente el contenido de TDR Se desactiva al escribir sobre TDR 2 CDC* Activado Indica si la línea CDC* está activada SR 3 4 5 6 CTS* Activado Error Formato Error Solapam. Recepc. Error Paridad Indica si la línea CTS* está activada Error de formato Se activa cuando se recibe un carácter con un formato erróneo (nº de bits de datos o de stop erróneo) Error de solapamiento de la recepción Se activa cuando se recibe un nuevo carácter por RxD antes de que el anterior haya sido leído Error de paridad Se activa cuando la paridad calculada no coincide con el valor del bit de paridad del carácter recibido 7 IRQ Flag de interrupción Refleja el estado de la línea de petición de interrupción IRQ*
23 4. interfaces de E/S serie: MC685 ACIA Ejemplo: conexión de una impresora serie al MC68 a través de la ACIA MC68 A1 A23-A2 AS* VPA* LDS* VMA* E DECODIF. DIR EN* Programación de la ACIA para realizar E/S programada con espera de respuesta CS1 CS CS2* 1. Control de recepción No permitir interrupciones por recepción CR[7]= 2. Control de transmisión Transmisión sin interrupciones y activación de RTS* CR[6]=; CR[5]= 3. Selección del formato 8 bits de datos, no paridad, 1 bit de stop CR[4]=1; CR[3]=; CR[2]=1 4. Selección de la frecuencia Dividir frecuencia por 16 CR[1]=; CR[]=1 Valor de CR: %111 = $15 RS E ACIA MC6825 TxD RTS* CTS* RxD DSR* DTR* IMPRESORA SERIE Conexión de la ACIA a la impresora Línea de transmisión(txd) Se conecta a la línea de recepción (RxD) de la impresora Línea RTS* (Request to Send) Se conecta a la línea DSR* (Data Set Ready) de la impresora Estará activada durante toda la transmisión (desde el primer carácter hasta el último) Línea de CTS* (Clear to Send) Se conecta a la línea DTR* (Data Terminal Ready) de la impresora La impresora activa esta línea cuando ha impreso un carácter y está preparada para recibir el siguiente 24 4. interfaces de E/S serie: MC685 ACIA Programar ACIA CR #$15 Inicializar puntero del texto A #TEXTO Leer siguiente carácter D (A)+ Final de texto? D = #EOT? NO Enviar carácter a impres. TRD D TDR vacío? SR[1]=1? SÍ CTS* activado? SR[3]=1? SÍ SÍ NO NO FIN Programa ensamblador TDR EQU $ee1 Etiqueta de TDR CR EQU $ee3 Etiqueta de CR SR EQU $ee3 Etiqueta de SR (=CR) MAXCAR EQU 1 Máx. nº de caracteres del texto EOT EQU 2 Carácter ASCII de fin de texto * TEXTO DS.B MAXCAR Reservamos MAXCAR bytes * para el texto * INICIO MOVE.B #$15,CR Programar ACIA MOVEA.L #TEXTO,A Llevar dir. de comienzo del texto a A BUCLE MOVE.B (A)+,D Leer carácter e incrementar A * para apuntar al siguiente carácter CMP #EOT,D Comprobar si es el final de texto BEQ FIN Si es final de texto vamos a FIN MOVE.B D,TDR Enviar carácter a impresora TEST_TDR BTST.B #1,SR Chequear SR[1] (TDR vacío) BEQ TEST_TDR Si SR[1] = TDR no vacío TEST_CTS BTST.B #3,SR Chequear SR[3] (CTS* activado) BEQ TEST_CTS Si SR[3] = CTS* desactivado BRA BUCLE Pasar a imprimir siguiente carácter FIN TRAP #15 FIN: Regresar al programa monitor DC.W $1