Download Descarga

Document related concepts
no text concepts found
Transcript
MICROPROCESADORES Y MICROORDENADORES CATEDRA: DIGITAL II DEPARTAMENTO DE SISTEMAS INGENIERIA ELECTRONICA AUTOR: ING. ENRIQUE GIANDOMENICO AÑO: 1998
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 1 de 136 MICROPROCESADORES Y ............................................................................1 MICROORDENADORES .................................................................................1 1. DESCRIPCION GENERAL.............................................................................................................5 2. CASOS PARTICULARES................................................................................................................5 2.1. INTEL 80186 ................................................................................................................................................................5 2.2. M OTOROLA MC68HC11 .........................................................................................................................................6 2.3. INTEL 8051 ..................................................................................................................................................................6 3. INTEL 80186 PROCESADOR DE INSTRUCCIONES. .............................................................7 3.1. UNIDAD DE EJ ECUCIÓN DE INSTRUCCIONES(EU).....................................................................................7 3.1.1. RE GISTROS DE USOS GENERALES: .........................................................................................................................................................7 3.2. UNIDAD DE INTERFACES C ON EL BUS (BIU) ................................................................................................9 3.3. ACCESO AL ESPACIO DE MEMORIA................................................................................................................9 3.3.1. IM PLEMENTACIÓN DE L STACK .............................................................................................................................................................11 3.4. ACCESO AL ESPACIO DE ENTRADA/SALIDA............................................................................................. 11 4. CONJ UNTO DE INSTRUCCIONES ...........................................................................................12 5. INSTRUCCIONES A NIVEL ASSEMBLER..............................................................................12 5.1. INSTRUCC IONES DE M OVIMIENTO DE DATOS........................................................................................ 13 5.2. INSTRUCC IONES MATEMATICAS.................................................................................................................. 16 5.2.1. ADIC ION............................................................................................................................................................................................................16 5.2.2. SUBTRACCION ...............................................................................................................................................................................................18 5.2.3. MULTIPL ICACION ........................................................................................................................................................................................21 5.2.4. DIVISION ...........................................................................................................................................................................................................23 5.3. INSTRUCC IONES DE TRANSFERENCIAS ..................................................................................................... 26 5.3.1. TRANSFERENCIAS CONDICIONALES ...................................................................................................................................................26 5.3.1.1. INTERPRETACION DE LOS CODIGOS DE TRANSFERENCIAS CONDICIONALES ....................................................29 5.3.2. TRANSFERENCIAS INCONDICIONALES ...............................................................................................................................................31 5.4. CONTROL DE ITERACC IONES......................................................................................................................... 32 5.5. INTERRUPCIONES ................................................................................................................................................ 33 5.6. INSTRUCC IONES DE MANIPULACION DE BITS ........................................................................................ 34 5.7. INSTRUCC IONES DE CONTROL DEL PROCESADO R .............................................................................. 38 5.7.1. OP ERACIONE S CON FLAGS ......................................................................................................................................................................38 5.7.2. OP ERACIONE S DE SINCRONIZ ACION EXTERNA .............................................................................................................................39 5.7.3. NO OPERACION..............................................................................................................................................................................................39 6. DIRECCIONAMIENTO DE MEMORIA ...................................................................................40 7. UNIDAD DE INTERFACES DEL BUS (BUS INTERFACE UNIT­ BIU).............................42 7.1. C ICLO DE BUS (BUS CYCLE)............................................................................................................................. 43 7.2. TIEMPOS DEL C ICLO DE BUS PARA UNA LECTURA .............................................................................. 47 7.2.1. AISLANDO EL DATA BUS CON UN BUFF ER. BUFF ERING THE DATA BUS ..............................................................................48 7.3. TIEMPOS DEL C ICLO DE BUS PARA UNA GRABACION......................................................................... 50 DEFINIC ION DE LOS VALORES DE LA HOJ A DE ESPECIFICACIONES................................................... 52 7.5. EJ EMPLO DE ANALISIS DE LOS TIEMPOS.................................................................................................. 54 8. BLOCK DE CONTROL DE PERIFERICOS (PCB). ................................................................57
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 2 de 136 9. UNIDAD SELECTORA DE CHIPS. CHIP SELECT UNIT (CSU) ........................................59 9.1. DECRIPCION FUNCIONAL................................................................................................................................. 59 9.2. R ESGISTROS DE CONTROL DE LA CSU ....................................................................................................... 61 10. UNIDAD DE CONTROL DE INTERRUPCIONES (ICU).....................................................63 10.1. DESCRIPCION FUNC IONAL ............................................................................................................................ 63 10.2. PRIORIDADES Y ENMASCARAMIENTOS................................................................................................... 63 10.3. ARQUITECTURA DEL 8259A ........................................................................................................................... 64 10.3.1. SECUENCIA TIP ICA EN E L PROCESO DE INTERRUPCIONES....................................................................................................65 10.4. ACTIVAC ION DE LA SEÑAL INT ................................................................................................................... 66 10.4.1. E SQUEM A DE P RIORIDADES ..................................................................................................................................................................66 10.4.2. M ODO DE OP ERACIÓN .............................................................................................................................................................................67 10.4.3. E STADO DE LO S BIT S DEL IRR, ISR Y IMR .......................................................................................................................................67 10.5. BLANQUEO DEL BIT EN EL INTERRUP SERVIC E REGISTER............................................................ 67 10.6. CONECCION EN CASCADA DEL 8259A........................................................................................................ 68 10.7. ESQUEMA DE LA UNIDAD DE CONTROL DE INTERRUPCIONES EN EL 8259A........................... 70 10.8. PROGRAMANDO EL MODULO 8259A .......................................................................................................... 71 10.8.1. REGISTROS DE CONTROL Y COMANDOS DEL 8259A ...................................................................................................................71 10.8.2. SECUENCIA DE INIC IALIZAC ION.........................................................................................................................................................71 10.8.2.1. ICW1 ..............................................................................................................................................................................................72 10.8.2.2. ICW2 ..............................................................................................................................................................................................72 10.8.2.3. ICW3 ..............................................................................................................................................................................................72 10.8.2.4. ICW4 ..............................................................................................................................................................................................73 10.8.3. COMANDOS DE OPERAC IÓN ..................................................................................................................................................................73 10.8.3.1. OCW1.............................................................................................................................................................................................73 10.8.3.2. OCW2.............................................................................................................................................................................................73 10.8.3.3. OCW3.............................................................................................................................................................................................73 10.8.4. F UENTE S DE INTERRUPCION INT ERNAS ..........................................................................................................................................74 10.9. EJ EMPLOS DE PROGRAMAS .......................................................................................................................... 75 10.10. EXPANDIENDO LA CANTIDAD DE SEÑALES DE INTERRUPC ION............................................... 77 11. UNIDAD TEMPORIZADORA Y DE CONTADORES. .........................................................79 11.1. DESCRIPCION FUNCIONAL. ........................................................................................................................... 79 11.2. DIAGRAMA OPERAC IONAL............................................................................................................................ 80 11.3. REGISTROS ASOCIADOS A CADA CONTADOR O TIMER.................................................................... 82 11.4. PROGRAMACION DE LA UNIDAD TEMPORIZADORA Y DE CONTADORES. ............................... 83 11.5. COMENTARIOS ADICIONALES ..................................................................................................................... 83 11.5.1. F UENTE S P ARA LA OBTENCION DEL CLOCK DE LOS CONTADORES. .................................................................................83 11.5.2. M ODOS DE OPERAC IÓ N DE LOS CONTADORES ............................................................................................................................83 11.5.3. RE – INICIAL IZACION. ..............................................................................................................................................................................84 11.5.4. ONDAS RECTANGULARES Y UN – DISP ARO.....................................................................................................................................84 11.5.5. HABIL IT ANDO Y DESHABILITANDO LOS CONTARORE S. ..........................................................................................................85 11.5.6. INTERRUPCIONE S ......................................................................................................................................................................................85 11.5.7. T IEMPOS DE SETUP Y RET ENCION DE LAS SEÑALES DE ENTRADA.....................................................................................85 11.6. EJ EMPLOS ............................................................................................................................................................. 85 11.6.1. IMP LEM ENTAC ION DE UN RELOJ .......................................................................................................................................................85 11.6.1.1. DESCRIPCION GENERAL.........................................................................................................................................................85 11.6.1.2. PROGRAMA.................................................................................................................................................................................87 11.6.2. GENE RAR UNA ONDA RECTANGULAR. .............................................................................................................................................90 12. PREGUNTAS, PROBLEMAS Y ALGUNAS SOLUCIONES ...............................................92 TRANSFERENCIAS DE INFORMACION ENTRE EL MICRO Y EL MEDIO AMBIENTE ...................................................................................................106 1. INTERFACES PARALELA........................................................................................................ 106 1.1. PORTS PARALELOS EN EL 80186 .................................................................................................................. 108 1.2. NOTA ESPECIAL .................................................................................................................................................. 110
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 3 de 136 2. INTERFACE SERIE .................................................................................................................... 111 2.1. ESTUDIO DE UN CASO PARTICULAR .......................................................................................................... 111 2.1.1. CASO CON RUIDO EJ EMP LO N° 1 .........................................................................................................................................................113 2.1.2. CASO CON RUIDO EJ EMP LO N° 2 .........................................................................................................................................................113 2.1.3. CASO DE ERROR EJ EMPLO N° 3............................................................................................................................................................114 2.1.4. CASO DE ERROR EJ EMPLO N°4.............................................................................................................................................................115 2.1.5. CASO DE ERROR EJ EMPLO N° 5............................................................................................................................................................115 2.1.6. CASO DE ERROR EJ EMPLO N°6.............................................................................................................................................................115 2.2. DESVIACIONES ADMISIBLES EN LAS VELOCIDADES DE TRANSM ICION................................... 116 2.2.1. VELOC IDAD DE TRANSM ISION MENOR A LA ASUM IDA ............................................................................................................116 2.2.2. VELOC IDAD DE TRANSM ICION SUPERIOR A LA ASUM IDA ......................................................................................................117 2.3. TRANSM ICION SERIAL EN EL 80186............................................................................................................ 118 2.4. M ODALIDADES DE TRANSMICION SERIE ................................................................................................ 118 2.4.1. MODOS 1, 3 Y 4 ..............................................................................................................................................................................................118 2.4.2. MODO 2............................................................................................................................................................................................................119 2.4.3. MODO 0............................................................................................................................................................................................................119 2.4.4. VARIACIONES DE LOS MODOS..............................................................................................................................................................119 2.5. PROGRAMACION DE LA UNIDAD SERIE DEL 80186.............................................................................. 120 2.5.1. EJ EMP LOS DE VALORE S PARA BXCMP .............................................................................................................................................121 2.5.2. PROGRAMANDO EL MODO 0..................................................................................................................................................................122 2.5.3. PROGRAMANDO LOS MODOS 1 A 4......................................................................................................................................................123 2.6. EJ EMPLOS DE PROGRAMAS.......................................................................................................................... 123 2.6.1. PROGRAMA USANDO EL MODO 0 ........................................................................................................................................................123 2.7. EJ EMPLO DE TRANSM ICION EN M ODO 4 ................................................................................................. 125 2.8. PROGRAMA USANDO EL MODO 4................................................................................................................ 125 3. ACCESO DIRECTO A MEMORIA (DMA) ............................................................................ 127 3.1. DESCR IPCION GENERAL ................................................................................................................................. 127 3.2. TRANSFERENCIA DE DATOS VIA DMA EN EL 80186 ............................................................................. 127 3.3. TIPOS DE REQ UERIM IENTOS DMA ............................................................................................................. 128 3.3.1. REQUERIM IENTOS EXTERNOS .............................................................................................................................................................128 3.3.2. REQUERIM IENTOS INTERNOS ..............................................................................................................................................................129 3.3.2.1. TRANSFERENCIAS CONTROLADAS POR TIME2.............................................................................................................129 3.3.2.2. TRANSFERENCIAS CONTROLADAS POR LA UNIDAD SERIE .....................................................................................130 3.3.2.3. TRANSFERENCIAS CONTROLADAS POR SOFTWARE ..................................................................................................130 3.4. TERMINACION Y SUSPENCIONES DE TRANSFERENCIAS DMA....................................................... 130 3.5. INTERRUPCIONES GENERADAS POR LA UNIDAD DMA ..................................................................... 130 3.6. ORGANIZACIÓN DE LOS CANALES DMA.................................................................................................. 130 3.7. PROGRAMANDO LA UNIDAD DMA .............................................................................................................. 132 3.7.1. SECUE NC IA CORREC TA PARA LA PROGRAMACION DEL DMA..............................................................................................134 3.7.2. UT IL IZACION DE LA UNIDAD DMA CON LOS P UERTOS DE COMUNICAC IÓN SERIE.....................................................134 3.7.2.1. EJEMPLO 1. PUERTO SERIE 0 EN RECEPCIÓN .................................................................................................................134 APENDICE A. PRECIOS APROXIMADOS ................................................136
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 4 de 136 1. DESCRIPCION GENERAL Luego de haber estudiado una estructura posible de una unidad procesador de instrucciones teórica se presentará ahora un procesador real. Primero se realizará la siguiente clasificación. Microprocesador: Unidad con capacidad de ejecutar instrucciones. Generalmente no incluye me­ morias ni dispositivos adicionales. Microcontrolador: microprocesador más memorias de distintos tipos (RAM, ROM, EPROM, EE­ PROM, FLASH, etc.) y dispositivos varios (Unidad controladora de interrup­ ciones, unidades de entrada y salida serie y/o paralelo, unidades convertidores analógicas/digitales y viceversa, etc.) Otro enfoque permite clasificarlos en: Dispositivos para aplicaciones industriales: generalmente son microcontroladores con gran varie­ dad de dispositivos integrados pero con longitud de palabra relativamente corta(8 bits). Dispositivos orientados a aplicaciones de procesamiento de datos en general, menor variedad de dispositivos integrados, mayor longitud de palabra (16, 32, 64 bits). Se estudiará en este apunte el microprocesador de INTEL 80186 el cual se ubica en una posición intermedia. Por un lado su arquitectura es la base para todos los procesadores de la línea INTEL (80286, 80386, 80486, 80586, PENTIUM, PENTIUM II, etc.) y por otro lado dado que es el más simple de la línea permite conocer muchos de los principios básicos utilizados en los microcontro­ ladores dedicados a aplicaciones de tipo industrial. 2. CASOS PARTICULARES 2.1. INTEL 80186 Procesador De Instrucciones Generador De Clock Unidad de Control De Interrupciones Unidad Con­ troladora de Relojes Unidad Selecto­ ra de Periféri­ cos El esquema general del 80186 se muestra en la siguiente figura: Características Generales: v Bus de Direcciones: 20 Bits Unidad de Accesos Directos a Memoria Unidad de En­ trada/Salida Serial v Bus de Datos 16 Bits v Todas las memorias son externas
Unidad de En­ trada/Salida Paralelo MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 5 de 136 2.2. MOTOROLA MC68HC11 Características Generales: Procesador De Instrucciones RAM 256 By­ v Bus de Direcciones: 16 Bits EPROM 512 Bytes v Bus de Datos 8 Bits Generador De Clock Unidad de Control De Interrupciones Unidad Con­ troladora de Relojes Unidad convertidor Digital ­ Analógica
ROM 8Kbytes Unidad de En­ trada/Salida Asincrónica Serial v
La presencia y tamaño de los distintos tipos de memoria varía según los distintos modelos del HC11. Unidad de En­ trada/Salida Asincrónica Serial Unidad de En­ trada/Salida Paralelo 2.3. INTEL 8051 Procesador De Instrucciones Generador De Clock Unidad de Control De Interrupciones Y Relojes RAM 128 By­ ROM 4 KBy­ Unidad de En­ trada/Salida Asincrónica Serial Características Generales: v Bus de Direcciones: 16 Bits v Bus de Datos 8 Bits v 5 Niveles de interrupciones Unidad de En­ trada/Salida Pa­ ralelo 32 Bits MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 6 de 136 3. INTEL 80186 PROCESADOR DE INSTRUCCIONES. Está compuesto por dos unidades: Ejecución: ejecuta las instrucciones que va solicitando a la cola de pre­carga. Bus Interfaces Unit (BUI) carga las instrucciones a la cola de pre­carga, lee los operandos, graba los resultados. Estas unidades pueden operar independientemente y en ciertas circunstancias pueden superponerse la carga de instrucciones con la ejecución de otras. La figura siguiente muestra el esquema general de ambas unidades: 3.1. UNIDAD DE EJECUCIÓN DE INSTRUCCIONES(EU) 3.1.1. REGISTROS DE USOS GENERALES: A, B, C, D, SP, BP, SI, DI todos de 16 Bits. Los registros A, B, C, D admiten ser accedidos totalmente (16 Bits) o parcialmente (8 Bits). En este ultimo caso las letras H y L, siguiendo al nombre del registro, identifican los 8 bits mas o menos representativos respectivamente. En el caso de acceder al registro completo se agrega al nombre la letra x. AX 16 Bits. BL últimos 8 bits. CH primeros 8 bits.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 7 de 136 La Unidad Aritmética Y Lógica (ALU) realiza las operaciones. Puede utilizar operandos de 8 o de 16 Bits. FLAGS: es un registro de 16 bits, cada uno de los cuales representa una determinada condición. La figura siguiente muestra el significado de cada uno de los bits del registro FLAGS, que también recibe el nombre de PSW (Program Status Word) La unidad de ejecución (EU) no se conecta directamente con el bus externo, solo puede hacerlo vía la BIU. Las instrucciones que debe ir cargando para su ejecución nunca provienen directamente de la me­ moria sino que son cargadas desde la cola de pre­carga.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 8 de 136 3.2. UNIDAD DE INTERFACES CON EL BUS (BIU) Esta unidad consiste de: 4 registros de segmentos CS, DS, SS, ES. 1 registro de contador de programa (instrucción pointer). 1 unidad de suma para el cálculo de direcciones. 1 cola de pre­carga de instrucciones. registros auxiliares. 3.3. ACCESO AL ESPACIO DE MEMORIA Toda dirección física (20 Bits) es calculada por la BIU considerando dos valores: SEGMENTO y OFFSET o DESPLAZAMIENTO. Cada uno de ellos es de 16 bits pudiendo por lo tanto asumir valores entre 0 y 65535. La relación es: Dirección Física = (16 * SEGMENTO) + DESPLAZAMIEBTO despreciándose el acarreo si lo hubiese. Al conjunto SEGMENTO, DESPLAZAMIENTO se lo denomina Dirección Lógica y se lo representa por los dos valores separados por dos puntos. Ej. AF4C:28B9. El espacio total de direcciones de memoria (20 bits­­­1 Mbytes) es dividido entonces en segmentos de 64 KBytes cada uno. El BIU puede acceder en un determinado momento simultáneamente a cuatro segmentos distintos vía los registros CS, DS, SS, ES. El uso standard, pero no obligatorio, es el siguiente: CS segmento de código (es el que almacena el programa). DS segmento de datos. SS segmento del STACK. ES segmento extra o para usos adicionales (extended segment). La figura muestra un caso particular: Direcciones Espacio de direcciones Físicas de Memoria Contenido de los registros de segmentos Rango de direcciones cubierto F000 CS F000:FFFF=FFFFF=1.048.575 F000:0000=F0000= 983.040 8420 DS 8420:0000=84200= 541.184 8420:FFFF=941FF= 606.719 3000 SS 3000:0000=30000= 196.608 3000:FFFF=3FFFF= 262.143 FFFFF F0000 941FF 84200 3FFFF 30000 101BF
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 9 de 136 001C0 00000 001C ES 001C:0000=001C0= 448 001C:FFFF=101BF= 65.983 Si se deseara acceder a una dirección física fuera de los entornos habilitados es necesario modificar el contenido de alguno de los registros de segmento de forma tal que la dirección requerida se ubi­ que dentro de las 65.535 nuevas direcciones que se habiliten. Dada la formula de cálculo de la dirección física se puede concluir: Todo segmento comienza en una dirección física múltiplo de 16. En hexadecimal su dígito menos significativo debe ser cer o. Para una dirección física determinada existen muchos conjuntos SEGMETO:DESPLAZAMIENTO que la satisfacen. Ejemplo: Dirección Física Segmento DESPLAZAMIENTO B5408 B540 B53F B530 . . . . . B440 . . . . A640 A541 0008 0018 0028 . . . . 0108 . . . . F008 FFF8 Son 1000h = 4.096d valores distintos Se define como dirección lógica normalizada aquella que corresponde al valor de DESPLAZA­ MIENTO más pequeño. La dirección lógica normalizada es única para cada dirección física. La BIU siempre accede a memoria indicando la dirección física, los programadores siempre hacen referencia a direcciones lógicas. El segmento puede indicarse en forma explícita o en forma implí­ cita. Si no se indicara, cada tipo de instrucción de la tabla siguiente indica cual es el SEGMENTO por default que se usará TIPO DE MEMORIA REFERENCIADO Carga de Instrucciones Operación sobre el STACK Variables Fuente en operaciones de Strings Destino en operaciones de Strings Si aparece BP como parte del DESPLAZAMIENTO SEGMENTO BASE DEFAULT CS SS DS DS ES SS Esta forma de direccionar permite la reubicación dinámica de segmentos dentro del espacio de di­ recciones muy fácilmente.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 10 de 136 Si en un determinado momento la situación es la mostrada en la figura de la izquierda, cambiando el contenido de cada uno de los registros de segmento y reubicando los segmentos el esquema que­ daría como el mostrado en la figura de la derecha. CS CS DS DS SS SS 3.3.1. IM PLEM ENTACIÓN DEL STACK El STACK reside en el espacio de memoria. Al comienzo, ya se verá como, el registro SS apunta al segmento donde reside el STACK y el registro SP contiene el DESPLAZAMIENTO de la ultima posición correspondiente al STACK. Es decir que el STACK ocupará el espacio de memoria com­ prendido entre las direcciones SS:0000 y SS:SP. Existen dos instrucciones que administran el STACK: POP y PUSH. PUSH, reg. coloca el contenido del registro indicado en el STACK. POP, reg. recupera del STACK el último dato ingresado y lo coloca en el registro indicado. El dato a guardar y recuperar es siempre de 16 bits. La instrucción PUSH decrementa el SP en 2 unidades y almacena el contenido del registro en la di­ rección SS:SP. La instrucción POP almacena en el registro lo que se recupera de la dirección SS:SP y luego incre­ menta en dos unidades el contenido de SP. Es importante destacar que la instrucción POP no borra o blanquea el contenido de la dirección de memoria leída. Ella solo actualiza la dirección apuntada por SP. Por otro lado el sistema no contro­ la que sucesivos PUSH decrementen SP mas allá del valor cer o, como se ignora el bit de “presta­ do” 0000 menos 2 será simplemente FFFE. Tampoco se controla que algún POP lleve el valor de SP por encima de su valor original, sobrepasando el área de memoria asignada originalmente al STACK. 3.4. ACCESO AL ESPACIO DE ENTRADA/SALIDA. En el micro 80186 existe también un espacio de direcciones validos, adicionales al de memoria, cuyo rango va de 0000 a FFFF(64 Kbytes). Pues solo se usan 16 bits para direccionarlo).
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 11 de 136 Un bit de control independiente especifica si una dirección corresponde al espacio de E/S o al espa­ cio de memoria. Existen instrucciones especificas para acceder al espacio de E/S: IN reg, DIRECCION Lee el contenido del espacio de direcciones de E/S direccionado por DIRECCION y coloca el dato en el reg. Especificado. IN reg, DX Lee el contenido del espacio de direcciones de E/S direccionado por el contenido del registro DX y coloca el dato en el reg. especificado OUT DIRECCION, reg Graba el contenido del reg. Especificado en la dirección indicada por DIRECCION del espacio de E/S OUT DX; reg. Graba el contenido del reg especificado en la dirección apuntada por el contenido de DX del espacio de E/S. DIRECCION: constante binaria de 8 bits 4. CONJUNTO DE INSTRUCCIONES El conjunto de instrucciones puede pensarse en dos niveles diferentes. En el nivel del assembler el mnemotécnico de la instrucción define la operación y luego el o los operandos se especifican usando algunas de las notaciones aceptadas. Por ejemplo MOV AX, 01234h moverá el número hexadecimal 1234 de 16 bits al registro AX. MOV AX, BX moverá el contenido de BX a AX MOV AX, Var1 moverá el contenido de la dirección correspondiente a Var1 a AX En el nivel de maquina una instrucción especifica la totalidad de los datos que se requieren para que pueda ser ejecutada. La instrucción de assembler MOV puede generar 28 instrucciones diferentes del nivel de maquina según como se especifiquen los operandos que en ella participen. Las instrucciones a nivel de maquina no son todas de igual longitud. Las hay desde de un byte hasta de cinco bytes. En el nivel del assembler existen aproximadamente 100 instrucciones, mientras que en el nivel de maquina son mas de trescientas. 5. INSTRUCCIONES A NIVEL ASSEMBLER. Para una mejor organización se las ha agrupado funcionalmente en cinco grupos:
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 12 de 136 5.1. INSTRUCCIONES DE MOVIMIENTO DE DATOS
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 13 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 14 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 15 de 136 5.2. INSTRUCCIONES MATEMATICAS 5.2.1. ADICION
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 16 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 17 de 136 5.2.2. SUBTRACC ION
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 18 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 19 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 20 de 136 5.2.3. M ULTIPLICACION
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 21 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 22 de 136 5.2.4. DIVISION
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 23 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 24 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 25 de 136 5.3. INSTRUCCIONES DE TRANSFERENCIAS 5.3.1. TRANSFERENCIAS CO NDIC IONALES
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 26 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 27 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 28 de 136 5.3.1.1. INTERPRETAC ION DE LOS CODIGOS DE TRANSFERENCIAS CONDICIONALES
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 29 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 30 de 136 5.3.2. TRANSFERENCIAS INCONDICIONALES
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 31 de 136 5.4. CONTROL DE ITERACCIONES
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 32 de 136 5.5. INTERRUPCIONES
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 33 de 136 5.6. INSTRUCCIONES DE MANIPULACION DE BITS
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 34 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 35 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 36 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 37 de 136 5.7. INSTRUCCIONES DE CONTROL DEL PROCESADOR 5.7.1. OPERACIONES CO N FLAGS
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 38 de 136 5.7.2. OPERACIONES DE SINCRONIZACION EXTERNA 5.7.3. NO OPERACION
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 39 de 136 6. DIRECCIONAMIENTO DE MEMORIA Cada vez que en el formato de una instrucción se especifica mem se esta haciendo referencia a un operando localizado en memoria. Para ubicarlo es necesario indicar su dirección en la forma SEGMENTO:DESPLAZAMIENTO. Existen muchas formas de especificar la dirección de un operando: 1) indicando el nombre de una variable que lo representa MOV CX, Var1 Si no se especifica segmento se usa DS 2) indicando el valor del DESPLAZAMIENTO (en este caso es obligatorio especificar también el segmento) MOV CX; DS:[0843h] 3) indicando un registro base y un DESPLAZAMIENTO MOV DX, Seg:[BX] mueve el operando cuya dirección es Seg: contenido de BX, al registro DX MOV CX, Seg:045h[BX] mueve el operando cuya dirección es Seg: contenido de BX más 045h, al reg CX Los registros que pueden usarse son BX, BP, DI, SI. Se puede no especificar Seg. y entonces se asume un segmento por default según el registro que se halla especificado: BXàDS; BP àSS; SI àDS; DIàES. 4) indicando un registro base y un registro índice MOV AX, Seg:023h[BX][SI] mueve el operando cuya dirección es Seg: contenido de BX más contenido de SI más 023h, al registro AX MOV BX, Seg:[BX][DI] en este caso el DESPLAZAMIENTO es cer o. El segmento por default que se elige depende de cual sea el registro base especificado. Para BX se elige DS, para BP se elige SS. Los registros base posibles son BX y BP y los de índices posibles son SI, DI. El DESPLAZAMIENTO final que se obtiene en las distintas formas de especificar el operando se denomina Dirección Efectiva. La tabla siguiente es una buena referencia para reconocer todas las formas posibles de especificar la dirección de un operando COLUMNA 1 COLUMNA 2 BX COLUMNA 3 SI DESPLAZAMIENTO* ·
·
BP DI
DESPLAZAMIENTO puede ser un valor positivo o negativo.
Solo en el caso de direccionamiento directo (solo DESPLAZAMIENTO) no puede ser negativo.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 40 de 136 Las direcciones validas son aquellas que se conforman eligiendo uno o ninguno de los elementos de cada una de las columnas mostradas. Por supuesto al menos un elemento debe ser elegido de al menos una columna. Existen por lo tanto 17 formas distintas de conformar una dirección efectiva valida: DSP [DI] DSP[DI] [BP][DI] DSP[BP][SI]
[BX] DSP[BX] [BX][SI] DSP[BX][SI] MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a [BP] DSP[BP] [BX][DI] DSP[BX][DI] [SI] DSP[SI] [BP][SI] DSP[BP][SI] Página 41 de 136 7. UNIDAD DE INTERFACES DEL BUS (BUS INTERFACE UNIT­ BIU) Esta unidad es la encargada de cargar instrucciones en la cola de pre­carga y pasar datos a y desde la unidad de control y a y desde las unidades periféricas incluidas las memorias. Para cada transferencia la BIU generará un “BUS CYCLE” (BC). Al comienzo de un BC se presenta la dirección, el espacio de direcciones de que se trate(memoria o E/S) y el estado que indica el tipo de BC. A continuación se define la dirección de la transferencia (read o write) y luego se registra la información leída o se renueva la información grabada. Los micros 80x86 multiplexan en el tiempo el comportamiento de un único bus de 20 bits de forma tal que en un momento se comportan como bus de direcciones y en otro (usando solo los 8 o 16 bits menos representativos) como bus de datos. Por razones de compatibilidad con equipos que manejan 8 bits el espacio de direcciones de memo­ ria se considera compuesto por dos bancos de 512 Kbytes cada uno, los cuales responden a direc­ ciones pares e impares respectivamente. El bit de dirección menos significativo A0 determina si una dirección es par o impar. Un bit de control llamado BHE (Byte High Enable) determina si se desea leer o no los 8 bits más representativos del dato de 16. La figura muestra el circuito utilizado: ENABLE FFFFF FFFFE 5 3 1 4 2 0 A19:1 D15:8 BHE A0 0 0 1 1 BH E 0 1 0 1 D7:0 A0 TRANSFERENCIA DE: UNA PALABRA UN BYTE PAR UN BYTE IMPAR USADO SOLAMENTE. EN MEMORIAS DINAMICAS Si se solicita un Byte en una dirección par este se transfiere en los bits D7:0 Si se solicita un Byte en una dirección impar este se transfiere en los bits D15:8. El BIU se encarga­ rá de realizar los ajustes que sean necesarios. Si se solicita una palabra en una dirección par esta se transfiere en un único BC en los bits D15:0. Si se solicita una palabra en una dirección impar la BIU necesitará dos BC. En el primer ciclo se obtiene un byte en D15:8 y luego se incrementa la dirección en 1 y se lee el segunda byte en D7:0. La BIU desencadena automáticamente los dos BC.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 42 de 136 7.1. CICLO DE BUS (BUS CYCLE) La BIU ejecuta un bus cycle para transferir datos entre cualquiera de las unidades integradas y cualquier memoria externa o dispositivo de E/S. Un BC consiste de un mínimo de 4 CPU clocks conocidos como T­STATES. Un T­STATES transcurre desde un flanco negativo del clock hasta el próximo flanco negativo y siempre tiene dos fases. La figura muestra un típico BC ALE Address Latch Enable Su transición de 1 a 0 indica el momento correcto para tomar una di­ rección valida del bus de direcciones. Es una señal que entrega el micro y generalmente se usa co­ mo STROBE en el latch de direcciones. S2:0 Son tres bits que entrega el micro que indican el tipo de BC que se esta ejecutando S2 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 Tipo de BC Interrupt Lectura de E/S Escritura de E/S Procesador Detenido(HALT) Carga de una instrucción en la cola de pre­carga Lectura de memoria Escritura de memoria Bus No Activo AD15:0 A 19:16 Bus de direcciones y datos multiplexado en el tiempo. Durante T1 presenta la dirección, durante T2, T3 y parte de T4 presenta los datos.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 43 de 136 RD/WR Define la dirección de la transferencia. RD READ, WR WRITE. Un ciclo completo puede dividirse en dos fases: la de dirección y estado y la de datos. La primera de ellas comienza antes de T1 y dura hasta el final de T1. La fase de los datos se inicia en la fase 1 de T2 y continua hasta la fase 2 de T4 o TI (ti significa Bus Disponible o IDLE) La siguiente figura muestra la definición de los tiempos claves de la fase de direcciones y estado de un BC. 1) 2) 3) 4) 5) 6) CHOV: Clock high to ALE high, S2:0 valid. CLOV: Clock low to address valid, BHE valid. AVLL: Address valid to ALE low (address setup to ALE). CHOV: Clock high to ALE low. CLOF: Clock low to address invalid (address hold from clock low). LLAX: ALE low to address invalid (address hold from ALE). Son valor es que apar ecen en la hoja de especificaciones tecnicas del micr o en cuestion Un BC comienza con el flanco positivo de la señal ALE y el seteo de los tres bits de control que definen el tipo de BC que se ejecutará (STATUS S2:0) los cuales deben asumir sus valores antes de comenzar T1. Siempre antes de T1 existirá un T4 o un TI. Durante T1 debe presentarse una direccion correcta en AD15:0/a19:16. Con el frente negativo de ALE se registrará en el latch de direcciones la direccion presente en el Bus.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 44 de 136 Dicha direccion tambien activará la señal de Chip Select que corresponda. Los valores tipicos para la fase de datos se muestran a continuacion Son valor es que apar ecen en la hoja de especificaciones tecnicas del micr o en cuestion La direccion de la transferencia RD/WR debe ser valida antes de comenzar T2. Los bits de STATUS deben permanecer validos hasta pasada la finalizacion de T2 Si se trata de un WRITE, los datos deben estar disponibles en el bus al comenzar T2 y el flanco negativo del clock que termina T3 es el que da por terminada la operación desactivando la señal WR. Si se trata de un READ el flanco descendente del clock que termina T3 permite tomar del bus los datos leidos. La siguiente figura muestra el circuito para la lectura y grabacion de una memoria RAM conformada por dos bancos que direccionan 8 bits cada uno.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 45 de 136 RAM AD7:0 PROCESADOR LATCH ALE STROBE A19:0 A19:1 D0:18 CS A19:16 WE OE AD15:0 DIRECCIONES RAM AD 15:8 A0 WR BHE CS RD WE OE CS Este circuito protege el 2º banco cuando se graba un byte en una direccion par Si el dispositivo periferico no es suficientemente rapido como para realizar la operación de READ o WRITE en los cuatro T­STATES provistos normarmente la BIU debe ser informada para que inserte T­WAITs. T­WAIT son T­STATE que se agregan entre T2 y T4 para darle tiempo al periferico a realizar la operación. Existen dos formas de insertar T­WAIT. O se especifica una cantidad fija de T­WAIT para cada periferico y entonces la BIU siempre inserta dicha cantidad cuando realiza operaciones sobre ese dispositivo o mediante un bit de control adicional propio para cada dispositivo se puede especificar que la BIU inserte los T­WAIT requeridos según la primera alternativa pero ademas si una vez insertados dichos T­WAIT la señal BUS READY no es activada por el dispositivo confirmando que termino la operación se continuan insertando T­WAIT hasta que ello ocurra. El diagrama muestra el comportamiento descripto: Cant. De T­WAIT insertados < Cant indicada para Este dispositivo SI TERMINAR BC BUSREADY Activo MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a SI INSERTAR T­WAIT INSERTAR T­WAIT
Página 46 de 136 7.2. TIEMPOS DEL CICLO DE BUS PARA UNA LECTURA La figura siguiente muestra el ciclo completo para un READ y los tiempos claves que deben respe­ tarse para una operación completa desde el punta de vista del dispositivo. La secuencia que implementa el micro para un ciclo de este tipo es A) presenta una dirección valida en el bus B) selecciona el chip C) activa la señal RD La hoja de especificaciones técnicas del dispositivo a utilizarse indica el valor máximo de las si­ guientes variables: Tglqv = Toe Telqv = Tac Tavqv = Taa Máximo tiempo entre el punto C y Datos Disponibles Máximo tiempo entre el punto B y Datos Disponibles Máximo tiempo entre el punto A y Datos Disponibles Por otro lado desde el punto de vista del micro la secuencia es: T1 T2 T3 T4 Con este pulso se tomaran los datos Con este pulso se da cumplimiento al punto C
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 47 de 136 Con este pulso se dan cumplimiento al punto A y al B (pero en el caso del punto A debe conside­ rarse que la dirección se latchea con la caida de ALE y solo después que el LATCH conmutó esta disponible en los bornes de entrada del periférico) Por lo tanto debe cumplirse con: Toe < 2T – Tclov – Tclis Tac < 3T – Tclov – Tclis Taa < 3T – Tclov – Tclis – Tadlt Con: Tclov Tiempo que las señales del micro demoran entre el pulso que las activan y el momento en el que alcanzan el estado de activación. Tclis Tiempo que el micro requiere entre el momento que se presentan datos validos en el bus y el momento en el que se toman dichos datos. Tadlt Tiempo adicional que transcurre entre el momento de la presencia de direcciones validas en el bus y el momento en que dichas direcciones están disponibles a la salida del latch. Este tiempo debe incluir Tavll (tiempo entre direcciones validas y caida de ALE y el tiem­ po de commutacion del latch) Si las inecuaciones anteriores no son cumplidas por las características del periférico y del micro se deben adicionar tantos T­WAIT como sean requeridos para darle cumplimiento. Cada T­WAIT adicionado incrementa los valores a la derecha del signo < en T. Otro valor que es necesario compatibilizar es el tiempo que el dispositivo mantiene en el bus el da­ to leído luego de desactivar la señal RD pues si este es muy largo podría superponerse con la nueva dirección presentada por la BIU al iniciar el próximo ciclo y generar un corto circuito. Se tiene: Tghqz = Tohz Tiempo máximo que el dispositivo mantiene los datos en el bus luego de que la señal RD es desactivada Trhax Tiempo mínimo que el micro deja transcurrir entre que desactiva la señal RD y la presentación en el bus de una nueva dirección. Generalmente es dado por la hoja de especificaciones del micro. Puede calcularse como T ­ Tclov MAX + TclovMIN pues RD se desactiva al final de T3 y la nueva direccion estará disponible al final de T4 Si Tohz resulta mayor que Trhav podría producirse un corto circuito en el bus. Trhav puede exten­ derse eligiendo para el micro una frecuencia de trabajo menor, Tohz puede achicarse eligiendo una memoria más rápida, o el problema puede resolverse usando un “transceiver” sobre el bus. 7.2.1. AISLANDO EL DATA BUS CON UN BUFFER . BUFFER ING THE DATA BUS La BIU genera dos señales (DEN y DT/R) para el control de un buffer bidireccional o 'transceiver' a ser conectado entre el bus de datos y el periférico. La relación de tiempos entre estas señales se muestra en la siguiente figura
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 48 de 136 DEN Data Enable informa al 'transceiver' que los datos están disponibles en el bus DT/R Data Transmit/Receive. Informa al 'transceiver' la dirección de los datos. 'Transceiver' son requeridos cuando: A) La carga capacitiva sobre el bus de datos y direcciones es excesiva B) La corriente de carga sobre el bus es excesiva C) Un periférico no es capaz de retirar sus datos a tiempo para prevenir una contención con la nue­ va dirección presentada por la BIU. El bus de datos existente en el micro y el 'transceiver' se denomina local bus. El bus de datos existente entre el 'transceiver' y el periférico se denomina buffer ed bus Un sistema donde TODOS sus periféricos están conectados al buffered bus se denomina totalmente buffered. Si los dispositivos periféricos se mezclan entre conectados al local bus y conectados al buffered bus se denomina parcialmente buffered. En un sistema parcialmente buffered la señal DEN debe controlarse con la señal Chip Select de aquellos dispositivos conectados al local bus. De no hacerlo así una dirección correspondiente a un periférico conectado al local bus hará que los datos leídos sean presentados al local bus pero si DEN se activara también el transceiver alimentará al local bus La figura muestra un ejemplo de conexionado
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 49 de 136 7.3. TIEMPOS DEL CICLO DE BUS PARA UNA GRABACION La siguiente figura muestra el ciclo para un WRITE con los tiempos claves que deben respetarse para una operación correcta
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 50 de 136 La secuencia que implementa el micro es: A) Presentación de una dirección valida en el bus B) Selección del dispositivo correspondiente activando la señal CS. C) Activación de la señal WR. D) Presentación de los datos en el bus. E) La señal WR es desactivada. De la hoja de especificaciones técnicas del periférico pueden obtenerse los valores correspondientes a las siguientes definiciones Twc = Telwh tiempo mínimo entre un ciclo de grabado y el siguiente. Taw = Tavwh tiempo mínimo entre la presentación de una dirección valida y la grabación del dato que se realiza cuando se desactiva WR Tcw = Telwh tiempo mínimo que se requiere entre la activación de CS y la desactivación de WR Tah = Twhax tiempo mínimo que debe permanecer la dirección valida luego de desactivar WR Tdw = Tdvwhtiempo mínimo que debe presentarse el dato antes de grabar desactivando WR Tdh = Twhdx tiempo mínimo que debe permanecer el dato valido luego de desactivar WR Twp = Twlwh tiempo mínimo que debe permanecer WR activado. Por el lado del micro la secuencia es: Con este pulso de desactiva el periférico T1 T2 T3 T4 Con este pulso se da cumplimiento al punto E Con este pulso se da cumplimiento al punto C y al D Con este pulso se dan cumplimiento al punto A y al B Por lo tanto debe cumplirse con las inecuaciones mostradas en la primer columna de la tabla si­ guiente. En la segunda columna se indica cual es la solución si la inecuación no puede cumplirse. INECUACION Twc < 4T Taw=Tavwh < 3T­ Tadltch Tcw=Telwh < 3T Tah=Twhax del periférico < Twhlh del micro Tdw=Tdvwh < 2T Tdh=Twhdx del periférico < Twhdx del micro Twp=Twlwh del periférico < Twlwh del micro ·
SOLUCION Insertar WS Insertar WS Insertar WS Usar un clock mas lento Insertar WS Usar clock mas lento Insertar WS
En el caso del Write no se consideran los valores Tclov y Tclis pues no influyen. Por ejemplo: la memoria exige un tiempo mínimo entre la presencia de un CS valido y la señal de write, el mi­ cro activa CS en el comienzo de T1 ( la activación real se producirá Tclov después) e indica grabar desactivando WR al comienzo de T4 ( la desactivaron se producirá Tclov después)
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 51 de 136 Los valores Twhlh, Twhdx, Twlwh vienen generalmente especificados en la hoja del micr o en cuestión. En caso contrario pueden calcularse de la siguiente forma: Twhlh : tiempo entre la desactivación del Write y la desactivación de ALE que genera una nueva dirección disponible. Es el tiempo que permanecerán disponibles los datos a grabar luego de la or­ den de grabar. Será igual a: ½ T – Tclov MAX + TchovMIN Twhdx: Tiempo transcurrido entre la desactivación de WR y la desaparición de los datos a ser gra­ bados en el bus. Tiempo que permanecerán los datos ha ser grabados disponibles en el bus luego de la orden de grabar mediante WR. Será igual a: T – Tclov MAX + TclofMIN Twlwh: duración del WR. Será igual a: 2T ­ Tclov MAX + TclovMIN Los valores obtenidos por calculo suelen diferir de los indicados en las hojas técnicas del micro. Utilizar los calculados únicamente si no se disponen de los indicados por el fabricante 7.4. DEFINICION DE LOS VALORES DE LA HOJA DE ESPECIFICACIONES Tchis: imput set previus clock high Tchov: clock high to output valid Tchih imput hold after clock high Tclov: clock low to output valid Tclis: imput set previus clock low Tchof: clock high to output float Tclih: imput hold after clock low
Tclof: clock low to output float MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 52 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 53 de 136 7.5. EJEMPLO DE ANALISIS DE LOS TIEMPOS A título de ejemplo se analizará el 80186 modelo 80C186EC­25 a 25 MHz con dos memorias SRAM: MOTOROLA MCM6226A 128 K x 8 Bits Access Time 25 nanosegundos. y PERFOR­ MANCE P4C1024L 128 K x 8 Bits Access Time 70 nanosegundos. Valores característicos del procesador: T = 1/25 MHz = 40 nseg Tclov = 20 nseg Tclis = 10 nseg Twhlh = ½ T – 10 =10 nseg Twhdx = T – 15 = 25 nseg Twlwh = 2T – 5 = 75 nseg Trhax = T – 15 = 25 nseg Se asume Tadltch = 20 nseg Valores característicos de los periféricos: VALOR Toe Tac Taa Tohz Trc = Twc Taw Tcw Tah Tdw Tdh Twp MOTOROLA 12 25 25 10 25 20 20 0 12 0 20 PERFORMANCE 35 70 70 25 70 60 60 0 25 0 50 Ecuaciones a cumplir: ECUACION MOTOROLA PERMORMANCE VALORES SOLUC ION VALORES Toe < 2T­Tclov ­Tclis Tac < 3T­Tclov ­Tclis Taa < 3T­Tclov­Tclis­Tadlt Tohz < Trhax Taelwh < 4T Tavwh < 3T Telwh < 3T Twhax < Twhlh Tdvwh < 2T Twhdx < Twhdx Twlwh < Twlwh 12 < 50 25 < 90 25 < 70 10 < 25 25 < 160 20 < 120 20 < 120 0 < 10 12 < 80 0 < 25 20 < 75 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a OK OK OK OK OK OK OK OK OK OK OK 35 < 50 70 < 90 70 < 70 25 < 25 70 < 160 60 < 120 60 < 120 0 < 10 25 < 80 0 < 25 50 < 75 SOLUCION OK OK AGREGAR 1 WS BUFFER OK OK OK OK OK OK OK
Página 54 de 136 Hoja de especificaciones del 80186 a 25 Mz
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 55 de 136 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a
Página 56 de 136 8. BLOCK DE CONTROL DE PERIFERICOS (PCB). Todos los periféricos que se encuentran integrados en el chip del 80186 son controlados por un conjunto de registros de 16 bits. Estos registros se encuentran ubicados físicamente cada uno en su propio periférico integrado pero ellos son direccionados como un conjunto de 128 direcciones de palabras 16 bits que se denominan PCB. La PCB puede ubicarse en cualquier lugar del espacio de memoria o del espacio de E/S siem­ pre que sea múltiplo de 256. En forma standard se encuentra en el espacio de E/S y cubre las direcciones FF00h hasta FFFFh. La tabla siguiente muestra que registro representa cada una de las 128 entradas que tiene la PCB(cada entrada almacena una palabra de 16 bits, por eso ocupa en total 256 bytes) En términos de desplazamiento contado desde el comienzo de la PCB solo tienen significado los desplazamien­ tos pares. El desplazamiento A8h apunta a un registro muy especial: RELREG. Este registro es el que contie­ ne la información de donde esta ubicada la PCB. Su formato es: ET debe ser 0 Relacionado con el co­procesador matemático MEN indica si la PCB se ubicará en el espacio de memoria (MEM = 1) o el de E/S (MEM=0). R19:8 es la dirección de comienzo de la PCB. Siempre se completa con 8 bits nulos como bits menos representativos. Si MEM = 0 por supuesto R19:16 deben ser ceros. Toda comunicación entre los periféricos integrados y la EU ocurre sobre un bus especial llamado F­Bus de 16 Bits y toda transferencia de información entre los periféricos integrados y la EU se realiza siempre de a 16 Bits. Cuando se requiere una transferencia de datos sobre algún registro direccionado en la PCB, la BIU genera, como siempre un BC cuya información de datos y control es dirigida a los pins externos, pero en este caso además se realiza la transferencia sobre el F­Bus ignorándose el dato que pueda haberse obtenido desde el dispositivo externo. El hecho que toda trasferencia sobre el F­Bus sea de 16 bits, independientemente de cómo sea codificada(por ejemplo OUT 28h, AL transfiere 16 bits, AH y AL desde las direcciones 28h y 29h) obliga a tomar ciertos resguardos. Lectura de una palabra Usar siempre direcciones pares. Ej. IN AX, DX MOV Reg16, dirección par Lectura de un byte Pueden usarse direcciones pares o impares. Ej. IN AL; DX MOV Reg8, dirección Grabación de una palabra Usar siempre direcciones pares. Ej. OUT DX; AX OUT DX, Al (transfiere AX a DX) MOV dirección par, Reg16 Grabación de un byte Siempre se grabará la palabra completa que este involucrada. Usar solo direcciones pares. Ej. OUT DX, AL graba AX en la dirección contenida en DX
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 57 de 136 In terr up. M ASTER y SLAVE Port2 Refresco de M emorias MPICP0 00h P2DIR 58h Y Alimenta cion MPICP1 02h P2PIN 5Ah RFBASE B0h SPICP0 04h P2CON 5Ch RFTIME B2h SPICP1 06hh P2LTCH 5Eh RFCON B4h Reserved 08h RFADDR B6h Entra da y Salida Serie Interrup.Request Latch Reg. PWRCON B8h Ca na l 0 SCUIRL 0Ah B0CMP 60h Reserved BAh DMAIRL 0Ch B0CNT 62h STEPID BCh TIMIRL 0Eh S0CON 64h PWRSAV BEh Reserved 10h S0STS 66h Acceso Directo a M emor ia Reserved 12h S0RBUF 68h C ana l 0 Reserved 14h S0TBUF 6Ah D0SRCL C0h Reserved 16h Reserved 6Ch D0SRCH C2h Reserved 18h Reserved 6Eh D0DSTL C4h Reserved 1Ah D0DSTH C6h Ca na l 1 Reserved 1Ch B1CMP 70h D0TC C8h Reserved 1Eh B1CNT 72h D0CON CAh S1CON 74h Watch Dog Register s G enera les WDTRLDH 20h S1STS 76h DMAPRI CCh WDTRLDL 22h S1RBUF 78h DMAHALT CEh WDTCNTH 24h S1TBUF 7Ah C ana l 1 WDTCNTL 26h Reserved 7Ch D1SRCL D0h WDTCLR 28h Reserved 7Eh D1SRCH D2h WDTDIS 2Ah D1DSTL D4h Selección de Chips Reserved 2Ch D1DSTH D6h Ch ips 0 a 7 Reserved 2Eh GCS0ST 80h D1TC D8h GCS0SP 82h D1CON DAh TIM ER0 Register s T0CNT 30h GCS1ST 84h Reserved DCh T0CMPA 32h GCS1SP 86h Reserved DEh T0CMPB 34h GCS2ST 88h C ana l 2 T0CON 36h GCS2SP 8Ah D2SRCL E0h GCS3ST 8Ch D2SRCH E2h TIM ER1 Register s T1CNT 38h GCS3SP 8Eh D2DSTL E4h T1CMPA 3Ah GCS4ST 90h D2DSTH E6h T1CMPB 3Ch GCS4SP 92h D2TC E8h T1CON 3Eh GCS5ST 94h D2CON EAh GCS5SP 96h Reserved ECh TIM ER2 Register s T2CNT 40h GCS6ST 98h Reserved EEh T2CMPA 42h GCS6SP 9Ah C ana l 3 Reserved 44h GCS7ST 9Ch D3SRCL F0h T2CON 46h GCS7SP 9Eh D3SRCH F2h D3DSTL F4h Entra da Salida Pa ra lelo Ch ip en Dir eccion Baja LCSST A0h D3DSTH F6h Por t3 P3DIR 48h LCSSP A2h D3TC F8h P3PIN 4Ah D3CON FAh Ch ip en Dir eccion Alta P3CON 4Ch UCSST A4h Reserved FCh P3LTCH 4Eh UCSSP A6h Reserved FEh Por t1 Registr o de R eub. de la PCB P1DIR 50h RELREG A8h P1PIN 52h Reserved AAh P1CON 54h Reserved ACh P1LTCH 56h Reserved AE h
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 58 de 136 9. UNIDAD SELECTORA DE CHIPS. CHIP SELECT UNIT (CSU) 9.1. DECRIPCION FUNCIONAL Esta unidad es la encargada de asignar el espacio de memoria y el espacio de E/S entre los distin­ tos periféricos que pueda tener el micro. De esta forma cada periférico es “mapeado” sobre un in­ tervalo definido del espacio de direcciones de forma tal que operaciones de entrada/salida que se realicen sobre dicho espacio serán en realidad realizadas sobre el periférico en cuestión. El espacio de direcciones de memoria esta formado por 1Mbytes de direcciones diferentes. El espacio de direcciones de E/S esta formado por 64 Kbytes de direcciones diferentes. Cuando se apunta a una dirección puede solicitarse la lectura o escritura de un byte o de una pala­ bra. Como ejemplo supongamos tener los siguientes periféricos disponibles: Memoria RAM estática compuesta por dos bancos de 8 bits cada uno que cubren 4096 direcciones de 8 bits. DIRECCIONES A11:0 CS BHE WR OE SRAM 2048 x 2 x 8 Bits D15:0 DATOS Memoria ROM compuesta por dos bancos de 8 bits cada uno que cubren 1024 direcciones de 8 bits. DIRECCIONES A9:0 CS BHE WR OE ROM 512 x 2 x 8 Bits D15:0 DATOS Memoria RAM dinámica compuesta por dos bancos de 8 bits cada uno que cubren 16K direcciones de 8 bits. DIRECCIONES A13:0 CS BHE WR OE
DRAM 8K x 2 x 8 Bits MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a D15:0 DATOS Página 59 de 136 Dispositivo periférico de entrada salida con un buffer de 512 direcciones de 8 bits DIRECCIONES A8:0 UNIDAD DE E/S CS BHE WR OE 512 x 8 Bits D15:0 DATOS OBSERVACIONES: CON 12 BITS SE PUEDE DIRECCIONAR HASTA 0FFFh= 4095 CON 10 BITS SE PUEDE DIRECCIONAR HASTA 03FFh= 1023 CON 14 BITS SE PUEDE DIRECCIONAR HASTA 3FFFh= 16383 CON 9 BITS SE PUEDE DIRECCIONAR HASTA 01FFh= 511 Se asignará el espacio de direcciones de memoria de la siguiente manera FFFFF ROM OCUPA ENTRE FFC00 Y FFFFF 1024 POSICIONES FFC00 ESPACIO DE DIRECCIONES LIBRE ENTRE 05400 Y FFC00 05000 053FF 04FFF PERIFERICO OCUPA ENTRE 05000 Y 053FF 1024 POSIC. RAM DINAMICA OCUPA ENTRE 01000 Y 05000 16385 POSICIONES 01000 00000 00FFF RAM ESTATICA OCUPA ENTRE 0000 Y 00FFF 4096 POSIC.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 60 de 136 Ante una dirección física determinada se debe actuar de la siguiente manera: Dirección Entre 00000 Y 00FFF SI
Dirección Entre 00000 Y 00FFF SI Dirección Entre 00000 Y 00FFF SI
Dirección Entre 00000 Y 00FFF SI ACTIVAR CSSRAM ACTIVAR CSDRAM ACTIVAR CSPERIF ACTICAR CSROM La CSU es la unidad que se encarga de generar las señales de selección de chips. El 80186 tiene 10 señales: UCS selecciona el periférico que mapea en las posiciones más altas del espacio de direcciones. Generalmente se reserva para el dispositivo de “booteo”. LCS selecciona el periférico que mapea las posiciones mas bajas del espacio de direcciones. Generalmente se reserva a la memoria estática que almacena la tabla de interrupciones, el STACK y los datos. GCS7:0 son 8 bits para mapear 8 dispositivos adicionales. 9.2. RESGISTROS DE CONTROL DE LA CSU Para realizar su trabajo la CSU cuenta con dos registros para cada bit de control que se direccionan en la PCB y se denominan START y STOP. El registro START define la dirección de arranque del espacio mapeado y la cantidad de wait state que se insertaran en todo BC que se genere para el dispositivo en cuestión. El registro STOP define la dirección donde termina el espacio mapeado y las variables de control: CSEN Si cer o esta salida esta “disable”. Si uno “enable”. MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 61 de 136 ISTOP Si cer o se ignora la dirección de terminación del espacio mapeado. El espacio termina en 0FFFFFh (memoria) o 0FFFFh (E/S) MEM Si uno se mapea en el espacio de memoria. Si cer o se mapea en el espacio de E/S RDY Si cer o, el BIU insertará la cantidad de T­Wait indicada en el registro START y luego in­ dependientemente de si el periférico activó o no la señal de READY el BC es terminado. Si uno, el BIU una vez insertada la cantidad de T­WAIT indicada en el registro START sigue insertando T­Wait hasta que el periférico active la señal READY. Las siguientes figuras muestran el formato detallado de los registros START y STOP: Para el ejemplo planteado los valores correctos para cada uno de los módulos a conectar es mostra­ do en la tabla siguiente: MÓDULO REG ROM PERIFERICO RAM DINAMICA RAM ESTATICA UCS GCS1 GCS0 LCS DIRECC START FFCOOh 5000h 1000h 0h DIRECC. STOP 0h 5400h 5000h 1000h MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a CANT. T­WAIT 5 0 3 0 CSEN ISTOP MEM ESPC S N S S S S S S S S S S RDY N S N N
Página 62 de 136 10. UNIDAD DE CONTROL DE INTERRUPCIONES (ICU) 10.1. DESCRIPCION FUNCIONAL Existen dos caminos distintos para procesar los requerimientos de los periféricos de E/S. : polling e interrupciones. Polling requiere que la CPU pregunte periódicamente a cada uno de los dispositivos de E/S si requiere atención. Si el dispositivo en cuestión es lento la CPU preguntara un montón de veces antes de obtener una respuesta afirmativa. Esto implica que la CPU estará ocupada en tareas no productivas un alto porcentaje de su tiempo. Bajo el esquema de interrupciones, en cambio, el dispositivo que requiere atención tiene la posibilidad de interrumpir a la CPU; esta lo atiende dejando en suspenso lo que estuviese haciendo y luego retoma su trabajo. El 80186 tiene una única señal de entrada de interrupciones enmascarable. Expandir esta capacidad requiere un controlador de interrupciones. El controlador actúa como un filtro entre varias señales de interrupción y la única que admite el 80186 presentándole a este la más prioritaria de entre las presentes. Cuando la CPU recibe una interrupción comienza un BC denominado INTERRUP ACKNOWLEDGE CYCLE o INTA CYCLE (IC). Un INTA CYCLE es un ciclo de lectura especial durante el cual la CPU carga el tipo de interrupción desde el controlador de interrupciones. Una vez que la CPU conoce el tipo de interrupción que debe atender realiza la siguiente secuencia: 1) salva la Processor Status Word (PSW) en el STACK. 2) Blanquea los bits TRAP FLAG e INTERRUP ENABLE en la PSW. (Esto anula la posibilidad de single – step y nuevas interrupciones mientras se este atendiendo a la presente) 3) Salva el contenido de los registros CS e IP en el STACK 4) Carga en los registros CS e IP las direcciones obtenidas desde la INTERRUP VECTOR TABLE en función de tipo de interrupción a procesar 10.2. PRIORIDADES Y ENMASCARAMIENTOS Un esquema de manejo de interrupciones debe contemplar las siguientes funciones: a) Manejo de prioridades: Define el criterio de selección entre los pedidos de interrupción activos en un momento determinado. Aquella que tenga la mayor prioridad será atendida primero. b) Manejo del enmascaramiento: Muy frecuentemente se presenta la necesidad de enmascarar una interrupción. Enmascarar implica ingnorarla totalmente. Mientras una señal de interrupción permanezca enmascarada por mas que ella sea activada nunca deberá generar una interrupción a la CPU. Existen algunos esquemas de trabajo que debido a que son utilizados muy frecuentemente tienen nombre propio. FULLY NESTED En este esquema el atender una interrupción determinada implica automáticamente enmascarar todas aquellas de igual o menor prioridad. Dicho en otras palabras una rutina de servicio podrá ser
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 63 de 136 interrumpida, para atender otra interrupción, solo si esta es de mayor prioridad. Nunca una rutina de servicio podrá ser interrumpida para atender una interrupción de menor o igual prioridad. SPECIAL FULLY NESTED. Es similar al anterior pero el igual cambia de lugar. Una rutina de servicio puede ser interrumpida solo para atender a otra interrupción de igual o mayor prioridad. Este esquema requiere especial atención para no caer en un círculo reiterativo. Producida una interrupción se inicia su rutina de servicio y esta podría ser interrumpida inmediatamente por su misma señal de interrupción. Mas adelante se aclarara cuando es interesante utilizar este esquema. SPECIAL MASK MODE Este esquema responde a un modelo libre. El sistema provee la posibilidad de enmascarar o no libremente cualquiera de las interrupciones vía programación. El 80186 basa su unidad de control de interrupciones en el módulo 8259A 10.3. ARQUITECTURA DEL 8259A La figura muestra el esquema básico de un 8259A. El bloque DATA BUS BUFFER y R/D LOGIC constituye la inteface entre el 8259A y la CPU. Este bloque es el que coloca el tipo de interrupción en el bus durante el INTA CYCLE. Requerimientos de interrupción pendientes son almacenados en el INTERRUP REQUEST REGISTER. Este registro contiene un bit por cada una de las 8 señales de interrupción IRx.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 64 de 136 El registro puede programarse para que reconozca un nivel alto o una transición de cer o a uno. El PRIORITY SOLVER decide cual de todas las interrupciones presentes es la más prioritaria basado en el modo operativo que se haya programado y en el esquema de prioridades vigente y manejara en consecuencia la salida INT. Por default IR0 es la más prioritaria y IR7 la menos. El INTERRUP SERVICE REGISTER almacena para cada señal de interrupción un bit que indica si la correspondiente interrupción esta siendo atendida. Esto le permite al PRIORITY SOLVER conocer si una interrupción más prioritaria esta siendo atendida cuando llega una nueva. La rutina de servicio debe explícitamente borrar el bit correspondiente en el INTERRUP SERVICE REGISTER antes de devolver el control al programa principal. El INTERRUP MASK REGISTER contiene un bit para cada señal de interrupción IR0 a IR7 el cual permite habilitar o inhabilitar la señal correspondiente. 10.3.1. SECUENCIA TIPICA EN EL PROCESO DE INTERR UPCIONES. Supónganse las siguientes condiciones iniciales: a) el 8259A ha sido recién inicializado b) no existen interrupciones pendientes. c) Ninguna interrupción ha sido enmascarada d) Se usara el modo de operación FULLY NESTED Una secuencia típica sería: 1) la presencia de una señal en IR4 hace uno el bit 4 del INTERRUP REQUEST REGISTER. 2) El PRIORITY SOLVER chequea si algún bit correspondiente a interrupciones más prioritarias esta activado en el INTERRUP REQUEST REGISTER. No hay ninguno. 3) Puesto que el modo de operación es FULLY NESTED el PRIORITY SOLVER chequeara si alguna interrupción con prioridad mayor o igual a IR4 tiene su bit en uno en el INTERRUP SERVICE REGISTER. Esto evita que una interrupción interrumpa la rutina de servicio de otra de mayor o igual prioridad. 4) En este punto el PRIORITY SOLVER ha determinado que IR4 tiene la suficiente prioridad como para interrumpir a la CPU y por lo tanto la señal INT será activada. 5) Respetando sus propias prioridades la CPU iniciara en cuanto pueda un INTA CYCLE. 6) Con el primer frente de onda negativo de la señal INTA el 8259A hará uno el bit 4 del INTERRUP SERVICE REGISTER y cer o el bit 4 del INTERRUP REQUEST REGISTER. 7) Con el segundo frente negativo de la señal INTA el 8259A pone en el Bus de Datos la información del tipo de interrupción solicitado. 8) Con los datos obtenidos la CPU ejecuta la secuencia correspondiente a la interrupción tipo 4 iniciándose de esa forma la rutina de servicio correspondiente. 9) Supóngase que durante la ejecución de la rutina de servicio de IR4 se presenta la señal de interrupción IR9 10) El bit 9 del INTERRUP REQUEST REGISTER se hará igual a uno 11) El PRIORITY SOLVER detecta que IR9 es de menor prioridad que IR4 y por lo tanto no interrumpirá a la CPU 12) Cuando la rutina de servicio de IR4 finaliza envía al 8259A un comando END OF INTERRUP el cual hace que el bit 4 del INTERRUP SERVICE REGISTER sea igualado a cer o. Esto da por terminado el proceso de IR4.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 65 de 136 13) El PRIORITY SOLVER detecta que IR9 esta pendiente y como ahora no hay ninguna otra más prioritaria en servicio iniciara otra solicitud de un ciclo de interrupción vía INT. 10.4. ACTIVACION DE LA SEÑAL INT El PRIORITY SOLVER define si se debe activar la señal INT en base a: 1) el modo de operación y el esquema de prioridades 2) el estado de los bits de los registros INTERRUP REQUEST REGISTER, INTERRUP SERVICE REGISTER, INTERRUP MASK REGISTER 10.4.1. ESQ UEM A DE PRIORIDADES Luego de la inicialización del 8259A fija las prioridades de las interrupciones en el esquema default que corresponde a IR0 la más prioritaria; IR7 la menos. Es posible por programa variar este esquema definiendo cual interrupción se desea sea la menos prioritaria. Las restantes SIEMPRE se ordenaran en un esquema circular. Por ejemplo si IR5 es programada como la de menor prioridad las otras se ordenan con prioridades de mayor a menor: IR6, IR7, IR0, IR1, IR2, IR3, IR4, IR5. Las figuras que siguen muestran el esquema default y el modificado. ESQUEMA DEFAULT ESQUEMA MODIFICADO Por programa puede activarse también un procedimiento llamado ROTACION AUTOMATICA. Cuando este procedimiento esta activo cada vez que una rutina de servicio finaliza se le asigna a la interrupción asociada la menor prioridad. Esta asignación por supuesto genera la rotación de todas las restantes. Supóngase que IR0 era la más prioritaria cuando entro a ejecutarse la rutina de servicio correspondiente a IR4. Cuando esta finalice la menor prioridad será asignada a IR4 y por lo tanto IR5 será la más prioritaria, continuando con IR6, IR7, IR0, etc. La figura muestra dicha transición
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 66 de 136 Este esquema es útil cuando se tienen varios dispositivos a los cuales se les quiere asignar prioridades iguales. 10.4.2. M ODO DE OPERACIÓN El 8259A permite tres modos de operación FULLY NESTED, SPECIAL FULLY NESTED y SPECIAL MASK MODE. 10.4.3. ESTADO DE LOS BITS DEL IRR , ISR Y IM R De entre todos los bits en uno del INTERRUP REQUEST REGISTER se procesara aquel que tenga mayor prioridad. Supóngase que aplicando este criterio se selecciona IRx El PRIORITY SOLVER determinará activar INT de acuerdo al siguiente esquema Si el modo de operación es FULLY NESTED si no hay ningún bit en el INTERRUP SERVICE REGISTER igual a uno correspondientes a interrupciones con igual o mayor prioridad que IRx. Si el modo de operación es SPECIAL FULLY NESTED si no hay ningún bit en el INTERRUP SERVICE REGISTER igual a uno correspondientes a interrupciones con mayor prioridad que IRx. Y además El bit correspondiente a IRx en el INTERRUP MASK REGISTER esta en cer o Una vez activada la señal INT la CPU iniciara el INTA CYCLE cuya ejecución desencadenara el proceso necesario para iniciar la rutina de servicio correspondiente. Durante el INTA CYCLE el bit IRx del INTERRUP REQUEST REGISTER fue blanqueado y el del INTERRUP SERVICE REGISTER fue seteado. Para cerrar el ciclo es necesario blanquear el bit de IRx en el INTERRUP SERVICE REGISTER cuando la rutina de servicio finalice. 10.5. BLANQUEO DEL BIT EN EL INTERRUP SERVICE REGISTER Si un bit determinado en el INTERRUP SERVICE REGISTER esta en uno indica que la rutina de servicio correspondiente a dicha interrupción está en proceso (activa o suspendida pero no finalizado aun). El comando END OF INTERRUP, el cual puede ser enviado al 8259A por la CPU o generado automáticamente por el 8259A es el encargado de blanquear estos bits. Existen distintos tipos de comandos 1) Comando END OF INTERRUP NO ESPECIFICO Cuando es recibido por el 8259A este blanquea el bit más prioritario de los que se encuentran en uno dentro del INTERRUP SERVICE REGISTER. Cuando se opera en FULLY NESTED el bit en uno más prioritario corresponde a la rutina de servicio que esta activa y por lo tanto el comando no es necesario indicar en el comando cual es el bit a blanquear. 2) Comando END OF INTERRUP ESPECIFICO En este caso el comando informa en forma explícita cual es el bit a blanquear. 3) comando END OF INTERRUP AUTOMATICO Es generado automáticamente por el 8259A al final del INTA CYCLE. Por lo tanto los bits de INTERRUP SERVICE REGISTER permanecen en uno solamente durante cierto tiempo del INTA CYCLE. Ellos son blanqueados antes que la rutina de servicio correspondiente sea iniciada.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 67 de 136 Este comando solo puede ser usado por el módulo 8259A MASTER en un sistema conectado en cascada. 10.6. CONECCION EN CASCADA DEL 8259A El 8259A permite que en cada una de sus entradas de interrupción sea conectado otro módulo 8259A conformando así una conexión en cascada. El primero recibe el nombre MASTER, los otros de SLAVEs Si se tienen 8 SLAVEs la cantidad de señales distintas de interrupciones posibles asciende a 8 x 8 = 64 La figura muestra la conexión en cascada utilizada por el 80186 donde un 8259A es conectado a la entrada IR7 de 8259A MASTER El MASTER controla el accionar del SLAVE vía el CASCADE BUS (CAS2:0). Cada SLAVE en un sistema debe tener un ID que lo identifique unívocamente y que debe coincidir con el número de la línea IRx a la cual se encuentra conectado. El ejemplo siguiente muestra la interacción entre el MASTER y el SLAVE Asúmase que: 1) el 8259A MASTER es programado para operación en cascada, con un SLAVE conectado en IR7 y el esquema de prioridades default
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 68 de 136 2) el 8259A SLAVE es programado para operación en cascada, con un ID=7 y el esquema de prioridades default 3) ambos módulos han sido inicializados recientemente y no hay interrupciones pendientes. 4) Todas las interrupciones en ambos módulos tienen sus bits de enmascaramiento iguales a cer o. Una secuencia típica podría ser: 1) una interrupción setea el bit 2 en el INTERRUP REQUEST REGISTER del SLAVE 2) El PRIORITY SOLVER del SLAVE chequea si otros bits más prioritarios están seteados en el INTERRUP REQUEST REGISTER. Esto no es así. 3) El PRIORITY SOLVER del SLAVE chequea si otros bits correspondientes a interrupciones de mayor o igual prioridad que IR2 están seteados en INTERRUP SERVICE REGISTER. Esto no ocurre. 4) En este momento el PRIORITY SOLVER del SLAVE ha determinado que IR2 tiene suficiente prioridad como para requerir una in por lo que activara IR7 del MASTER. 5) El bit IR7 del INTERRUP REQUEST REGISTER del MASTER será seteado 6) El PRIORITY SOLVER del MASTER chequeara si IR7 tiene suficiente prioridad para solicitar una in (lo que en este caso resulta afirmativo) y por lo tanto se activara INT. 7) La CPU iniciara un INTA CYCLE. 8) En el primer frente negativo de INTA se: a) Blanqueará IR7 del INTERRUP REQUEST REGISTER del MASTER. b) Seteará IR7 del INTERRUP SERVICE REGISTER del MASTER. c) Como el MASTER conoce que sobre la línea 7 existe un SLAVE coloca en CAS2:0 el ID del SLAVE correspondiente, en este caso “7” d) Como el SLAVE reconoce en CAS2:0 su propio ID se encargará de blanquear su bit 2 en el INTERRUP REQUEST REGISTER y seteará su bit 2 en el INTERRUP SERVICE REGISTER. 9) En el segundo frente negativo de INTA. a) el SLAVE presentará sobre el data bus el tipo de interrupción solicitado, en este caso IR2 b) el MASTER reconoce que la interrupción proviene de un SLAVE y por lo tanto presenta alta impedancia al bus de datos durante este INTA CYCLE. 10) La CPU ejecutará la secuencia correspondiente al tipo de interrupción IR2 e iniciará la rutina de servicio correspondiente. 11) Cuando la rutina de servicio finaliza en este caso debe emitir dos END OF INTERRUP; uno para el MASTER y otro para el SLAVE. Estos dos END OF INTERRUP blanquearan el bit IR7 del INTERRUP SERVICE REGISTER del MASTER y el bit IR2 del INTERRUP SERVICE REGISTER del SLAVE. Es en este caso que resulta de utilidad el modo de operación SPECIAL FULLY NESTED. Así como están planteadas las cosas si ambos módulos usaran el modo FULLY NESTED mientras se procesa la rutina de servicio correspondiente a IR2 toda nueva in en las señales del SLAVE será ignoradas pues por mas que el PRIORITY SOLVER del SLAVE determine que son más prioritarias que IR2 al setear IR7 en el MASTER el PRIORITY SOLVER del MASTER las ignorará pues el bit 7 del INTERRUP SERVICE REGISTER del MASTER esta en uno. Especificando para el MASTER el modo de operación SPECIAL FULLY NESTED se resuelve el problema pero se genera otro que debe ser tenido en cuenta en la programación. Se ha dicho que cuando la rutina de servicio finaliza debe emitir dos END OF INTERRUP, uno para el SLAVE y el otro para el MASTER. El END OF INTERRUP para el MASTER solo debe
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 69 de 136 enviarse si la rutina de servicio corresponde a un único bit en uno en el INTERRUP SERVICE REGISTER de SLAVE. El procedimiento a seguir sería: a) Enviar un END OF INTERRUP especifico al SLAVE indicando el ir al que corresponde la presente rutina de servicio. b) Solo si el INTERRUP SERVICE REGISTER del SLAVE tiene todos cer os enviar el END OF INTERRUP al MASTER. c) Queda claro que el modo de operación SPECIAL FULLY NESTED solo puede ser usado por el módulo MASTER en un sistema en cascada. 10.7. ESQUEMA DE LA UNIDAD DE CONTROL DE INTERRUPCIONES EN EL 8259A En el 80186 la unidad de control de interrupciones esta compuesta por dos módulos 8259A conectados en cascada y tres registros (Request Latch Register). El módulo SLAVE controla 7 fuentes de interrupciones internas y una fuente de in externa (INT7). El módulo MASTER controla al SLAVE y 7 fuentes de interrupciones externas (INT0 a INT7). La siguiente figura muestra el esquema correspondiente
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 70 de 136 10.8. PROGRAMANDO EL MODULO 8259A El conjunto de registros de comandos que controlan al 8259A se divide en dos grupos: INITIALIZATION COMMAND WORDS (ICW) y OPERATION COMMAND WORDS (OCW). Los primeros son programados generalmente una única vez durante la inicialización del sistema mientras que los segundos son programados en distintos momentos durante la ejecución de un programa. Todos los registros son vistos a través de solo dos registros que se ubican en la PCB. En la escritura el registro a grabar queda determinado por: a) el registro dentro de la PCB seleccionado b) el valor de algunos bits a grabar c) la secuencia a través de la cual se graba d) En el caso de lectura, primero es necesario enviar un comando de lectura y luego leer el registro de la PCB que corresponda. 10.8.1. R EGISTROS DE CONTR OL Y COM ANDOS DEL 8259A Como en el caso del 80186 bajo estudio existen dos módulos 8259A en la PCB existirán dos juegos de registros de control. Para le módulo MASTER: MPICP0 y MPICP1 Para el módulo SLAVE. SPICP0 y SPICP1 10.8.2. SECUENCIA DE INICIALIZACION Los módulos 8259A deben ser inicializados. El contenido de sus registros es indefinido luego del reset. El diagrama que sigue muestra la secuencia obligatoria que debe seguirse en el proceso de inicialización
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 71 de 136 10.8.2.1.IC W1 La grabación de ICW1 se logra grabando el registro xPICP0 con el bit 4 igual a 1. Al grabar ICW1 se realizan las siguientes acciones a) b) c) d) El INTERRUP MASK REGISTER es blanqueado El IR7 es asignado a la prioridad más baja. El modo de operación SPECIAL MASK MODE es inhibido El bit de lectura de estados es seteado de forma tal que las lecturas sucesivas direccionarán al INTERRUP REQUEST REGISTER. Además según el valor de ciertos bits: e) Se selecciona si la detección de las interrupciones será vía nivel o por frente(bit 3). f) Se define la presencia del módulo SLAVE (bit 1). g) Se identifica que existirán ICW4 (bit 0). El formato del registro a grabar es: Bit 0 IC4 si = 1 existirá ICW4. Es obligatorio en un sistema cascada. Bit 1 SNGL si = 1 indica que no hay SLAVEs. Bit 3 LTIM si = 1 la detección será por nivel Bit 4 debe ser uno Los bits 2, 5, 6 y 7 deben ser cer o, los otros no son representativos pero se recomienda que sean cer o por cuestiones de compatibilidad futura. 10.8.2.2.IC W2 Se graba accediendo al registro xP1CP1. Solo son de significación los bits 3 a 7 donde debe indicarse la dirección base para el cálculo del tipo de interrupción que informará el módulo. Durante el INTA CYCLE el módulo debe informar a la CPU el tipo de interrupción que solicito la atención. El tipo de interrupción será calculado como: Dirección base * 8 + número de la línea que genera la interrupción Ejemplo: Bit 7 a 3 = 00101= 5 Dirección base = 5 * 8 = 40 Si la in la genera IR3 el 8259A informara como tipo de interrupción el 43 por lo que la CPU iniciara la rutina de servicio ubicada en la dirección CS:IP con IP igual al contenido del offset 43 * 4 = 172 dentro de la Interrupt Control Table y CS igual al contenido del offset 173 dentro de dicha tabla. Nota: los tipo de interrupción números 0 a 31 son reservados por INTEL 10.8.2.3.IC W3 También se graba accediendo al registro xP1CP1. Solo tiene sentido en un sistema donde existan SLAVEs. La secuencia fija el registro de destino, la segunda grabación sobre xP1CP1 indica que es ICW3. El significado de los bits a grabar cambia si se trata de un módulo MASTER o de SLAVE.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 72 de 136 Para el MASTER solo tienen significado los bit 0 a 7 y aquellos iguales a uno indicaran la presencia de un SLAVE en el IR correspondiente. Para un SLAVE solo tienen significado los bits 0 a 2 y representan el ID del SLAVE. 10.8.2.4.IC W4 También se graba accediendo al registro xP1CP1. Para el SLAVE siempre debe ser 0001h Para el MASTER solo los bits 0, 1 y 4 tienen significado: Bit 0 debe ser uno Bit 1 AEOI Si = 1 se selecciona el modo automático de generación de END OF INTERRUP Bit 4 SFNM si = 1 se selecciona el modo de operación SPECIAL FULLY NESTED. 10.8.3. C OM ANDOS DE O PERAC IÓN Existen tres comandos diferentes OCW1, OCW2 y OCW3 10.8.3.1.OCW1 Se graba accediendo a xP1CP1 y fija los valores del INTERRUP MASK REGISTER. Un bit igual a UNO inhibe toda interrupción desde el IR correspondiente. Los valores actuales del INTERRUP MASK REGISTER pueden ser leídos leyendo directamente el registro cP1CP1. 10.8.3.2.OCW2 Se graba accediendo al registro xP1CP0 con los bit 3 y 4 iguales a cer o. Los bits 5, 6 y 7 (EOI, SL, R) definen la operación deseada de acuerdo a la siguiente tabla. Los bits 0, 1 y 2 (L0, L1 Y L2) solo tienen significado en aquellos operaciones que así lo indican en la tabla precedente con un * y representan el número de la interrupcion 10.8.3.3.OCW3 Se graba accediendo al registro xP1CP0 con el bit 3 igual a uno y el bit 4 igual a cer o. Permite seleccionar el modo de operación SPECIAL MASK MODE y definir cual registro será leído cuando se lea xP1CP0. Los bits que proveen esta información tienen cada uno un bit de control que habilita o deshabilita la posibilidad de grabación del bit en cuestión para evitar posibles grabaciones por error. Bit 6 ESMM debe ser = 1 para poder modificar SPECIAL MASK MODE Bit 5 SMM selecciona SPECIAL MASK MODE. Bit 1 ERR debe ser = 1 para poder modificar RSEL. Bit 0 RSEL determina que registro será leído al leer xP1CP0 Si = 1 se leerá INTERRUP SERVICE REGISTER; si = 0 se leerá INTERRUP REQUEST REGISTER. Bit 3 debe ser igual a uno Bit 2, 4 y 7 deben ser cer o.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 73 de 136 10.8.4. FUENTES DE INTERRUPCION INTERNAS El 80186 tiene 11 fuentes de interrupciones internas. Tres corresponden a la unidad de temporizadores, 4 a la unidad de acceso directo a memoria y 4 a la unidad de entrada salida serie. Estas señales son manejadas por tres registros llamados Interrupt Request Latch Register que están representados en la PCB en las posiciones TIMIRL, DMAIRL SCUIRL La figura muestra el esquema correspondiente El formato de los tres registros INTERRUP REQUEST LATCH REGISTER es: DMAIRL Bits 0 a 3 representan los cuatro canales DMA. Un valor igual a uno significa que el canal correspondiente esta solicitando una interrupción. Bits 8 a 11 son bits de control que habilitan o deshabilitan la posibilidad de grabar los cuatros menos significativos. Solo si son iguales a uno habilitan la modificación del correspondiente bit del otro grupo. SCUIRL Bits 0 a 3 representan los cuatro canales SERIE. Un valor igual a uno significa que el canal correspondiente esta solicitando una interrupción. Bits 8 a 11 son bits de control que habilitan o deshabilitan la posibilidad de grabar los cuatros menos significativos. Solo si son iguales a uno habilitan la modificación del correspondiente bit del otro grupo.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 74 de 136 TIMIRL Bits 0 a 2 representan los tres temporizadores. Un valor igual a uno significa que el temporizador correspondiente esta solicitando una interrupción. Bits 8 a 10 son bits de control que habilitan o deshabilitan la posibilidad de grabar los tres menos significativos. Solo si son iguales a uno habilitan la modificación del correspondiente bit del otro grupo. Los bits menos significativos pueden leerse y/o grabarse, los que representan a las mascaras son solo de lectura. La rutina de servicio que maneja la in generada por un periférico integrado debe blanquear antes de devolver el control el bit que le corresponda en el INTERRUP REQUEST LATCH REGISTER pues sino la línea IR permanecerá alta y se requerirá otra interrupción. Por ejemplo antes de finalizar la rutina de servicio de una in generada por el temporizador TIME1 debe blanquearse el bit correspondiente grabando en el registro de la PCB TIMIRL el valor 0200h. 10.9. EJEMPLOS DE PROGRAMAS El primer programa muestra la secuencia de instrucciones necesarias para inicializar la unidad de control de interrupciones. MOD186 NAME 80C186EC_ICU_INITIALIZATION_TEMPLATE ; El siguiente código debería encontrarse típicamente en la sección de booteo de un sis tema. ; se asume que las ins trucciones que asignan valor a los mnemotécnic os correspondientes a los ; registros de la PCB s e enc uentran en el archivo “ pcb_equates.inc” $INCLUDE (PCB_EQUATES.INC) BOOT_ROM SEGMENT ;es el nombre del segmento ASSUME CS:BOOT_ROM, DS:NOTHING ; se blanquea el bit que habilita las interrupciones en la CPU CLI ; Se ajustará la Interrupt Vector Table. ; Solamente se mostrara el código para la inicialización de la interrupción del TIME0, para el cual se ; usará el tipo de interrupción número 28h ;inicialización. ; XOR AX, AX ;Clear MOV DS, AX ;CS apunta al Vector Table MOV AX, OFFSET TIM0_HANDLER MOV BX, 28H*4 MOV DS:[BX], AX ;Almacena el offset del handler MOV AX, SEG TIM0_HANDLER MOV BX, 28H*4+2 MOV DS:[BX], AX ;Almacena el segmento del handler
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 75 de 136 ;El resto de los vectores debería inicializarse en forma similar. ;Comienza la inic ialización del módulo 8259A SLAVE MOV DX, SPICP0 ;ICW1 vía SPICP0 XOR AH, AH ;blanquea los bits reservados MOV AL, 10001B ;Detec ción por flanco, casc ada ,requiere IC4 OUT DX, AL ;se define como dirección base 28h en el SLAVE vía ICW2 MOV DX, SPICP1 ;ICW2 vía SPICP1 MOV AL, 28H ;Direcc ión base es 28H (Type 40) OUT DX, AL ; En ICW∙ se define como ID del SLAVE “ 7” . MOV DX, SPICP1 ;ICW3 vía SPICP1 MOV AL, 7 ;ID=7 OUT DX, AL ; se c ompleta la inicializac ión con ICW4 MOV DX, SPICP1 ;ICW4 vía SPICP1 MOV AL, 1 ;No special fully nes ted mode ;No AEOI mode OUT DX, AL ;La inic ialización del módulo SLAVE esta terminada ;Comienza la inic ialización del módulo MASTER MOV DX, MPICP0 XOR AH, AH MOV AL, 10001B ;ICW1 vía MPICP0 ;se blanquean los bits reserv ados ;Detec ción por flancos, cascada, ;requiere ICW4 OUT DX, AL ;Se define como dirección base para el MASTER 20h ; Esto creara un block contiguo de direcciones para la unidad de control de interrupciones desde el tipo de interrupción 20h hasta el 2fh. MOV DX, MPICP1 ;ICW2 vía MPICP1 MOV AL, 20H ;Direcc ión base 20H (Type 32) OUT DX, AL ;Se continua con ICW3
MOV DX, MPICP1 ;ICW3 vía MPICP1 MOV AL, 80H ;el módulo SLAVE esta en IR7 OUT DX, AL ;ICW4 termina la inic ialización MOV DX, MPICP1 ;ICW4 vía MPICP1 MOV AL, 1B ;No special fully nested mode, ;no AEOI mode OUT DX, AL ;Inicialización es completa ; Se desenmascaran las interrupciones. BOOT_ROM STI ENDS El segundo muestra la codificación de una rutina de servicio. INT_HNDLERS SEGMENT ASSUME CS:INT_HNDLRS
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 76 de 136 TIM0_HANDLER PROC FAR STI ;Necesario si se desea anidar interrupciones ;Aquí debería insertarse el código especifico para el tratamiento de la interrupción ; instrucc iones requeridas al final de la rutina MOV DX, TIMIRL MOV AX, 0100H OUT DX, AL MOV DX, MPICP0 MOV AX, 20H OUT DX, AL MOV DX, SPICP0 MOV AX, 20H OUT DX, AL IRET TIM0_HANDLER ENDP INT_HNDLRS ENDS ;Blanquea la interrupción en el registro IRLR ;TIMER 0 (MSK0=1, TIR0=0) ; ;Comando EOI vía OCW2 , No especifico al MASTER ;Comando EOI vía OCW2 ;No especifico ;al SLAVE ;Return 10.10. EXPANDIENDO LA CANTIDAD DE SEÑALES DE INTERRUPCION. Si se deseara expandir la capacidad de manejo de interrupciones del 80186 más allá de las 8 aceptadas en su estructura interna podrían conectarse dispositivos 8259A externamente a cada una de las señales IR0 a IR6 del 80186. Supóngase el caso de conectarlo a IR6. La figura muestra el conexionado requerido: Define al 8259A como SLAVE GSC – CS es la conexión que habilita la programación del 8259A.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 77 de 136 Como se ha visto anteriormente toda la programación se realiza solo a través de dos direcciones. Cuando se trata de los dispositivos 8259A integrados dichas direcciones eran xPICP0 y xPICP1 que se encuentran en la PCB. Cuando el 8259A es externo también se le deben asignar dos direcciones pares, de 16 bits cada una y consecutivas. Aquella que tenga A1 igual a cer o corresponderá a SPICP0 y la que tenga A1 igual a uno a SPICP1. Cuando dichas direcciones se encuentren presentes en el bus de direcciones la señal CS deberá activarse. Siguiendo los procedimientos descriptos anteriormente podrá entonces generarse las ICW de inicialización y las OCW de operación que se requieran para la programación del módulo 8259A. Si se decide utilizar la unidad selectora de chips para seleccionar al 8259A esta debe configurarse en consecuencia. Como el mínimo espacio de direcciones mapeado por una de las señales de GCS es de 64 direcciones en este caso se desperdician 62 (solo se usan dos registros de 16 bits cada uno). Cuando una de las señales IR0 a IR7 de este 8259A se activa, el módulo establece si tiene entidad como para activar INT. En caso afirmativo esto genera una activación en IR6 del MASTER del 80186 el cual solicitará un INTA CYCLE. Cuando la CPU genere el INTA CYCLE el MASTER reconoce que para IR6 tiene un SLAVE conectado y entonces genera el ID correspondiente en CAS2:0 el cual también se presentará en AD15:13 y por lo tanto transferido al SLAVE externo. Este reconoce su propio ID y responderá entregando en el bus de datos (los 8 bits menos representativos) el tipo de interrupción requerido. Si de acuerdo con las características técnicas del dispositivo utilizado es necesario generar WAIT STATES se puede usar la facilidad que en ese sentido brinda la unidad de selección de chips.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 78 de 136 11. UNIDAD TEMPORIZADORA Y DE CONTADORES. 11.1. DESCRIPCION FUNCIONAL. La unidad temporizadora y de contadores permite tener un adecuado manejo del tiempo. Aplicaciones típicas que requieren esta funcionalidad son: 1) 2) 3) 4) 5) Actualización de una variable cada x milisegundos. Generación de ondas cuadradas o rectangulares. Generación de ondas tipo UN­Disparo. Medición del tiempo transcurrido entre dos eventos. Generación de un evento determinado tiempo después de producido otro o con una frecuencia especifica. La figura muestra el esquema general de la unidad correspondiente al 80186 Los tres contadores TIMER0, TIMER1, TIMER2 son manejados indistintamente por la CPU o por el Counter Element pero en forma sincronizada. Cada contador es servido en un bit time diferente de un ciclo de 4 bits time. Durante los tres primeros bits time son servidos los contadores TIMER0, TIMER1 y TIMER2 respectivamente, reservándose el cuarto bit time como IDLE. Cuando un TIMER es servido su valor corriente es incrementado si corresponde y comparado con uno o dos valores máximos que el TIMER puede tener asociados. Por programa se define que hacer cuando la comparación resulta por igual. Las alternativas son: Bloquear el TIMER para impedir que siga trabajando(un único ciclo) o dejarlo habilitado y permitir un trabajo cíclico.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 79 de 136 Interrumpir o no a la CPU. Por otro lado el valor corriente del contador siempre será reseteado a cer o TIMER0 y TIMER1 son similares pero en cambio TIMER2 solo tiene un subconjunto de las funciones de TIMER0 o TIMER1. En cambio es el único que puede funcionar como disparador para los otros dos cuando su propio valor corriente alcanza su máximo valor. Cada TIMER tiene asociado tres registros básicos: TxCON registro que controla el funcionamiento del t. TxCNT registro que almacena el valor corriente del t. TxCMPA registro que almacena el valor máximo del t. Los TIMERS 0 y 1 tienen un segundo registro para almacenar un valor máximo llamado TxCMPB. Según el valor de uno de los bits de TxCON el valor corriente será comparado con TxCMPA o con TxCMPB. 11.2. DIAGRAMA OPERACIONAL El diagrama de flujo que sigue muestra la actividad desarrollada tanto para TIMER0 como para TIMER1 cada vez que el TIMER correspondiente sea servido. En primer lugar se determina si el valor corriente debe ser o no incrementado. 1 2 3 4 5 6
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 80 de 136 1 EN bit de TxCON que indica si el TIMER esta habilitado o no. 2 EXT bit en TxCON que indica si el TIMER será activado EXTERNA o INTERNAMENTE Si EXTERNAMENTE cuando la señal TxIn transite de cer o a uno. 3 RTG bit de TxCON que solo tiene significado si EXT = 1 e indica que si TxIn pasó de cer o a uno el contador debe ser reseteado. 4 Si EXT = 0 la señal TxIn debe permanecer en uno para que el TIMER sea servido. Mientras TxIn sea cer o el valor corriente del TIMER permanecerá constante. 5 6 P bit del TxCON que indica si el TIMER será pre – escalado. Si el TIMER es activado internamente será normalmente servido a una frecuencia igual a CLKOUT / 4. Si se desea trabajar a frecuencias menores se debe hacer P = 1 y colocar en valor máximo de TIMER2 el divisor deseado. Con P = 1 el valor corriente de TIMER0 o TIMER1 solo será incrementado si además de cumplirse el resto de los requisitos establecidos resulta que TIMER2 –alcanzo su máximo valor durante el tiempo transcurrido desde la ultima vez que el TIMER en cuestión fue servido y este servicio. Luego de tomada la decisión acerca de si debe o no incrementarse el valor corriente se analizan las restantes acciones a ejecutar de acuerdo al siguiente diagrama: 7 No 8 9 Yes 9 Set MC = 1 Set MC = 1 10
9 Set MC = 1 10 11 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 81 de 136 12 7 ALT bit de TxCON que indica si se está usando un único valor máximo o dos. Trabaja en asociación con: 8 RIU bit de TxCON que indica en el caso de trabajar con dos valores máximos contra cual de ellos deberá compararse el valor corriente actual. Si RIU = 0 se compara contra TxCMPA; si RIU = 1 se compara contra TxCMPB. 9 Si no se alcanzó el valor máximo correspondiente no hay mas nada que hacer. En caso contrario se fija el valor de la señal de salida TxOUT, se fija MC = 1, se determina si se dará por terminado el ciclo o se iniciará automáticamente uno nuevo y por ultimo si debe generarse o no una interrupción a la CPU. 10 CON bit de TxCON que indica si se desea trabajar en modo continuo o único ciclo. En este ultimo caso, completado el ciclo el TIMER se inhabilita. 11
INT bit de TxCON que indica si se desea interrumpir a la CPU cada vez que termina un ciclo. 12 Cada vez que el TIMER alcanza su valor máximo es reseteado haciendo que su valor corriente sea cer o. TIMER2 es un caso particular dentro de los TIMERS. No tiene señal de entrada ni de salida asociadas por lo que no puede generar ninguna señal de salida y solo puede ser activado permanentemente en forma interna. Además solo admite un único valor máximo. Los bits EXT; RTG; P; ALT y RIU no existen en el registro T2CON. 11.3. REGISTROS ASOCIADOS A CADA CONTADOR O TIMER. Las figuras que siguen muestran los formatos de los registros mencionados previamente. T0CON y T1CON T2CON MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 82 de 136 MC: Este bit es seteado a uno cuando el contador alcanza su máximo valor. El debe ser r eseteado gr abando el r egistr o que lo contiene. Esto no es hecho en for ma automática INH: Es el bit que habilita la posible grabación del bit EN. Este ultimo solo podrá grabarse si simultáneamente se fija INH = 1. T0CNT, T1CNT y T2CNT T0CMPA, T0CMPB, T1CMPA, T1CMPB y T2CMPA 11.4. PROGRAMACION DE LA UNIDAD TEMPORIZADORA Y DE CONTADORES. La secuencia de inicialización recomendada es la siguiente: 1) Si se usará interrupciones programar la INTERRUP VECTOR TABLE en correspondencia. 2) Blanquear el correspondiente TxCNT. Luego del reseteado el sistema los valores asumidos por cada uno de los contadores es indeterminado. 3) Grabar los valores requeridos en TxCMPA y TxCMPB según corresponda. 4) Grabar TxCON con los bits adecuados. Entre ellos por supuesto deberá estar EN para habilitar al contador. Si se usará TIMER2 para pre – escalar es necesario habilitarlo a posteriori del TIMER que lo requerirá. 11.5. COMENTARIOS ADICIONALES 11.5.1. FUENTES PARA LA OBTENC ION DEL CLOCK DE LO S CONTADORES. Los contadores son incrementados una vez en cada evento. Un evento puede ser la transición de cer o a uno de la señal que alimenta al pin de entrada (casos de TIMER0 y TIMER1), un pulso generado cada cuatro ciclos del clock de la CPU o un pulso generado por TIMER2 al alcanzar su valor máximo. TIMER0 y TIMER1 pueden contar las transiciones de cer o a uno de la señal de entrada si son programados con EXT = 1. Las transiciones del pin externo son sincronizadas por el clock de la CPU antes de ser presentadas a los circuitos de la unidad temporizadora. 11.5.2. M ODOS DE OPER ACIÓ N DE LOS CONTADORES Cuando el valor corriente de un contador iguala su máximo valor es reseteado a cer o. El máximo valor nunca será grabado en el registro pues la comparación y el reseteo se realizan en el mismo bit time. Es importante destacar que la comparación es solo por igual y no por igual o mayor . Si en el inicio resultara que el valor corriente es superior al valor máximo el contador seguirá incrementándose
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 83 de 136 hasta alcanzar el valor 0FFFFh, luego asumirá el valor cer o y seguirá hasta v alcanzar finalmente el valor máximo. Cuando el valor corriente resulta igual al valor máximo se setea en uno el bit MC. Este bit no es reseteado automáticamente y es necesario hacerlo manualmente (grabando el registro TxCON) si así se lo requiere. El valor máximo puede ser modificado en cualquier momento grabando el registro correspondiente. 11.5.3. RE – INICIALIZACION. La señal de entrada presente en el pin TxIn afecta al contador de tres formas diferentes dependiendo del valor que asuman los bits EXT y RTG en el TxCON correspondiente. EXT = RTG = 0 En este caso el contador reacciona a eventos internos y es sensitivo al valor de la señal TxIn y no a sus transiciones. TxIn actúa como una señal de inhibición externa. Si es igual a uno el contador esta habilitado, en caso contrario el contador esta inhibido. EXT= 0, RTG = 1 en este caso el contador reacciona a eventos internos pero la señal TxIn actúa como reinicializadora. Una transición de cer o a uno en TxIn hará que el contador sea reseteado a cer o. Luego de que el contador sea habilitado con EN = 1 la cuenta comenzará con la primera transición de cer o a uno de TxIn. En el modo con dos valores máximo el reseteo debido a TxIn no modifica la variable RIU. EXT = 1 la señal en TxIn actúa directamente como si fuera el clock del contador. 11.5.4. ONDAS RECTANGULARES Y UN – DISPARO. La señal de salida asociada a los TIMER0 y TIMER1 puede adoptar dos formatos distintos. Cuando el contador tiene un único valor máximo asociado la señal tiene la forma de un único pulso de duración igual a un bit time el cual indica la finalización de un ciclo. Esta salida ocurre durante el bit time posterior a aquel en el que el contador alcanzó su valor máximo. La siguiente figura muestra esta situación: Cuando existen dos valores máximos la señal tiene la forma de una onda rectangular que representa a la variable RIU. Mientras RIU = 0 se usara como valor de comparación TxCMPA y la señal de salida será uno, mientras RIU = 1 se usará TxCMPB y la señal de salida será cer o. Por ejemplo si TxCMPA = 10, TxCMPB = 20 y CLKOUT es 12,5 MHz, el contador trabajara a una frecuencia de 12,5 / 4 = 3.125 MHz y como se necesitaran 30 pulsos para completar un ciclo la onda de salida será de una frecuencia de 104,166 KHz. Permanecerá el 33,33 % en un valor y el 66,66% en el otro.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 84 de 136 11.5.5. HABILITANDO Y DESHABILITANDO LOS CONTAR ORES. Cada contador tiene asociado en el registro TxCON el bit EN que habilita o deshabilita el funcionamiento del contador. El bit INH controla el acceso al bit EN. Si EN = 0 el contador no es incrementado cuando es servido. El valor de EN puede ser manejado por programa o por el sistema. La unidad de contadores hace EN = 0 al finalizar un ciclo si el bit CONT es cer o. La finalización de un ciclo se produce cuando el valor corriente del contador iguala al valor máximo especificado en TxCMPA si se trata de una operación con un solo valor máximo (ALT = 0) o cuando el valor corriente alcanza el valor máximo especificado en TxCMPB si ALT = 1. Para el TIMER0 y el TIMER1 cuando trabajan activados por el clock interno la señal TxIn también puede actuar como inhibidora. Si RTG = 0 un nivel cer o en TxIn inhibe el funcionamiento del contador, mientras que si RTG = 1un frente de onda de cer o a uno lo resetea. Si la señal actuará por nivel su valor debe permanecer al menos cuatro bits time del clock de la CPU. 11.5.6. INTER RUPCIONES Todos los contadores pueden generar interrupciones a la CPU. Si bien todos comparten un único interrupt request cada uno tiene su propia ubicación en la INTERRUP VECTOR TABLE y su prioridad. TIMER0 tiene la mayor prioridad y TIMER2 la menor. La interrupción se generará en función del valor que asuma el bit INT en el registro TxCON. Si ALT = 0 la interrupción se generará cuando el valor corriente alcance al valor de TxCMPA. Si ALT = 1 la interrupción se generará tanto cuando el valor corriente alcance TxCMPA como cuando alcance TxCMPB. 11.5.7. TIEM POS DE SETUP Y RETENCION DE LAS SEÑALES DE ENTRADA Para asegurar el correcto desempeño de los contadores la señal de entrada debe satisfacer ciertos requerimientos respecto del frente de onda del clock del sistema. La señal de entrada debe ser valida Tchis antes del flanco positivo de CLKOUT y debe permanecer valida al menos Tchih luego de dicho pulso. Si estos requerimientos no son satisfechos la señal de entrada no será reconocida hasta el próximo frente de onda del clock. 11.6. EJEMPLOS 11.6.1. IM PLEM ENTACION DE UN RELOJ 11.6.1.1. Descr ipcion Gen er al Supóngase que se desea tener en memoria tres variables que representen la hora, los minutos y los segundos que lleva un programa en ejecución. CLKOUT = 16 Mhz Frecuencia de servicio de contadores = 16 / 4 = 4 Mhz 1/f = 0,25 10 ­6 seg. = 250 10 ­6 milisegundos Mínimo intervalo exigido para la actualización = 10 milisegundos. Se usara t2. T2CMPA = 10 / 250 10 ­6 =10.000.000 / 250 = 40.000 Inicialización de la Unidad de Control de Interrupciones a) Blanquear el INTERRUP REQUEST LATCH REGISTER de la unidad de temporizadores (TIMIRL) y las variables que almacenaran horas, minutos y segundos (HOR; MIN; SEG) b) SLAVE ICW1 se elige flanco, presencia de SLAVE e ICW4
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 85 de 136 ICW2 dirección base para el SLAVE = 104 ICW3 id del SLAVE = 7 ICW4 valor fijo = 0001h c) MASTER ICW1 se elige flanco, presencia de SLAVE e ICW4 ICW2 dirección base para el MASTER = 96 ICW3 identifica al SLAVE en el IR7 ICW4 valor en 0011h modo SPECIAL FULLY NESTED Con las direcciones base especificada para el SLAVE (104) y el MASTER (96) se ha generado el siguiente block de tipo de interrupciones: 8259A MASTER MASTER MASTER MASTER MASTER MASTER MASTER MASTER SLAVE SLAVE SLAVE SLAVE SLAVE SLAVE SLAVE SLAVE IR 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 TIPO DE INTERR UPCION 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 FUNCIO N INT0 INT1 INT2 INT3 INT4 INT5 INT6 SLAVE TIMER0 TIMER1 DMA2 DMA3 TIMER2 RX 0 TX 0 INT 7 DESPLAZAM DENTRO DE LA IVT 96*4=384d=180h 184h 188h 18Ch 190h 194h 198h 19Ch 1A0h 1A4h 1A8h 1ACh 1B0h 1B4h 1B8h 1BCh Inicialización de la tabla de vectores de interrupciones c) colocar en el desplazamiento 1B0 de la IVT el desplazamiento de la dirección donde se alojará la ISR que tratará la interrupción y en el desplazamiento 1B2 de la IVT el segmento de la dirección donde se alojará la ISR que tratará la interrupción. e) Inicialización del TIMER2 T2CNT = 0 T2CMPA = 40.000d = 9C40h T2CON = 1110 0000 0000 0001 Habilita interrupción Modo continuo
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 86 de 136 Permite habilitar al contador Habilita al contador f) Habilitar interrupciones haciendo uno el bit correspondiente en la PSW En la dirección SEG:DESPLAZ especificada se codificará la rutina de servicio de la interrupción. g) ProcesoInterrupcionTimer2 (cada 10 milisegundos) Sumar 1 a MILISEG Si MILISEG = 100 hacer MILISEG = 0; SEG = SEG + 1 Si SEG = 60 hacer SEG = 0; MIN = MIN + 1 Si MIN = 60 hacer MIN = 0; HOR = HOR + 1 h) Blanquear en el INTERRUP REQUEST LATCH REGISTER el bit correspondiente a TIMER2 i) Enviar un SPECIFIC EOI de TIMER2 al SLAVE Si todos los bits del ISR del SLAVE están en cero enviar un SPECIFIC EOI de IR7 al MASTER Emitir IRET instrucción que finaliza toda rutina de servicio de interrupciones. 11.6.1.2. Progr ama $ TITLE (82C59 Progr amming Example) $ M OD186 NAM E ICU_DEM O $INCLUDE (C:\EV186EC\ECPCB.INC) ; CO NTIENE TODAS LAS DEFINIC IONES DE LA PC B M ASTER_BASE_TYPE EQ U 96 ;TYPE*4 = BASE ADDR OF M ASTER SLAVE_BASE_TYPE EQ U 104 ;TYPE*4 = BASE ADDR OF SLAVE INT_TIM ER2_TYPE EQ U SLAVE_BASE_TYPE + 4 DATA HOR M IN SEGU M SEG DATA ENDS EC_CODE M AIN: SEGM ENT PUBLIC ’DATA’ PUBLIC H OR, M IN, SEGU, M ILISEG DB ? DB ? DB ? DB ? SEGM ENT AT 0100H ASSUM E CS:EC _CODE CLI CALL INIT_ICU ;PUT CODE IN SRAM ;DISABLE INTERR UPTS ;INITIALIZE INTERRUPT CONTR OL ;UNIT ;INITIALIZE INTERRUPT VECTORS CALL SETVECT CALL SETTIM ER 2 STI ;ENABLE INTERRUPTS J M P $ ;WAIT FOR INTER RUPTS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;;THIS PRO CEDUR E INITIALIZES THE INTERNAL M ASTER AND SLAVE 82C59 OF TH E ;80C186EC PROC ESSO R ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INIT_ICU PRO C ;ALL OF THE INTERNAL PERIPHERAL INTERRUPT R EQ UEST LATC HES SH OULD ;BE CLEAR ED FOR SAFE M EASURE M OV DX, SCUIRL M OV AX, 0F00H OUT DX, AX
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 87 de 136 M OV DX, TIMIRL OUT DX, AX M OV DX, DM AIRL OUT DX, AX ;INITIALIZE SLAVE 82C 59 M ODULE M OV DX, SPICP0 XOR AH, AH M OV AL, 11H OUT DX, AL ;SET BASE INTERRUPT TYPE AT 104 FO R SLAVE M OV DX, SPICP1 M OV AL, SLAVE_BASE_TYPE OUT DX, AL ;SLAVE ID M OV DX, SPICP1 M OV AL, 7 OUT DX, AL M OV DX, SPICP1 M OV AL, 1 ;ICW1 ­>SPICP0 ;CLEAR RESERVED BITS ;EDGE TRIG, C ASCADE, IC4 REQ RD ;ICW2 ­>SPICP1 ;BASE ADDRESS AT 01A0H ;ICW3 ­>SPICP1 ;ID=7 ALLWAYS FOR INTERNAL ; ;SLAVE ;ICW4 ­>SPICP1 ;NO SFNM , NO AEOI, FACTORY TEST ;CO DES SET OUT DX, AL M OV DX, SPICP1 ;OC W1 ­>SPICP1 M OV AL, 07FH ;UNM ASK INT7 (IR7 OF SLAVE) OUT DX, AL ;INITIALIZE M ASTER MO DULE M OV DX, M PICP0 ;ICW1 ­>M PICP0 XOR AH, AH M OV AL, 11H ;EDGE TRIG, C ASCADE, IC4 REQ RD OUT DX, AL M OV DX, M PICP1 ;ICW2 ­>M PICP1 M OV AL, M ASTER_BASE_TYPE ;BASE TYPE FOR M ASTER OUT DX, AL ;BASE ADDRESS AT 0180H M OV DX, M PICP1 ;ICW3 ­>M PICP1 M OV AL, 80H ;SLAVE M ODULE IS ALWAYS ON IR7 OUT DX, AL M OV DX, M PICP1 ;ICW4 ­>M PICP1 M OV AL, 1 ;NO SFNM , NO AEOI, FACTORY TEST ;CO DES OUT DX, AL M OV DX, M PICP1 ;OC W1 ­>MPIC P1 M OV AL, 0H ;UNM ASK ALL M ASTER IR LINES OUT DX, AL RET INIT_ICU ENDP ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;SET INTERRUPT VECTOR TABLE ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SETVECT PRO C PUSH AX ;SAVE REG ISTERS USED PUSH DS PUSH DI XOR AX, AX ;CLEAR ACC UM ULATO R
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 88 de 136 M OV DS, AX ;CLEAR DATA SEGM ENT M OV DI, INT_TIM ER2_TYPE * 4 ;M OVE BASE ADDRESS O F ;TIM ER2 VECTO R IN TO DI M OV WORD PTR DS:[DI], OFFSET INT_TIMER2_ISR M OV WORD PTR DS:[DI+2], SEG INT_TIMER2_ISR POP DI POP DS POP DX RET ENDP SETVECT ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;SET TIM ER2 RO UTINE ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SETTIM ER2 PRO C FAR PUSH AX ;SAVE REG ISTERS USED PUSH DX M OV DX, T2C NT ;CLEAR COUNT REGISTER XOR AX, AX OUT DX, AL M OV DX, T2C MPA ;SET M AXIM UM C OUNT VALUE M OV AX, 40000 OUT DX, AL M OV DX, T2C ON ;SET UP THE C ONTROL WOR D: M OV AX, 0E001H ;ENABLE C OUNTING, OUT DX, AL ;GENERATE INTERRUPT ON M C, ;CO NTINUOUS CO UNTING POP DX POP AX IRET SETTIM ER2 ENDP ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;INTERRUPT SERVICE ROUTINE: INT_TIM ER2_ISR ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INT_TIM ER2_ISR PRO C FAR PUSH AX ;SAVE REG ISTERS USED PUSH DX CM P _MSEC, 99 ;HAS 1 SEC PASSED? J AE BUM P_SECOND ;IF ABOVE OR EQ UAL... INC M ILISEG J M P SHORT RESET_INT_CTL BUM P_SEC OND: M OV _M SEC, 0 ;RESET M ILLISEC OND CM P M IN, 59 ;HAS 1 M INUTE PASSED? J AE BUM P_MIN INC SEGU J M P SHORT RESET_INT_CTL BUM P_M IN: M OV SEGU, 0 ;RESET SECOND CM P M IN, 59 ;HAS 1 HOUR PASSED? J AE BUM P_HOUR INC M IN
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 89 de 136 J M P SHORT RESET_INT_CTL BUM P_HOUR: M OV M IN, 0 INC HOR J M P R ESET_INT_C TL ;RESET M INUTE M OV DX, SPICP0 ;CLEAR IN­SERVICE BIT OF SLAVE ;BY ISSUING EOI SPECIFIC FOR ;TIM ER2 RESET_INT_CTL: M OV AL, 64H OUT DX, AL M OV DX,SPICP0 M OV AL,0BH OUT DX,AL M OV DX,SPICP0 IN AL,DX CM P AL,0 J NE END_RDS M OV DX, M PICP0 END_RDS INT_TIM ER2_ISR EC_CODE ;SET ISR FOR READ :READ ISR ;CLEAR IN­SERVICE BIT OF M ASTER ;BY ISSUING EOI M OV AL, 20H OUT DX, AL POP DX POP AX IRET ENDP ENDS END M AIN 11.6.2. GENERAR UNA ONDA REC TANGULAR. Se desea generar la siguiente forma de onda: 30 miliseg. 20 miliseg Se asume CLKOUT = 16 MHz, por lo tanto la frecuencia de servicio a los contadores será de 4 MHz. En 30 miliseg el contador alcanzará el valor de 30/250x10 ­6 = 120.000d = 1D4C0 y por lo tanto se excede la capacidad del contador. La solución es usar a TIMER2 como pre – escala. Si se fija como valor máximo de TIMER2 el valor 9C40h = 40.000d y se lo usa como pre – escala de TIMER1 resultará que TIMER1 alcanzará el valor 3 luego de 120.000 servicios de contadores. Para que transcurran 20 miliseg, deben registrarse 80.000d pulsos. Como TIMER2 genera uno cada 40.000, TIMER1 alcanzará el valor de 2 en ese tiempo. Tomando como base el esquema del ejemplo anterior deberán cambiarse los siguientes ítems.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 90 de 136 d) como no se usaran interrupciones no es necesario inicializar la tabla del vector de interrupciones. e) inicialización de los TIMERs T1CNT = 0 T1CMPA = 3 T1CMPB = 2 T1CON = 1100 0000 0000 1011 No interrupt modo continuo Permite habilitar dos valores máximos Habilita pre – escala T2CNT = 0 T2CMPA = 9C40h = 40.000d T2CON = 1100 0000 0000 0001 No interrupt modo continuo Permite habilitar Habilita Como se especifico no interrumpir estas no se generaran cada vez que TIMER1 alcance alguno de los valores máximos especificados pero la señal T1OUT irá asumiendo los valores cer o y uno de acuerdo a lo solicitado.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 91 de 136 12. PREGUNTAS, PROBLEMAS Y ALGUNAS SOLUCIONES 1) Cual es la posición de memoria mas alta en la que puede comenzar un bloque si se lo quiere seleccionar con la Chip Select Unit del 80186. Resp: FFC00 pues todo bloque debe comenzar en una dir ección cuyos últimos 10 dí­ gitos sean cer os. 2) En el 80186 cual es el máximo numero posible de interrupciones externas que pueden manejar­ se A) en forma standard, usando solo el 80186 B) en total, usando dispositivos adicionales. Resp: A) 8 B) 7 8259A conectados a las 7 inter r upciones exter nas de la 0 a la 6 dan 56 mas la IR7 son 57 en total 3) Describa las características de cada una de las tres formas posibles de manejar las prioridades en las interrupciones del 80186. Resp: Full nested pr ior ity una r utina de ser vicio solo puede ser inter r umpida por otr a de mayor pr ior idad Special full nested pr ior ity idem per o de mayor o igual pr ior idad Special Mask mode el usuar io maneja el esquema que desea. 4) Escriba las instrucciones que permitan inicializar el chip select número 4 de forma tal que ma­ pee sobre las direcciones desde 2400h y 2C00h del espacio de direcciones de memoria. Se pre­ tende intercalar 5 WAIT­STATES cada ves que se realicen operaciones de I/O sobre este dispo­ sitivo. Resp: Los r egistr os deben quedar con la siguiente configur ación Star t r egister : 0245 Stop r egister : 02CE Pr ogr ama: STAR4 EQU FF00 + 90 STOP4 EQU FF00 + 92 MOVE DX,STAR4 MOVE AX,0245h OUT DX,AX MOVE DX,STOP4 MOVE AX,02CEh OUT DX,AX 5) Como se entera la unidad de control de interrupciones que ha terminado la rutina de servicio que procesa una interrupción determinada. Resp: Es r esponsabilidad del pr ogr amador emitir los END OF INTERRUP que sean necesar ios par a blanquear los bits cor r espondientes en el IN SERVICE Register . Si esta involucr ado un slave son necesar ios dos EOI. 6) Por que razón es conveniente que mientras se procesa la rutina de servicio de una interrupción determinada dicha interrupción permanezca INHIBIDA. Resp: Pues sino al ejecutar la pr imer a instr ucción de la r utina de ser vicio la misma ser ía nuevamente inter r umpida pues aun per manecer ía en ON el bit cor r espondiente y se entr ar ía en un loop. Por pr ogr amación puede evitar se este pr oblema y si se tr abaja con cuidado puede no inhibir se. 7) Cuantos bit­times tiene como mínimo todo ciclo de bus.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 92 de 136 Resp: Cuatr o. 8) Como se establece la relación entre una interrupción externa determinada y la dirección donde se entregará el control cuando dicha interrupción se produzca. Resp: El 8259A tiene asignada una dir ección base. Cuando el inta cicle r equier e datos la 8259A entr ega un valor equivalente a la dir ección base mas el numer o de la inter r up­ ción activada. El micr o multiplica por 4 este valor y obtiene el desplazamiento cor r es­ pondiente dentr o de la IVT del SEGMENTO y dos mas ar r iba esta el OFFSET. SEG­ MENTO:OFFSET constituyen la dir ección de la r utina de ser vicio que se llamar á. 9) Supóngase un 80186 trabajando a 25 MHz. Como deben configurarse (mostrar el valor binario de cada uno de sus bits) los registros de la unidad de control de tiempos para lograr en la salida T1OUT una onda como la siguiente: 50 mseg Resp: Fr ecuencia de ser vicio de los contador es = 25.000.000 / 4 = 6.250.000 Hz Valor del bit­time = 1 / 6,250 10 ** 6 = 0,16 10 ** ­6 seg. = 160 10 ** ­6 mseg En 50 mseg se gener ar an (50 / 160 ) * 10 ** 6 actualizaciones, es decir 312500 actuali­ zaciones Como 312500 cor r esponde a 4B4C4 en hexadecimal, no alcanza con un solo contador . Se deben encadenar T1 con T2. En 10 mseg se gener ar an (10 / 160) * 10 ** ­6 actualizaciones, es decir 62500, es decir F424h Por lo tanto se fijar á valor máximo de T2 en F424 y valor máximo de T1 en 5. Inicialización de T2. T2CNT = 0 T2CMPA = F424 T2CON = 1100 0000 0000 0001 Habilita MODO CONTINUO Per mite habilitar Inicialización de T1 T1CNT = 0 T1CMPA = 0005 T1CON = 1100 0000 0000 1000 Habilita MODO UNICO Per mite habilitar PRE­ESCALA 10) Se dispone de una memoria estática RAM con las siguientes características: a) Tiempo mínimo requerido para presentar los datos de salida luego de que todas las señales requeridas se encuentran presentes (dirección, chip select, read) 80 nseg b) Tiempo máximo que el dispositivo sigue entregando datos luego de desactivada la señal de OUTPUT ENABLE 30 nseg
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 93 de 136 c) Todas las señales requeridas previas al WRITE (dirección, datos, chip select) deben estar presentes al menos 80 nseg antes del momento de ordenar la grabación(write) d) Los datos y la dirección presentadas deben permanecer validas al menos 5 nseg luego de la orden de grabar. e) La señal de Write activo debe permanecer al menos 70 nseg Se la pretende conectar a un micro 80186 trabajando a 25 Mhz y cuya características de tiempo se muestran en la tabla siguiente: Símbolo Tclov Tclis Twhlh Tplll Twhdx Tafrl Trlrh Twlwh Trhax Tadic.latch Descr ipción Clock low output valid Clock low input setup WR rising to next ALE rising Chip select valid after ALE falls Output data hold after WR rising Address float to RD falling RD active pulse width WR active pulse width RD rising to nex address active Output enable after latch Min Max 3 17 10 ½ T –10 ½ T ­ 10 T – 15 0 2T – 6 2T – 5 T ­ 15 10 20 Unidad ns ns ns ns ns ns ns ns ns ns Determinar cuantos Wait­States son necesarios insertar en cada operación de entrada­salida y si es necesario o no intercalar un transceiver entre la salida de la memoria y el bus de datos del micro. Justifique. Resp: T = 1 / 25 Mhz = 40 nseg a) dir ección 80 <= 3T –Tclov –Tclis –Tadllatc <= 120 – 17 – 10 –20 = 73 r equier e un WS chip select 80 <= 3T –Tclov –Tclis <= 120 – 17 – 10 <= 93 sin pr oblema output enable80 <= 2T –Tclov –Tclis <= 80 – 17­ 10 <= 53 r equier e un WS b) 30 nseg <= Tr hax = 40 – 15 = 25 nseg r equier e tr ansceiver c) dir ección 80 ms <= 3T – Tadllatch= 120 – 20 = 100 sin pr oblema datos 80 ms <= 2T = 80 nseg r equier e un WS chip select 80 ms <= 3T = 120 nseg sin pr oblema d) dir ección 5 nseg <= Twhlh = ½ T – 10 =10 sin pr oblema datos 5 nseg <= Twhdx =T – 15 = 25 sin pr oblema e) señal wr ite 70 nseg <= 2T – 5 = 75 nseg sin pr oblema Se r equier e inser tar un WS y usar tr ansceiver . 11) Se ha diseñado una aplicación industrial con un 80186 que requiere 12 niveles de interrupcio­ nes diferentes usando las interrupciones IR1, IR2, IR3, e IR4 estándares en el micro y conec­ tando un 8259A en IR0 para que provea las 8 restantes. Las interrupciones que ingresen por el
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 94 de 136 8259A mencionado se denominaran desde IR5 hasta IR12 y se conectaran desde el IR0 hasta el IR7 del 8259A. a) Si en la inicialización no se ha alterado el registro de asignación de prioridades cual será en definitiva dicho esquema entre las 12 interrupciones. b) Prevé algún inconveniente en el esquema planteado?? Resp: a) De mayor a menor IR5 IR6 IR7 IR8 IR9 IR10 IR11 IR12 IR1 IR2 IR3 IR4 b) al conectar el 8259A a la IR0 se gener ar á un conflicto pues cuando se pr ocese una inte­ r r upción que no cor r esponda a ningún 8259A slave en el cas apar ecer án 000 y al ser el id del slave del IR0 igual a 000 se dar á por identificado. 12) Se dispone de un dispositivo de E/S que para ser controlado dispone de 4 registres de 16 bits cada uno que cumplen las siguientes funciones R0 = RCE = Registro de control de la entrada R1 = RDE = Reg de datos de la Entrada R2 = RCS = Reg de control de la Salida R3 = RDS = Reg de datos de la Salida Mapearlo sobre el Espacio de direcciones de E/S comenzando en la posición 1000h, usando el chip select 3. Mostrar el contenido de los registros de control del CS 3 y las ocho instrucciones que se usarían cuando se requiera leer y grabar sobre los cuatro registros del periférico. 13) Cuando se agregan T­WAITs en un ciclo de bus, entre cuales de los bit­times (T1, T2, T3, T4) se los inserta. 14) Que cosas hace el micro entre el momento que decide atender una interrupción determinada y el momento en que le pase el control a la primera instrucción de la rutina de servicio correspon­ diente. 15) Si la codificación de una instrucción no especifica segmento alguno ¿ Como se determina cual ha de usarse? 16) Cuales son todas las formas en que una instrucción puede especificar la dirección de un operan­ do que reside en memoria 17) Mediante un circuito combinaciones que relacione T1OUT y T0OUT se quiere obtener la si­ guiente onda: 30 mseg 20 10 40 se repite cíclicamente A) mostrar el circuito combinacional requerido B) mostrar los valores con que se inicializaran los registros de control de la unidad tempo­ rizadora C) describir como seria el proceso de inicialización. 18) Especificar el máximo valor permitido para cada uno de los parámetros especificados a conti­ nuación para una memoria que será conectada al micro especificado sin TRANSCEIVER y con tres WAIT­STATEs intercalados en toda operación de E/S.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 95 de 136 Características del micro: Reloj = 100 Mhz Símbolo Tclov Tclis Twhlh Tplll Twhdx Tafrl Trlrh Twlwh Trhax Tadic.latch Descr ipción Clock low output valid Clock low input setup WR rising to next ALE rising Chip select valid after ALE falls Output data hold after WR rising Address float to RD falling RD active pulse width WR active pulse width RD rising to nex address active Output enable after latch Min 3 10 ½ T –2 ½ T ­ 2 T – 3 0 2T – 2 2T – 2 T ­ 3 4 Max 5 6 Unidad ns ns ns ns ns ns ns ns ns ns Parámetros de la memoria a) Tiempo mínimo entre presentación de la dirección y disponibilidad de los datos b) Tiempo mínimo entre presentación del chip select y disponibilidad de los datos c) Tiempo mínimo entre presentación del read y disponibilidad de los datos d) Tiempo mínimo de presencia de la dirección previo a la orden de grabar ( activación de WR) e) Tiempo mínimo de presencia de los datos previo a la orden de grabar ( activación de WR) f) Tiempo mínimo de presencia de la chip select previo a la orden de grabar ( activación de WR) g) Tiempo mínimo de permanencia de los datos luego de la orden de grabar (activación de WR) h) Tiempo mínimo de permanencia de los datos luego de la orden de grabar (activación de WR) i) Tiempo mínimo de permanencia en la activación del WR. 19) ¿ Es posible mapear dos dispositivos distintos en la misma dirección, uno en el espacio de E/S y otro en el espacio de direcciones de memoria.??? ¿ Como se sabe si se accederá a uno u a otro en una operación determinada ?? 20) Usando los bloques de uso general que necesite diseñe un dispositivo que genere la señal CHIP SELECT requerida para mapear un dispositivo de 32 X 2 X 8 Bits comenzando en la dirección 1000h del espacio de E/S. Indique claramente cuales han de ser las señales que ingresaran al dispositivo 21) Usando los timers de un hipotético 80186 que trabaja a 100 MHz y los circuitos combinaciona­ les que se requieran indicar: Programación de los registros de los contadores utilizados. Diagrama en block de los circuitos combinacionales si fueron requeridos Descripción de como se implementarían los procesos de inicialización de los registros de control de los contadores Para lograr el siguiente resultado: A partir del momento que se produzca la interrupción IR3 se quiere generar la siguiente onda
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 96 de 136 159.998,5 ms 1,5 159.998,5 ms 1,5 se repite ms ms cíclicamente Resp: Fr ecuencia de ser vicio de los contador es = 100 MHz / 4 = 25 MHz Bit time = 1 / 25 10 ** 6 = 40 10 ** ­6 ms Par a conseguir los 160.000 ms se r equier en 4 10**9 pulsos Podr ía tr abajar se con 62.500 * 64.000. Si se asigna a T2 count max = 62.500 se puede ob­ tener un pulso cada 62.500 * 40 10**­6 = 2, 5 milisegundos Esto imposibilita obtener el ancho de 1,5 ms. Por otr o lado si se asigna a T2 un ancho de 1,5 par a logr ar los 160000 se r equier en 106.666 lo cual excede la capacidad del contador . Una solución factible es combinar los contador es. Se pr opone la siguiente solución: Con T0 se gener ar á una onda cíclica de per iodo 160000, con valor high dur ante 159997,5 y valor low dur ante 2,5­ Con T1 se gener ar á una onda similar a T0 per o desfasada en el tiempo 1 ms. T0’ 159.997,5 ms 2,5 159.997,5 ms 2,5 se r epite 159.997,5 ms 2,5 159.997,5 ms 2,5 se r epite ms ms cíclicamente La salida final asumir á los siguientes valor es: T0 HIGH LOW LOW HIGH T1 HIGH HIGH LOW LOW SALIDA HIGH HIGH LOW HIGH DURACION 159.996,5 1 1,5 1 Par a implementar lo, pr oducida la inter r upción en ir 3 se llamar á a una r utina que debe hacer lo siguiente: a) inicializar T2 con cuenta máxima 62.500 par a que gener e un pulso cada 2,5 ms. b) Inicializar T0 con cuenta máxima iguales a 63.999 y 1 con lo que se gener a la onda de 159.997,5 y 2,5 ms c) Inicializar T1 igual a T0 d) Blanquear el valor de los contador es T0, T1, T2 e) Inicializar par a que ar r anque T0 f) Inicializar par a que ar r anque T2 g) Gener ar un loop que demor e en ejecutar se 1 ms
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 97 de 136 h) Inicializar par a que ar r anque T1 22) Especificar el máximo valor permitido para cada uno de los parámetros especificados a continuación para una memoria que será conectada al micro especificado con TRANSCEIVER y con quince WAIT­STATEs intercalados en toda operación de E/S. Características del micro: Reloj = 300 Mhz Símbolo Tclov Tclis Twhlh Tplll Twhdx Tafrl Trlrh Twlwh Trhax Tadic.latch Descr ipción Clock low output valid Clock low input setup WR rising to next ALE rising Chip select valid after ALE falls Output data hold after WR rising Address float to RD falling RD active pulse width WR active pulse width RD rising to nex address active Output enable after latch Min 0,3 10 ½ T – 0,2 ½ T – 0,2 T – 0,3 0 2T – 0,2 2T – 0,2 T – 0,3 0,4 Max 0,5 0,6 Unidad ns ns ns ns ns ns ns ns ns ns Parámetros de la memoria a) Tiempo mínimo entre presentación de la dirección y disponibilidad de los datos b) Tiempo mínimo entre presentación del chip select y disponibilidad de los datos c) Tiempo mínimo entre presentación del read y disponibilidad de los datos d) Tiempo máximo de permanencia de entrega de datos luego de desactivada la señal de read e) Tiempo mínimo de presencia de la dirección previo a la orden de grabar ( activación de WR) f) Tiempo mínimo de presencia de los datos previo a la orden de grabar ( activación de WR) g) Tiempo mínimo de presencia de la chip select previo a la orden de grabar ( activación de WR) h) Tiempo mínimo de permanencia de los datos luego de la orden de grabar (activación de WR) i) Tiempo mínimo de permanencia de los datos luego de la orden de grabar (activación de WR) j) Tiempo mínimo de permanencia en la activación del WR. 23)SS = 1234H; SP = 0100H; AX = F2A1H; BX = 27A1H. Determine el valor de SS, SP, AX y BX y el contenido de la pila, luego de realizar en orden las siguientes dos ins­ trucciones: PUSH AX POP BX
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 98 de 136 24)BX = A215H , DS = 0200h y en la dirección física 0201H se encuentra almacenada la variable LISTA con el valor 34H. Muestre el estado de BX luego de ejecutar la instruc­ ción indicada en cada uno de los siguientes casos: a) MOV BX, OFFSET LISTA b) LEA BX, LISTA c) MOV BL, LISTA 25) Explique brevemente el significado para Ud. de la frase: “El 80186 usa técnica de segmentos para direccionar la memoria principal. A su criterio que ventajas aporta el uso de dicha técnica. 26) ¿Porqué se utilizan los bits de guarda en aritmética de punto flotante? 27) Resuelva en binario utilizando complemento a la base menos 1: ­ (36)7 – (312)4 + (2B)16= . Determine y justifique la mínima cantidad de bits de la representación para que no ocurra over­ flow. 28) Durante la ejecución de un programa se llama al procedimiento PROC1. Sabiendo que TCLOUT =20 Mhz, y Tsal = T0OUT + T1OUT, grafique T0OUT, T1OUT y Tsal, mostrando los valores del eje del tiempo en c/u de las transiciones de las señales y justifique. Nota: En el programa ya están definidas como constantes las palabras clave que identifican a los registros de la PCB, como por ej. TOCNT, T1CON,etc. PROC1 PROC PUSH PUSH XOR MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV FAR AX DX AX, AX DX, T0CNT DX, AX DX, T0COMPA AX, 1F40H DX, AX DX, T0COMPB AX, 0002H DX, AX DX, T0CON AX, C00BH DX, AX DX, T1CNT AX, 0001H DX, AX DX, T1CMPA AX, 1F40H PROC1 OUT MOV MOV OUT MOV MOV OUT XOR MOV OUT MOV MOV OUT MOV MOV OUT POP POP IRET ENDP
DX, AX DX, T1COMPB AX, 0002H DX, AX DX, TICON AX, 1F40H DX,AX AX,AX DX,T2CNT DX,AX DX, T2COMPA AX, 007DH DX,AX DX, T2CON AX,C001H DX, AX DX AX 29) Encontrar el máximo valor permitido para c/u de los parámetros especificados para una memoria conectada al procesador que se detalla sabiendo que se han inicializado 3 T­waits para toda operación de E/S. Datos del procesador: Reloj: 80 MHz. Símbolo Tclov Tclis Descr ipción Clock low output valid Clock low input setup MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Min 3 10 Max 17 Unidad ns ns Página 99 de 136 Twhlh Tplll Twhdx Tafrl Trlrh Twlwh Trhax Tadic.latch WR rising to next ALE rising Chip select valid after ALE falls Output data hold after WR rising Address float to RD falling RD active pulse width WR active pulse width RD rising to next address active Output enable after latch ½ T – 4 ½ T – 10 T – 8 0 2T – 6 2T – 5 T – 10 10 20 ns ns ns ns ns ns ns ns Parámetros de la memoria: a) Tiempo máximo entre presentación de la dirección y disponibilidad de los datos. b) Tiempo máximo entre presentación del chip select y disponibilidad de los datos. c) Tiempo máximo entre presentación del read y disponibilidad de los datos. d) Tiempo máximo de permanencia de entrega de datos luego de desactivada la señal de read. e) Tiempo mínimo de presencia de la dirección previo a la orden de grabar (activación de WR). f) Tiempo mínimo de presencia de los datos previo a la orden de grabar (activación de WR). g) Tiempo mínimo de presencia de la chip select previo a la orden de grabar (activación de WR). h) Tiempo mínimo de permanencia de los datos luego de la orden de grabar (activación de WR). i) Tiempo mínimo de permanencia de la dirección luego de la orden de grabar (activación de WR). j) Tiempo mínimo de permanencia en la activación del WR. 30)Se desea ampliar la capacidad standart de manejo de interrupciones de un 80186, in­ cluyendo 10 interrupciones más. a) Indique como modificaría la estructura de la Unidad de Control de Interrupciones para lograrlo. Grafique indicando todas las conexiones necesarias. b) Se desea mapear los nuevos periféricos sobre el espacio de E/S a partir de la dirección 200H, además los primeros ocho necesitan para su funcionamiento a lo sumo 3 T­waits mientras que los restantes requieren 5. Con esta información explique en forma concreta cómo cumpliría con estos requerimientos. c) Explique cómo serán las prioridades, según la conexión elegida, si se conserva el esquema por defecto en todos los dispositivos, sean éstos anteriores o posteriores a la modificación. 31)Se desea ampliar la capacidad standart de manejo de interrupciones de un 80186, pa­ ra manejar 8 periféricos adicionales. a) Indique como modificaría la estructura de la Unidad de Control de Interrupciones para lograrlo. Grafique indicando todas las conexiones necesarias. b) Explique que esquema de prioridades se podría utilizar si entre las nuevas 8 no se quiere prioritizar ninguna. c) ¿Qué precauciones debe tener en cuenta el programador al finalizar la rutina de servicio de alguno de los nuevos periféricos? 32) Escribir un programa que coloque en la pila 4 números (NUM1=12536, NUM2=1, NUM3=4567, NUM4=16) y llame a la subrutina CALCULAR. Dicha subrutina toma de
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 100 de 136 la pila los cuatro datos y les aplica las funciones F1 y F2. Los dos resultados obteni­ dos son colocados en la pila. El programa llamador debe entonces comparar los resul­ tados devueltos por la sub rutina y actuar de la siguiente manera: Si result1 <= Result2 terminar el programa En caso contrario aumentar en 1 el valor de NUM4, reducir en 4 el valor de NUM1, y volver a llamar a la sub rutina. F1 = Dato1 * Dato2 + Dato3 * Dato4 F2 = Dato2 + Dato4 + Dato2 + Dato4 33)Usando los timers de un hipotético 80186 que trabaja a 100 MHz y los circuitos com­ binacionales que se requieran indicar: Programación de los registros de los contadores utilizados. Diagrama en block de los circuitos combinacionales si fueron requeridos Descripción de como se implementarían los procesos de inicialización de los registros de control de los contadores Para lograr el siguiente resultado: A partir del momento que se produzca la interrupción IR3 se quiere generar la siguiente onda 129.999ms 1 129.999ms 1 se repite ms ms cíclicamente Resp: Fr ecuencia de ser vicio de los contador es = 100 MHz / 4 = 25 MHz Bit time = 1 / 25 10 ** 6 = 40 10 ** ­6 ms Par a conseguir un pulso cada 1 ms en T2 se debe inicializar TMAX = 25.000 Luego, par a obtener los 129.999solicitados par a la onda mayor deber ían inicializar se TMAXA= 129.999y TMAXB = 1 Esto no es posible pues el valor máximo par a TMAXi no puede super ar 65536. La solución se logr a super poniendo ondas de T0 y T1. Una solución ser ia: T0’ 65.000 ms 65.000 ms se r epite T1 1 65.000 ms 65.000 ms se r epite cíclicamente 65.000 + 64.999 = 129.999 1 La salida final asumirá los siguientes valores:
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 101 de 136 T0 T1 HIGH HIG H LOW HIG H LOW LOW HIGH LOW SALIDA DURACION HIGH 64.999 HIGH 1 HIGH LOW 64.999 1 Par a implementar lo, pr oducida la inter r upción en ir 3 se llamar á a una r utina que debe hacer lo siguiente: i) inicializar T2 con cuenta máxima 25.000 par a que gener e un pulso cada 1 ms. j) Inicializar T0 con cuenta máxima iguales a 65.000 y 65000 con lo que se gener a la on­ da cuadr ada de 65.000 ms k) Inicializar T1 igual a T0 l) Blanquear el valor de los contador es T0 y T2 e inicializar T1 en 1 m) Inicializar par a que ar r anque T0 n) Inicializar par a que ar r anque T1 o) Inicializar par a que ar r anque T2 34) Se requiere mapear en forma consecutiva sobre el espacio de direcciones de E/S, comenzando en la dirección 192]10 , los siguientes dispositivos: A ) DATOS (16) DIRECCIONES (4) 32 registros de 8 bits cada uno los cua­ les se direccionan con 16 direcciones posibles B ) DATOS (16) DIRECCIONES (8) 512 registros de 8 bits cada uno los cua­ les se direccionan con 256 direcciones posi­ bles C) DATOS (16) DIRECCIONES (1) MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a 2 registros de 16 bits cada uno los cuales se direccionan con 2 direcciones posi­ bles
Página 102 de 136 Todos los dispositivos manejan las entradas salidas como dos bancos de 8 bits cada uno. Se preten­ de mapearlos utilizando la Chip Select Unit del 80186. Mostrar como deberían inicializarse los registros de la CSU, dibujar un esquema de como quedaría mapeado el espacio de E/S y mostrar esquemáticamente el conexionado entre el bus del 80186 y cada uno de los dispositivos. Mostrar todas las instrucciones que permitan grabar los 16 bits de cada uno de los dos registros del dispositivo c. Resp: Dado que se solicita usar la CSU el mínimo espacio mapeable par a cada dispositivo es de 64 DIRECIONES pues al inicializar los r egistr os de contr ol de la CSU no pueden especificar se los 6 últimos dígitos de la dir ección los cuales son asumidos como cer os. Por lo tanto: el dispositivo A ocupar a desde 00C0 hasta 00FF CS = 1 el dispositivo B ocupar a desde 0100 hasta 02FF CS = 2 el dispositivo C ocupar a desde 0300 hasta 033F CS = 3 El espacio de dir ecciones quedar á mapeado así: 0340h = 832d 0300h = 768d 033F = 831d 02FF = 767d Tamaño = 831 – 768 + 1= 64 Tamaño = 767 – 256 + 1 = 512 0100h = 256d 00C0h = 192d 0000h = 000d 00FF = 255d Tamaño = 255 – 192 + 1 = 64 Los r egistr os de contr ol se inicializar án: CS 1 CS 2 CS 3 Registr o START 0000 0000 11XX 0000 0000 0001 00XX 0000 0000 0300 00XX 0000 Registr o STOP 0000 0001 00XX 1100 0000 0011 00XX 1100 0000 0011 01XX 1100 Indica espacio I/O Indica No Ready Indica Cer o Wait States Indica consider ar dir ección de ter minación Indica Habilitado Par a leer cor r ectamente los 16 bits de cada uno de los r egistr os de los distintos dispositivos es necesar io pr esentar dir ecciones par es. Ante cada dir ección par el dispositivo entr egar a en los 16 bits del bus de datos el contenido ( en 8 bits) de la dir ección pr esentada y el contenido ( en 8 bits) de la dir ección pr esentada mas 1.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 103 de 136 Por lo tanto se dejar á flotando el bit A0 del bus de dir ecciones y se conectar an los otr os de acuer do al siguiente esquema: Disp. A Bits A1 hasta A4 a las cuatr o entr adas de dir ecciones existentes Disp. B Bits A1 hasta A8 a las ocho entr adas de dir ecciones existentes Disp. C Bits A1 a la única entr ada de dir ecciones existente. Cualquier dir ección entr e 0300 y 03FF con A1 igual a cer o dir eccionar á al r egistr o cer o del dispositivo C, y si r esulta A1 igual a uno dir eccionar á al r egistr o uno. Dicho de otr a maner a y consider ando que X r epr esenta tanto a valor es cer os como a unos, el conjunto de dir ecciones validas par a acceder al r egistr o cer o y al r egistr o uno del dispositivo C son r espectivamente: Reg cer o Reg uno 0000 0011 XX0X 0000 0011 XX1X. Como se tr ata del espacio de entr ada/salida la instr ucción par a gr abar es: OUT 35) En un procesador 80188 se encuentra mapeado entre las direcciones 0040h y 0080h del espacio de direcciones de entrada/salida un dispositivo que tiene dos registros de 16 bits cada uno. La unica entrada de direccion del dispositivo se encuentra conecta­ da a la señal A5 del bus de datos. Especificar cuales son las instrucciones validas pa­ ra grabar y leer ambos registros del dispositivo. Resp: La instruccion OUT DX, AX graba el contenido de Ax en la direccion aountada por DX. Se analizará el comportamiento de la BIU para distintos contenidos de AX y DX. Ax = 1234h y DX = 0040h La BIU genera un ciclo de bus transfiriendo 16 bits a la direccion 0040h. Los 8 bits menos significativos se transfieren a 0040h y los 8 mas significativos a 0041h. Como A5 en ambos casos es 0 el registro direccionado es R0. Lo mismo ocurrirá para toda direccion entre 0040h y 005Fh. Ax = 1234h y DX = 0060h La BIU genera un ciclo de bus transfiriendo 16 bits a la direccion 0060h. Los 8 bits menos significativos se transfieren a 0060h y los 8 mas significativos a 0061h. Como A5 en ambos casos es 1 el registro direccionado es R1. Lo mismo ocurrirá para toda direccion entre 0060h y 007Fh. Ax = 1234h y DX = 0061h La BIU genera dos ciclos de bus pues se intenta transferir una palabra a una direccion impar. Cada ciclo transfiere unByte. El primer ciclo transfiere los 8 bits mas significativos a la direccion 0061h y el segundo ciclo transfiere los 8 bits menos significativos a 0062h. Como A5 en ambos casos es 1 el registro direccionado en ambos casos es R1. Lo mismo ocurrirá para toda direccion entre 0061h y 007Dh. Daria la sensacion que en este caso podria habilitarse la posibilidad de direc­ cionar a direcciones impares si que ello repercuta en un mal funcionamiento aunque si en una peor perfomance. Podria decirse que toda direccion entre
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 104 de 136 0040h y 005E grabará el R0 y toda direccion entre 0060h y 007Eh grabará en el registro R1. Queda para el lector analizar que pasa si la direccion en la que se intenta grabar es 005Fh. 36)
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 105 de 136 TRANSFERENCIAS DE INFORMACION ENTRE EL MICRO Y EL MEDIO AMBIENTE Existen dos metodológicas básicas para la transmisión de los datos: Transmisión serie y transmi­ sión paralelo. En el esquema serial un dispositivo envía a otro un bit por vez utilizando un único cable o medio de comunicación. En el esquema paralelo un dispositivo envía a otro varios bits simultáneamente utilizando para ello varios cables. Por ejemplo es muy común enviar 8 bits simultáneamente utilizando un conector de 8 cables. Por supuesto un esquema de transmisión en paralelo brinda mayor velocidad que el esquema serial aunque es de esperar un mayor costo dado la mayor cantidad de cables que requiere. En la practica ni la comunicación en paralelo es 8 veces más rápida que la serial ni el cable será resulta 8 veces más económico que el paralelo. En general los fabricantes de cables serie usan mejores materiales y distintos tipos de aislación aumentando su costo relativo pero permitiendo velocidades más altas. Además la mejor calidad permite también mayores distancias. Los cables para conexiones paralelo son más económicos y generalmente diseñados para distancias cortas(< de 6 metros). Los proble­ mas de ruido e interferencias afectan en forma importante la transmisión paralelo limitando la velo­ cidad de transferencia. Si bien existen interfaces paralela que transmiten 16, 24, 32 o más bits simultáneamente (SCSI) las mas comúnmente utilizadas transmiten 8 bits (un byte) por vez. 1. INTERFACES PARALELA Pueden ser unidireccionales o bidireccionales. En la unidireccional existen dos sitios: el transmisor y el receptor. El transmisor coloca datos en la línea e informa al receptor de este hecho; el receptor toma los datos desde la línea e informa al transmisor que los ha tomado. De esta forma se sincronizan ambos dis­ positivos, el receptor no lee los datos hasta que el transmisor le avise que están disponibles y el transmisor no coloca nuevos datos hasta que el receptor haya tomados los previos. El termino que describe como ambos sitios coordinan su funcionamiento es: HANDSHAKING. La línea que el transmisor usa para indicar la disponibilidad de los datos se denomina STROBE. La línea que el receptor usa para comunicar que ya ha tomado los datos se denomina ACKNOW­ LEDGE. En algunos esquemas existe una tercera línea que controla el receptor y sirve para indicar si esta disponible para recibir datos. Se denomina BUSY y si esta activada el transmisor debe inhibirse de enviar datos. Los diagramas que siguen muestran el comportamiento descripto
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 106 de 136 TRANSMISOR RECEPTOR START START BUSY Line Activo S BUSY line=Inactivo N Colocar Datos En la línea STROBE Activo N S STROBE =Activo ACK Activo Toma Datos de la línea ACK =Activo N S STROBE =Inactivo STROBE Inactivo N S ACK Inactivo N ACK =Inactivo S S Continua la Transmisión N MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a S Se espera otro dato
N Página 107 de 136 Si se usa la línea BUSY las conexiones requeridas son: DATOS (8 BITS) TRANSMISOR STROBE ACKNOWLEDGE BUSY RECEPTOR Una transmisión bidireccional puede pensarse como la superposición de dos transmisiones unidireccionales. Puede darse que cada canal tenga sus propias líneas de comunicación o que multiplexen su función en el tiempo según la dirección de la transferencia. 1.1. PORTS PARALELOS EN EL 80186 El 80186 tiene 22 pins que pueden ser utilizados como de entrada y/o salida. Ellos son agrupados en dos port de 8 bits cada uno (PORT 1 y PORT2) y uno de 6 bits (PORT3). Muchos de estos pins son funcionalmente multiplexados con los periféricos integrados, esto implica que por programa puede definirse si el pin será controlado por el periférico integrado o si será controlado por programa y funcionará entonces simplemente como pin de entrada/salida. Las siguientes tablas muestran el agrupamiento de los pins y su multiplexado funcional PORT1 Exclusivamente salida PORT2 Bidireccional
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 108 de 136 PORT3 4 pins exclusivos de salida 2 bidireccionales open­drain Cada port tiene asociado en la PCB un conjunto de 4 registros: Port Control Register PxCON bits 0 a 7 Si =1 el pin, el port direction y el port data latch son controlados por el periférico integrado correspondiente. Si =0 el pin funcionará como de E/S Port Direction Register Bits 0 a 7 PxDIR Si el pin es programado como de E/S y es bidireccional indica la dirección. 1 es entrada; 0 es salida. Port Datalatch Register PxLTCH Bits 0 a 7 Son los bits que aparecerán en los bornes de los pins correspondientes cuando estos sean programados como de E/S y de salida Port Pin State Register Bits 0 a 7 PxPIN Representan, al ser leídos el estado lógico presente en el pin asociado. La única restricción en la inicialización de los registros asociados a los port de entrada/salida es que el Datalatch debe ser programado antes de seleccionar al pin correspondiente como de salida para evitar la presencia de valores desconocidos en el pin. Cuando el 80186 es reseteado los ports asumen la siguiente configuración: Port1 es configurado para ser controlado por el periférico integrado asociado(Chip Select) Port2 es configurado para ser controlado por el periférico integrado asociado (Canales Serie 0 y 1) Port3 bits 0 a 3 son configurados para ser controlados por el periférico integrado asociado(Interrups) Bits 4 y 5 son configurados como de E/S; entrada
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 109 de 136 1.2. NOTA ESPECIAL La definición estándar del port paralelo en un equipo IBM PC Compatible utiliza un conector de 25 pins con la siguiente distribución: Además de las señales ya descriptas previamente como participantes en una transmisión paralelo en el diagrama previo aparecen otras cuyo significado se muestra en la misma figura. En total se requieren 12 pins de salida y 5 de entrada los cuales pueden ser servidos por los ports 1, 2 y 3 del 80186 sin inconvenientes. Son de un uso muy generalizado las interfaces llamadas LAPLINK que permite el intercambio bidireccional de información entre dos PC´s usando para ello interfaces paralela. Para lograrlo el cable utiliza el siguiente esquema de conexionado: Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Pin 8 Pin 9 Pin 10 Pin 11 Pin 12 Pin 13 Pin 14 Pin 15 Pin 16 Pin 17 MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Pin 8 Pin 9 Pin 10 Pin 11 Pin 12 Pin 13 Pin 14 Pin 15 Pin 16 Pin 17
Página 110 de 136 El protocolo superpone la función de BUSY con la ACKNOWLEDGE y transmite solo 4 bits por vez. Requiere de dos transmisiones para completar un byte. Si la transmisión es de 1 a 2: Pin 2 a 5 Pin 6 Pin 11 SITIO 1 envía datos envía STROBE recibe ACKNOWLEDGE SITIO 2 Pin 10, 12, 13 y 15 reciben datos Pin 11 recibe STROBE Pin 6 envía ACK Si la transmisión se realiza de 2 a 1: SITIO 1 Pin 10, 12, 13 y 15 reciben datos Pin 11 recibe STROBE Pin 6 envía ACK SITIO 2 Pin 2 a 5 Pin 6 Pin 11 envían datos envía STROBE recibe ACK 2. INTERFACE SERIE Puede ser sincrónica o asincrónica. El protocolo asincrónico permite que dos dispositivos se comuniquen sin tener una conexión que provea un único clock a ambos. Si, en cambio, debe establecerse una velocidad de transferencia común a ambos que se denomina BAUD RATE BASE y que se expresa en bits por segundos (baudios). Los datos son transferidos en frames. Un frame es una secuencia de un numero fijo de bits transmitidos sobre una única línea. Un frame consiste de un bit de inicio (START BIT) siempre un valor lógico de cero, seguido de un conjunto de bits de datos (7, 8 u 9) y un bit de terminación (STOP BIT). El dispositivo que transmite los datos se denomina TX y el que los recibe RX. El dispositivo RX es el responsable de sincronizar el flujo de datos recibidos y recuperar los datos correctamente. Debido a que no existe una señal de sincronismo es indispensable que tanto transmisor como receptor trabajen a la misma velocidad base. El proceso clave es detectar la presencia del START BIT. La calidad con que se implemente este proceso determinará el % de desvío admisible entre las velocidades base de ambos dispositivos y dará una idea de la inmunidad ante ruidos que tendrá la transmisión. 2.1. ESTUDIO DE UN CASO PARTICULAR. Para realizar la detección del START BIT el receptor utiliza un clock de muestreo a una frecuencia de trabajo mucho mayor que la frecuencia que utilice el transmisor. Como ejemplo se analizará el caso que dicho clock de muestreo trabaje 16 veces más rápido que la BAUD RATE BASE. El clock de muestreo se denominará RT y para cada bit time de la transmisión existirán entonces 16 ciclos de reloj de RT que se identificaran con los números 1 a 16.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 111 de 136 Cuando el receptor arranca su actividad o luego de haber recibido un STOP BIT al final de un frame, inicia la búsqueda asincrónica del flanco negativo del START BIT. El objetivo de esta búsqueda es obtener la sincronización entre el dato serie y el clock RT. Una vez que la sincronización ha sido establecida el clock RT marcará el entorno de existencia de cada bit time del dato serie. Para detectar el START BIT es necesario encontrar una muestra de la señal de entrada (RxD) igual a cero y que haya sido precedida por otras tres muestras consecutivas iguales a uno. Estas cuatro muestras se denominan calificadoras del START BIT. Hasta que la muestra calificadora del START BIT sea detectada el clock RT es reseteado luego de cada muestra y por lo tanto obligado a permanecer en RT1. Detectada la muestra calificadora se libera el avance del clock RT y se tomaran nuevas muestras en RT3, RT5 y RT7. Si dos cualesquiera o las tres resultaran iguales a uno, el cero en RT1 se asumirá como ruido y se reiniciará la búsqueda del START BIT; en caso contrario se considerara que la sincronización ha sido establecida y se interpretaran los datos considerando un frame cuyo START BIT comenzó en RT1. Durante cada bit time incluyendo el START BIT y el STOP BIT en RT8, RT9, y RT10 se tomaran muestras. Se considera que el valor recibido es igual al valor mayoritario entre las tres muestras tomadas; es decir que el valor asumido por al menos dos de las muestras determinara el valor asignado al dato recibido durante el bit time en cuestión. Si uno de los valores no coincide con los otros dos el bit de error será activado. La siguiente figura muestra el caso ideal de reconocimiento del START BIT. START BIT DETECTADO START BIT REAL LSB SEÑAL RxD MUESTRA 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 [1] [2] [3] [4] CASO IDEAL Durante [1] todas las muestras detentan RxD=1 y corresponden a una situación de línea inactiva o disponible (IDLE LINE) o a un STOP BIT. Durante [2] se detecta el cero precedido por tres unos y el contador de pulsos de RT arranca considerando RT1 el bit time durante el cual se recibió el cero que finalizo la secuencia 1110 y de ahí en mas seguirán RT2, RT#, RT$, . . . . RT16. Las muestras tomadas en RT3, RT5 y RT7 durante [3] iguales a cero confirman la detección del START BIT.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 112 de 136 Como en todo bit time también durante el START BIT se toman las muestras correspondientes a RT8, RT9 y RT10 durante [4]. En cualquier otro bit time estas tres muestras son las que por mayoría determinan el valor del dato recibido pero durante el START BIT su valor es forzadamente interpretado como cero independientemente de su valor real. En este caso el START BIT real y el START BIT detectado coinciden. La resolución del clock RT fija la incertidumbre del exacto lugar en que el frente de onda negativo, que inicio realmente el START BIT, ocurrió. La incertidumbre queda limitada a 1/16 de la frecuencia de transmisión. 2.1.1. CASO C ON RUIDO EJ EMPLO N° 1 Un ruido causa que se detecte un cero erróneo antes que el verdadero comienzo del START BIT se produzca. START BIT DETECTADO START BIT REAL LSB SEÑAL RxD MUESTRA 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 2 3 4 5 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 [1] [2] CASO CON RUIDO NUMERO UNO Un cero lógico en [1] en conjunción con los otros tres unos anteriores conforman la muestra calificadora y por lo tanto se dará por iniciado el START BIT. Las muestras en RT3 y RT5 devuelven valores uno por lo que luego de RT5 el clock RT vuelve al estado RT1. De allí en más continua como el caso ideal con lo que el ruido que generó el cero en [1] no ha causado inconveniente alguno. 2.1.2. CASO C ON RUIDO EJ EMPLO N° 2 La peor situación para el tipo de ruido analizado previamente se da cuando el ruido que genera el falso cero se produce tan cerca del verdadero START BIT que la muestra en RT5 resulta igual a cero pues ya comenzó el START BIT real. En este caso el sistema reconocerá el inicio del START BIT en [1] y como RT3=1 pero RT5=RT7=0 (mayoría de ceros) el reconocimiento es validado aunque la señal de error sea seteada. El clock RT considerará START BIT hasta su estado RT16 y en el siguiente estado RT1 considerara el comienzo del primer bit de datos. El desplazamiento en este caso es de 5 clocks [4] pero las muestras RT8, RT9 y RT10 que se tomen a continuación corresponderán en cada caso al bit correcto.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 113 de 136 START BIT DETECTADO START BIT REAL LSB DETEC LSB SEÑAL RxD MUESTRA 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 1 1 2 5 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 [1] [2] [3] [4] CASO CON RUIDO NUMERO DOS Algunos sistemas re – sincronizan el clock RT en cualquier transición valida de uno a cero en los datos. Dicha transición es detectada por una secuencia calificadora del START BIT (1110) convalidada por muestras mayoritariamente ceros en las siguientes RT3, RT5 y RT7. Si así fuera el desplazamiento provocado en este caso por la señal de error en [1] seria compensado con la primera transición de uno a cero en los bits de datos. 2.1.3. CASO DE ERROR EJ EM PLO N° 3 Esta situación se produce cuando una ráfaga de ruidos altera mas de una muestra. El caso planteado considera que las muestras en RT1 y RT3 son falsos ceros en [1]. Como RT3=0, RT5=1 y RT7=0 el START BIT erróneamente detectado es convalidado, aunque la señal de error será seteada. El desplazamiento producido es de 7 clocks pero igualmente las muestras tomadas en RT8, RT9 y RT10 en cada bit de datos corresponderán a los bits realmente transmitidos. START BIT DETECTADO START BIT REAL LSB DETEC LSB SEÑAL RxD MUESTRA 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 [1] MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a [2] [3]
Página 114 de 136 CASO CON RUIDO NUMERO TRES Señales de error tan groseras no son comunes. Este ejemplo muestra la muy buena tolerancia a ruidos del sistema. 2.1.4. CASO DE ERROR EJ EM PLO N°4 Una señal de error que genere individualmente un falso 1 en RT3 o RT5 o RT7 durante el START BIT no invalidará la correcta detección del comienzo del START BIT producida en [1]. START BIT DETECTADO START BIT REAL LSB SEÑAL RxD MUESTRA 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 [1] CASO CON RUIDO NUMERO CUATRO 2.1.5. CASO DE ERROR EJ EM PLO N° 5 Si por el contrario la señal de error fuese del tipo ráfaga y llevara a que dos de las muestras en RT#, RT5 o RT7 fuesen unos el sistema invalidaría la detección iniciada del START BIT y reiniciaría su búsqueda. Como no se produciría la secuencia calificadora en este caso no se detectaría el START BIT. Este es el único caso que puede generar la perdida de un carácter o la recepción invalida del mismo. START BIT NO DETECTADO START BIT REAL LSB SEÑAL RxD MUESTRA 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 1 1 1 1 1 1 1 1 1 1 1 1 [1] [2] CASO CON RUIDO NUMERO CINCO 2.1.6. CASO DE ERROR EJ EM PLO N°6 Este ultimo caso muestra una ráfaga de errores en la mitad del START BIT de forma tal que genera valores erróneos en mas de dos de las muestras tomadas en RT8, RT9 y RT10 [1].
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 115 de 136 Debido a que el sistema fuerza los valores de RT8, RT9 y RT10 durante el START BIT como ceros no se alterará el funcionamiento correcto del proceso de detección del START BIT aunque si se activara la señal de error. START BIT DETECTADO START BIT REAL LSB SEÑAL RxD MUESTRA 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 CLOCK BIT TIME DEL CLOCK R R R R R R R R R R R R R R R R R R R R R R R R R R R R T T T T T T T T T T T T T T T T T T T T T T T T T T T T 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 [1] CASO CON RUIDO NUMERO SEIS Una vez detectado el START BIT el clock RT pasara por los estados RT1 a RT16 para cada bit de datos que corresponda y a continuación espera recibir un STOP BIT. Las muestras tomadas en RT8, RT9 y RT10 correspondientes al STOP BIT esperado deberían ser unos. Si no lo fuesen el sistema seteará un error de frame. Si un error de frame es detectado pues mayoritariamente las muestras en RT8, RT9 y RT10 no son unos (pero tampoco resultan las tres iguales a cero) las muestras correspondientes a RT14, RT15, RT16 son forzadas al valor uno para adelantar de esta forma la detección de una posible secuencia calificadora del START BIT. 2.2. DESVIACIONES ADMISIBLES EN LAS VELOCIDADES DE TRANSMICION. En transmisiones libres de errores y considerando desactivado el dispositivo que genera re – sincronismo ante transiciones de uno a cero en los datos es posible calcular el máximo de desviación posible entre la velocidad de transmisión real y la asumida por el receptor sin que se generen errores en la interpretación de los datos recibidos. 2.2.1. VELOCIDAD DE TRANSM ISIO N M ENOR A LA ASUMIDA Como el transmisor esta transmitiendo a una velocidad menor, cuando el clock RT considere que sus estados RT1 a RT16 corresponden al STOP BIT en realidad estará recibiendo datos previos al STOP BIT verdadero. Las señales reales del STOP BIT pueden atrasarse sin generar inconvenientes siempre y cuando satisfagan las muestras RT8, RT9 y RT10 correspondientes. La figura muestra el peor caso:
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 116 de 136 SEÑAL REAL START D1 D2 D3 D4 . . . . .. Dn RT ESPERA EL BIT DE STOP 1 16 1 16 1 16 1 16 1 16 . . . . 1 16 1 2 3 4 5 6 7 8 9 10 12 14 16 ESTADOS DEL CLOCK RT VELOCIDAD DEL TRANSMISOR MENOR QUE LA ASUMIDA POR EL RECEPTOR Si la señal real se atrasara mas de lo indicado no se podría asegurar la validez de RT8 = RT9 = RT10 = uno. Por lo tanto mientras RT emitió Krt pulsos, el clock del transmisor al menos debe haber emitido Kt pulsos con: Krt = 16 pulsos del START BIT + 16 x N pulsos de los N bits de datos + 7 pulsos del STOP BIT previos a RT8 y por lo tanto la velocidad asumida por el receptor en bits por segundos será: (23 + 16 x N) / 16 Kt = 1 pulso de START BIT + N pulsos de los N bits de datos y por lo tanto la velocidad más lenta permitida en el transmisor en bits por segundos será N + 1 Mínima velocidad del transmisor como (N + 1) x 100 % de la Velocidad Nominal. . . . . . . . . (23 + 16 N) / 16 Para el caso de 8 bits de datos resulta 95,36 % 2.2.2. VELOCIDAD DE TRANSM IC ION SUPER IOR A LA ASUM IDA Como el transmisor esta transmitiendo a una velocidad mayor, cuando el clock RT considere que sus estados RT1 a RT16 corresponden al STOP BIT en realidad estará recibiendo datos posteriores al STOP BIT verdadero. Las señales reales del STOP BIT pueden adelantarse sin generar inconvenientes siempre y cuando satisfagan las muestras RT8, RT9 y RT10 correspondientes. La figura muestra el peor caso: SEÑAL REAL START D1 D2 D3 D4 . . . . .. Dn RT ESPERA EL BIT DE STOP 1 16 1 16 1 16 1 16 1 16 . . . . 1 16 1 2 3 4 5 6 7 8 9 10 12 14 16 ESTADOS DEL CLOCK RT VELOCIDAD DEL TRANSMISOR MAYOR QUE LA ASUMIDA POR EL RECEPTOR Si la señal real se adelanta mas de lo indicado no se podría asegurar la validez de RT8 = RT9 = RT10 = uno. Por lo tanto mientras RT emitió Krt pulsos, el clock del transmisor como máximo debe haber emitido Kt pulsos con: Krt = 16 pulsos del START BIT + 16 x N pulsos de los N bits de datos + 10 pulsos del STOP BIT previos a RT10 y por lo tanto la velocidad asumida por el receptor en bits por segundos será: (26 + 16 x N) / 16
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 117 de 136 Kt = 1 pulso de START BIT + N pulsos de los N bits de datos + 1 pulso del STOP BIT y por lo tanto la velocidad más lenta permitida en el transmisor en bits por segundos será N + 2 Mínima velocidad del transmisor como (N + 2) x 100 % de la Velocidad Nominal. . . . . . . . . (26 + 16 N) / 16 Para el caso de 8 bits de datos resulta 103,85 % 2.3. TRANSMICION SERIAL EN EL 80186 Esta unidad esta compuesta por dos canales independientes e idénticos llamados canal 0 y canal 1. Cada canal además tiene circuitos independientes para la recepción (RX) como para la transmisión (TX) de los datos. El 80186 utiliza para el muestreo de la señal de entrada un clock interno (CT) cuya frecuencia es 8 veces la Baud Rate Base. Con referencia a la metodología explicada anteriormente, con una relación de 1 a 16, solo es cuestión de reemplazar, de acuerdo a la siguiente tabla, los estados correspondientes: Estado con relación 1 a 16 Estado con relación 1 a 8 RT1 CT1 RT3 CT2 RT5 CT3 RT7 CT4 RT8 CT4 RT9 CT5 RT10 CT6 RX Machine. La señal recibida es conectada al pin RxD. La señal es desplazada dentro de un registro de trabajo y cuando la recepción del dato es completada el contenido de dicho registro es transferido al SERIAL RECEIVER BUFFER (SxRBUF) y una interrupción es generada. TX Machine. Una transmisión se inicia grabando en el SERIAL TRANSMIT BUFFER (SxTBUF) el dato a transmitir. El contenido de este registro es transferido a un registro de trabajo en cuanto este se encuentre vacío y desde allí es desplazado hacia el pin TxD. Cuando se ha emitido la señal correspondiente al STOP BIT se genera una interrupción que informa que la transmisión ha sido finalizada. Las transmisiones pueden ser bloqueadas por medio de la señal de entrada CTS (Clear To Send). Mientras esta señal permanezca activa será inhibida toda transmisión. 2.4. MODALIDADES DE TRANSMICION SERIE 2.4.1. M ODOS 1, 3 Y 4 Estos tres modos son muy semejantes entre sí. El modo 1, transmite 8 bits de datos. Si se ha indicado control de paridad los 8 bits corresponden a 7 bits de datos propiamente dicho y el octavo bit que complementa la paridad requerida (par o impar).
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 118 de 136 El modo 3 transmite 9 bits de datos. El noveno puede usarse como bit de paridad o libre para el usuario. El modo 4 transmite 7 bits de datos. En este caso no existe la posibilidad de bit de paridad autogenerado. 2.4.2. M ODO 2 Es conocido con el nombre de “reconocimiento de dirección”. Se lo utiliza conjuntamente con el modo 3 para la comunicación inter ­ procesadores. En el modo 2 la RX no dará por completada una recepción al menos que el noveno bit sea igual a uno. Toda recepción con su noveno bit en cero es ignorada. Esto significa que los flags no serán seteados, no se iniciará la interrupción ni tampoco se transferirá el dato a SxRBUF. Es decir que una recepción ignorada pasará totalmente desapercibida para la CPU del receptor. Esta modalidad se complementa con el modo 3 en un esquema como el siguiente: Supóngase que se desea establecer la comunicación entre una unidad MASTER y una unidad SLAVE de entre varias que se encuentran conectadas sobre un único medio de comunicación. La unidad Master transmitirá siempre en modo 3 y los SLAVEs estarán inicializados originalmente para recibir en Modo 2. Cada SLAVE tiene un código de 8 bits que lo identifica (ID). A) La MASTER transmite el ID de la SLAVE con la que desea comunicarse con el noveno bit en uno. B) Todas las unidades SLAVEs reciben este dato pero solo aquella que se identifica con el ID transmitido cambia su modalidad de recepción a modo 3. C) La MASTER transmite la totalidad de su mensaje forzando el noveno bit de cada uno de los caracteres transmitido al valor 0. Esto hace que solo la unidad SLAVE identificada reciba los datos y todas las otras los ignoren. D) Cuando la transmisión termina la unidad receptora vuelve a su modo inicial de recepción que es el modo 2 y por lo tanto ignorará todo lo que se transmita por la línea hasta que una transmisión cumpla con: Bit noveno en uno. Byte transmitido coincidente con su ID. Evidentemente en este tipo de esquemas no es posible usar el noveno bit como el bit de paridad. 2.4.3. M ODO 0 Este modo es sincrónico. La TX Machine generará una señal de clock la cual también es transmitida a la RX Machine vía un soporte de comunicaciones adicional. La señal de clock generada se entrega en el pin TxD y siempre es un divisor de la señal de clock que utiliza la CPU y puede ser interna (CLKOUT) o externa (ingresa vía BCLKx). Los datos se entregan en el pin RxD y siempre son de 8 bits. Dada la utilización de TxD para enviar el clock la transmisión en modo 0 siempre es HALF DUPLEX, es decir que la unidad que este recibiendo/transmitiendo datos en modo 0 no puede simultáneamente transmitir/recibir datos por el mismo canal. 2.4.4. VARIACIONES DE LOS M ODO S Existen algunas variaciones a los métodos descriptos de uso poco frecuente pero disponibles al fin DOBLE STOP BIT
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 119 de 136 Existen algunas unidades receptoras que no tienen la capacidad de reacción suficiente como para recibir datos que solos estén separados entre sí por un único bit. En estos casos se suele utilizar un esquema en el cual el transmisor genera siempre automáticamente dos bits del tipo STOP BIT. BRECK CHARACTER Si al receptor aun no le es suficiente con dos caracteres de STOP (caso algunas viejas unidades de telex) es posible programar al transmisor para que separe los caracteres con BRECK CHARACTER. Un BRECK CHARACTER es una larga sucesión de ceros sin intercalación de START BITs ni STOP BITs. Estos caracteres especiales también fueron usados para implementar un viejo esquema de MASTER­SLAVE. 2.5. PROGRAMACION DE LA UNIDAD SERIE DEL 80186 Existen para cada canal serie 6 registros que controlan su funcionamiento Serial Receive Buffer Register Bits 0 a 7 Dato recibido Serial Transmit Buffer Register Bits 0 a 7 SxRBUF SxTBUF Dato a ser transmitido Baud Rate Counter Register Baud Rate Compare Register BxCNT BxCMP Estos dos registros trabajan en conjunto y entre ambos determinan la Baud Rate Base(BRB). El BxCNT es un contador de 16 bits que es incrementado en uno cada ciclo del clock llamado Baud Timebase. El Baud Timebase puede ser el propio clock de la CPU o puede ser un clock externo que debe ser ingresado vía el pin BCLK. El bit más significativo de este registro (BxCMP) indica cual ha de ser la fuente usada para el Baud Timebase. Cuando el valor del BxCNT alcanza el valor almacenado en BxCMP se resetea BxCNT y se genera un pulso. La relación entre BRB y el valor almacenado en BxCMP viene dada por la formula: EN MODO 0 EN MODO 1 A 4 FCPU BxCMP FCPU 1 BaudRate BxCMP 1 BaudRate * 8 Si el BTB es el clock interno siendo FCPU = 0,5 * CLCKIN Si el BTB es un clock externo las formulas se modifican de la siguiente manera:
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 120 de 136 EN MODO 0 EN MODO 1 A 4 BCLK BCLK BxCMP BxCMP BaudRate BaudRate * 8 Baud Rate Counter Register Bits 0 a 14 BxCNT Valor actual del contador Baud Rate Compare Register BxCMP Bits 0 a 14 Valor de comparación Bit 15 Selecciona la fuente para el clock; 0 BCLK; 1 CPU clock 2.5.1. EJ EM PLOS DE VALOR ES PAR A BXCM P La tabla siguiente muestra los valores correspondientes a BxCMP para las distintas velocidades de transmisión mas frecuentemente usadas considerando una CPU que trabaja a 20 MHz y usando el clock interno como fuente. Baud Rate 19.200 9.600 4.800 2.400 1.200 Serial Port Control Bits 0 a 2 Modo 0 (20.000.000 / 19.200) – 1= = 1.041d = 0411h = 2.082d = 0822h = 4.166d = 1046h = 8.332d = 208Ch = 16.666d = 411Ah SxCON Modo de operación Bit 3 PEN Bit 4 Bit 5 Bit 6 EVN REN CEN Bit 7 Bit 8 TB8 SBRK Modo 1 a 4 (20.000.000 / 19.200 * 8) – 1= =129d = 0081h =259d = 0103h = 520d = 0208h = 1.041 = 0411h = 2.082 = 0822h 000 modo 0 011 modo 3 001 modo 1 100 modo 4 010 modo 2 101/110/111 no usados Habilita el bit de paridad. Cuando corresponda el canal generará automáticamente el bit de paridad de acuerdo al tipo de paridad indicado en EVN. Cuando la paridad esta habilitada indica el tipo deseado Par (1) Impar (0). Habilita la RX Machine cuando es 1 Clear To Send. Si es =1 toda transmisión queda inhibida hasta que la señal CTS sea desactivada. representa al octavo (noveno ?) bit transmitido en los modos 2 y 3 Fuerza, cuando su valor es 1, la salida TxD igual a cero. TxD permanece en cero mientras SBRK permanezca en uno.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 121 de 136 Serial Status Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8 Bit 9 SxSTS CTS Clear To Send. Representa el complemento del valor presente en el pin CTS. La lectura de este bit no modifica el valor de CTS. OE Error de sobre – escritura. Se produce cuando el registro de desplazamiento de la RX tiene disponible un nuevo dato para ser transferido a SxRBUF y el ultimo dato colocado allí aun no fue leído. TXE es igual a uno solo si SxTBUF y el registro de desplazamiento de la TX están vacíos. En esta condición es posible grabar dos datos consecutivos en SxTBUF para su transmisión. El primero será inmediatamente transferido al registro de desplazamiento y el otro permanecerá en SxTBUF. FE Framing Error. Es seteado a 1 cuando RX detecta un error de frame; es decir; no detecta un STOP BIT correcto cuando lo requiere. TI Es seteado a 1 cuando TX comienza la transmisión de un STOP BIT. RI es seteado cuando la RX detecta la llegada de un STOP BIT y ha transferido el dato a SxRBUF. RB8/PE Contiene el noveno bit recibido en modos 2 o 3. PE es igual a uno cuando ocurrió un error de paridad. Solo tiene significado cuando la paridad esta habilitada en modos 1, 2 o 3. DBRK0 es seteado a uno cuando se recibe un BREAK CHARACTER de al menos M bits. DBRK1 es seteado a uno cuando se recibe un BREAK CHARACTER de al menos 2M + 3 bits M es la cantidad total de bits que constituyen el frame La lectura del registro SxSTS resetea todos sus bits salvo CTS y TXE. Cada vez que los bits TI o RI son seteados por el micro (no por programa) se produce una interrupción. El canal 0 soporta el manejo de las interrupciones directamente vía la unidad integrada de interrupciones mientras que el canal 1 genera las señales de salida RXI1 Y TXI1 las cuales pueden, si así se lo desea, conectarse a pins de interrupción externos. 2.5.2. PRO GRAM ANDO EL M O DO 0 Los pasos a seguir para programar este modo de transmisión son: a) Determinar el canal serie a utilizar e inicializar los pin de E/S de acuerdo al uso que se pretenda. b) Programar BxCNT y BxCMP para determinar la velocidad de la transferencia y la fuente de clock a utilizar. c) Programar bit 0, bit 1 y bit 2 con 000 para definir modo 0 d) Si se desea bloquear las transmisiones con CTS, setear en 1 el bit CEN en SxCON Si se trata de una transmisión, grabar el dato a transmitir en SxTBUF. Esta acción desencadenará la transmisión sincrónica a la velocidad indicada con un frame de 8 bits de datos. La interrupción generada por TI = 1 o el propio chequeo de TI = 1 en el SxSTS indicaran el final de la Transmisión. Si se trata de una recepción, el seteo del bit REN en SxCON iniciara el muestreo de los datos de ingreso. Previamente debe asegurarse que el RI sea cero.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 122 de 136 La interrupción generada por RI = 1 o el propio chequeo de RI = 1 indicaran el final de la recepción. Los bits de errores OE, FE y PE pierden significado en este modo de operación. 2.5.3. PRO GRAM ANDO LOS M ODOS 1 A 4 a) Determinar el canal serie a utilizar e inicializar los pin de E/S de acuerdo al uso que se pretenda. b) Programar BxCNT y BxCMP para determinar la velocidad de la transferencia y la fuente de clock a utilizar. c) Programar bit 0, bit 1 y bit 2 con el valor correspondiente al modo elegido. d) Si va a usarse paridad programar PEN y EVN en SxCON. e) Si se usará Clear To Send programar CEN. f) Si se desea recibir datos debe programarse REN para habilitar la RX Machine. La TX Machine no requiere ser habilitada explícitamente. Si se trata de una transmisión la grabación del dato en SxTBUF la iniciará. La interrupción o el chequeo de TI = 1 indicará la finalización de la transmisión. Si se trata de una recepción la habilitación de una de RX con RI = 0 la iniciará. La interrupción o el chequeo de RI = 1indicará la finalización. En ambos casos detectada la finalización la lectura de SxSTS permitirá conocer el resultado de la transferencia y a la vez blanquear los bits de status. 2.6. EJEMPLOS DE PROGRAMAS. 2.6.1. PRO GRAM A USANDO EL M ODO 0 Ejemplo de transmisión en Modo 0 $mod186 name ejemplo_mode_0 ;************************************************************** ; FUNCION: Tr ansmite un dato del usuar io en for ma ser ial y sincr ónicamente vía RxD1 ; TxD1 suministr a el clock. La fr ecuencia de la tr ansmisión se calcula: ; tr an_fr eq = ( 0.5 * CLKIN / BAUDRATE ) ­ 1 ; ; A 0­1­0 pulse on P1.0 indicar á el final de la tr ansmisión. ; ; SINTASIS: exter n void far par allel_ser ial (char user _data , int tr an_fr eq) ; INPUTS: user _data – dato a ser enviado ; tr an_fr eq – valor a colocar en Ser ial Compar e Register par a deter minar la fr ecuencia ; OUTPUTS: None ; NOTA: Los par ámetr os r equer idos se asumen son pasados en el stack ;************************************************************** ; B1CMP equ xxxxH Channel 1 Baud Rate Compar e ; S1CON equ xxxxH Channel 1 Contr ol ; S1STS equ xxxxH Channel 1 Status ; S1TBUF equ xxxxH Channel 1 Receive Buffer
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 123 de 136 ; xxxx – deber á ser r eemplazado por los cor r espondientes valor es de desplazamiento de cada r egis; tr o dentr o de la PCB ; Se asume que todos los por t ­ pin se encuentr an configur ados como cor r esponde y ; que la PCB se encuentr a en el espacio de dir ecciones de E/S. lib_80186 segment public ' code' assume cs:lib_80186 public _par allel_ser ial _par allel_ser ial pr oc far push bp ; salva el valor de bp mov bp, sp ; posiciona bp al tope del stack user _data equ wor d ptr [bp+6] ; r elaciona los nombr es de los par ámetr os tr an_fr eq equ wor d ptr [bp+8] ; con su ubicación en el stack push ax ; salva los r egistr os push dx ; que se necesitan mov dx, S1STS ; blanquea toda inter r upción pendiente mov dx, P1CON ; Lee el estado del Por t 1 in ax, dx and ax, 0feh ; setea Por t1.1 como de salida out dx, al mov dx, B1CMP mov ax, tr an_fr eq or ax, 8000h ; setea fuente de clock como inter na out dx, ax ;Modo 0, 1 millón bps mov dx, P2CON ; setea Por t 2.1 como TXD mov ax, 0ffh out dx, al mov dx, S1TBUF ; coloca en S1TBUF el dato del usuar io mov ax, out dx, al mov dx, S1CON ; Modo 0, No CTS, Tr ansmisión xor ax, ax out dx, ax mov dx, S1STS Check_4_TI: in ax, dx test ax, 0020h ; checkea el bit TI jz Check_4_TI mov dx, P1LTCH ; setea P1.0 como 0 xor ax, ax out dx, al not ax ; setea P1.0 como 1 out dx, al not ax ; setea P1.0 como 0 out dx, al pop dx ; r ecuper a los r egistr os salvados
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 124 de 136 _par allel_ser ial lib_80186 pop ax pop bp r et endp ends end ; r ecuper a el valor de bp 2.7. EJEMPLO DE TRANSMICION EN MODO 4 $mod186 2.8. PROGRAMA USANDO EL MODO 4 name EJ EMPLO_TRANSM_ASINC ; ; Ejemplo de iniciación de la Ser ial Communications Unit. ; ; CHANNEL_SETUP setea el canal 0 a 9600 baud, full duplex, 7 bits de datos, par idad par , y con­ ; tr ol vía CTS#. ; ; Se asume que los r egistr os del por t ser ial han sido cor r ectamente seteados y que la PCB se en­ ; cuentr a localizada en el espacio de dir ecciones de E/S. ; ; B0CMP EQU 0xxxx ; Channel 0 Baud Rate Compar e ; S0CON EQU 0xxxx ; Channel 0 Contr ol ; S0STS EQU 0xxxx ; Channel 0 Status ; S0RBUF EQU 0xxxx ; Channel 0 Receive Buffer ; S0TBUF EQU 0xxxx ; Channel 0 Tr ansmit Buffer code_seg assume segment public cs:code_seg CHANNEL_SETUP ; Seteo del canal 0 pr oc near mov ax, 8067H mov dx, B0CMP
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a ; 9600 baud a 8 MHz CPU clock Página 125 de 136 out dx, al mov ax, 0059H mov dx, S0CON out dx, al ; setea: baud r ate ; CEN=1 (CTS enabled) ; REN=0 (r eceiver not enabled yet) ; EVN=1 (even par ity) ; PEN=1 (par ity tur ned ON) ; MODE=1 (10 bit fr ame) ; gr aba el Ser ial Contr ol Reg. ; Blanquea toda inter r upción pendiente mov dx, S0STS in ax, dx ; habilita la RX machine mov dx, S0CON in ax, dx or ax, 0020H out dx, al ; Lee S0CON ; Setea REN ; Gr aba S0CON ; A par tir de este momento comienza la toma de muestr as sobr e RxD. Detectado un fr ame cor r ecto ; el dato ser á tr ansfer ido a S0RBUF ; Un wr ite sobr e SxTBUF iniciar á la tr ansmisión. Ret CHANNEL_SETUP endp code_seg ends end
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 126 de 136 3. ACCESO DIRECTO A MEMORIA (DMA) 3.1. DESCRIPCION GENERAL En muchas aplicaciones se requiere transferir grandes bloques de entre memoria y el espacio de E/S. Un drive de disco por ejemplo normalmente lee y graba bloques de datos de cientos de bytes de longitud. Si la CPU fuese requerida para manejar cada uno de los bytes ha ser transferidos prácticamente la transferencia en sí absorbería la totalidad de la capacidad de ejecutar instrucciones de la CPU. Por mas que la transferencia se hiciese vía interrupciones la carga de la CPU sería muy grande. El concepto de DMA permite que la transferencia entre la memoria y los periféricos se realice sin la intervención de la CPU. Los sistemas que admiten DMA cuentan con una unidad de control de DMA la cual toma el control del bus del sistema para realizar directamente bajo su supervisión la transferencia. Cuando el controlador DMA recibe un requerimiento desde un periférico para realizar una transferencia solicita a la CPU el control del bus del sistema. En cuanto pueda la CPU entregara dicho control y el DMA realizará la transferencia. En muchos casos la CPU podrá seguir cargando instrucciones desde la cola de pre – carga. En el caso del80186 la unidad DMA tiene cuatro canales. Cada uno puede aceptar requerimientos desde una de las siguientes cuatro fuentes posibles: a) un pin externo b) la unidad de comunicaciones series. c) La unidad de relojes d) Desde un programa. e) La transferencia de los datos puede realizarse entre cualquier combinación de direcciones de memoria y direcciones del espacio de E/S. 3.2. TRANSFERENCIA DE DATOS VIA DMA EN EL 80186 Una transferencia vía DMA se inicia con un requerimiento. Puede ser un 'source request', cuando el periférico desea transmitir datos, o un 'destination request' cuando el periférico desea recibir datos. Cuando un requerimiento DMA es servido la BIU provee las señales para controlar el Bus y el DMA provee las direcciones involucradas. Toda transferencia vía DMA consiste de dos ciclos de bus. Uno es el de carga y el otro es el de deposito. Ambos son indivisibles. Durante el ciclo de carga un byte o una palabra es leído desde la fuente y almacenada en un registro temporario. En el ciclo de depósito el contenido de dicho registro temporario es grabado en el destino. Cada canal DMA tiene almacenadas las direcciones físicas que representan la fuente y el destino de la transferencia. Como una dirección física puede tener hasta 20 bits se reservan dos registros de 16 bits cada uno para almacenar cada una de las direcciones. Estos pointers pueden ser automáticamente incrementados o decrementados a lo largo de una transferencia. Según se transfieran bytes o palabras dicho incremento o decremento será de una unidad o de dos.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 127 de 136 3.3. TIPOS DE REQUERIMIENTOS DMA Existen dos tipo de requerimientos de DMA: externos e internos 3.3.1. REQ UERIM IENTOS EXTERNOS Son presentados en el pin DRQ. Este pin es analizado con el frente negativo de CLKOUT. Una vez detectado el DRQ activo, transcurrirán al menos 4 clocks antes que el ciclo DMA sea iniciado. La señal DRQ debe ser desactivada al menos 4 clocks antes que el ciclo DMA termine si no se desea que se arranque inmediatamente a continuación un nuevo ciclo DMA. Los requerimientos DMA externos se clasifican en sincronizados por la fuente y sincronizados por el destino. Los sincronizados por la fuente son generados por periféricos que envían datos a la CPU; los otros por periféricos que reciben datos de la CPU. El tipo de sincronización de un canal DMA se maneja por software. La figura siguiente muestra una típica transferencia sincronizada por la fuente
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 128 de 136 La señal DRQ activa, 4 clocks antes, desencadena el ciclo de carga del ciclo DMA. El valor de DRQ, 4 ciclos previos a la terminación del ciclo DMA, es decir cuando termine T4, determinará si se reinicia o no un nuevo ciclo. Por lo tanto el periférico puede desactivar DRQ en cualquier momento entre el pulso que termina T1 y el que finaliza la fase 1 de T4 si no quiere reiniciar a continuación un nuevo ciclo DMA. En el caso de transferencias sincronizadas por destino la situación se complica pues el dispositivo debe retener DRQ hasta la finalización de T1. En el ciclo de deposito y entonces no tiene tiempo suficiente para anticipar con los 4 clocks requeridos el no re – inicio de otro ciclo. Por esta razón todo ciclo sincronizado por destino siempre inserta luego del ciclo de deposito 2 T­STATE IDLE. La figura siguiente muestra la situación descripta: El clock que finaliza la fase 1 del T­STATE T2 del ciclo de deposito es la única oportunidad de desactivar DRQ cuando no se quieren ciclos consecutivos. 3.3.2. REQ UERIM IENTOS INTERNOS Son aquellos generados por periféricos integrados o por software. Cualquiera de los 4 canales DMA puede aceptar requerimientos desde el TIMER2 o desde la unidad de comunicaciones Serie. El multiplexor INTERNAL DMA REQUEST controla cual de ellos tomará acción. 3.3.2.1. Tr ansfer encias con tr olad as por TIM E2 Cuando un canal DMA reacciona a requerimientos internos de TIME2 iniciará una transferencia cada vez que TIME2 alcance su máximo valor. Este tipo de transferencias es muy útil cuando se trata de servir a periféricos cuyo funcionamiento es basado en el tiempo. Por ejemplo, supóngase que un convertido A/D requiere datos cada 22 microsegundos para producir una onda en el rango de audio. En este caso la fuente de datos para el canal DMA sería un lugar de memoria donde el programa ira generando los distintos valores de la onda, el destino de
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 129 de 136 los datos seria el periférico que convierte digital en analógico y TIME2 controlaría la frecuencia de la transferencia generando un requerimiento DMA cada 22 microsegundos. 3.3.2.2. Tr ansfer encias con tr olad as por la unida d serie El 80186 tiene dos canales de E/S serie, cada uno de los cuales tiene sus propias RX y TX Machines. Cada uno de los 4 canales DMA puede ser asignado solo a uno de estos canales series según la siguiente tabla: DMA canal 0 soporta al canal serie 0 como transmisor TX0 DMA canal 1 soporta al canal serie 0 como receptor RX0 DMA canal 2 soporta al canal serie 1 como transmisor TX1 DMA canal 3 soporta al canal serie 1 como receptor RX1 Cuando un canal serie completa la transmisión de un byte activa la señal de requerimiento de DMA y la señal de interrupción. La utilización de un port serie con transferencias controladas por el DMA en lugar de controladas por interrupciones provee una mejor performance sobre todo cuando se trata de bloques de gran tamaño. 3.3.2.3. Tr ansfer encias con tr olad as por softwa re Si se selecciona para un canal DMA el tipo de sincronización NO SINCRONIZADO la transferencia se iniciará una vez finalizado el seteo del canal DMA correspondiente y solo finalizará cuando se hallan transferidos la totalidad de los bytes indicados en la inicialización del canal. 3.4. TERMINACION Y SUSPENCIONES DE TRANSFERENCIAS DMA Cuando una transferencia DMA es terminada se desconocerán sucesivos requerimientos DMA hasta que el canal sea re – inicializado nuevamente. Si en cambio una transferencia DMA es suspendida temporalmente no es necesario re – inicializar el canal. Una transferencia DMA termina cuando: A) Si esta programada para terminar por cuenta a cero, cuando el contador de bytes transferidos llega a cero. B) Por programa se fuerza su terminación. Una transferencia DMA se suspende cuando A) se procesa una NMI B) por programa se fuerza su suspensión. 3.5. INTERRUPCIONES GENERADAS POR LA UNIDAD DMA Cada canal DMA puede ser programado para genere una interrupción cuando su contador de bytes transferidos alcanza el valor cero. Los canales 2 y 3 son soportados internamente por la unidad de control de interrupciones. Los canales 0 y 1 generan las salidas DMAI0 y DMAI1 respectivamente, las cuales si se desea pueden direccionarse a pin de interrupciones externas. 3.6. ORGANIZACIÓN DE LOS CANALES DMA Un módulo DMA consiste de dos canales. Dentro de cada módulo existe una unidad lógica que define que canal será atendido si ambos requieren servicio simultáneamente.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 130 de 136 Por programa se fija la prioridad de un canal en ALTA o BAJA. Si la prioridad de ambos canales son iguales se aplicará un criterio de rotación. Si dos canales con prioridades distintas, dentro del mismo módulo, requieren servicio se atenderá aquel que tenga la prioridad ALTA. Este canal continuará realizando ciclos DMA mientras todas estas condiciones se verifiquen: a) el canal sigue requiriendo ciclos b) el canal no ha terminado o suspendido su transferencia(vía programación o interrupciones) c) El canal no ha liberado el bus mediante la inserción de T­STATE IDLE en una transferencia sincronizada por destino. Este ultimo punto es muy importante cuando los dos canales usan diferentes tipos de sincronización. Por ejemplo, considerar el siguiente caso: Canal 0 canal1 Prioridad BAJA ALTA Sincronización POR LA FUENTE POR EL DESTINO Si en un momento ambos requieren ser atendidos se iniciará una transferencia por el canal 1 pues su prioridad es ALTA. Pero una vez transferido el primer byte, como es sincronizado por el destino, se insertarán T­STATE IDLE y entonces el bus es tomado por el canal 0, transfiriéndose un byte a pesar que el canal más prioritario aun no ha terminado su transferencia. Canal 1 retomará el control del bus al final de la transferencia del canal 0, pues en este momento volverá a presentarse la situación que los dos requieren servicio pero el 1 es el de prioridad ALTA, y así sucesivamente se irán intercalando transferencias de ambos canales. La figura muestra distintas situaciones presentables: La unidad DMA del 80186 consiste de dos módulos DMA y un circuito lógico de prioridades intermódulos que funciona exactamente igual que la unidad lógica que fija las prioridades a nivel canal dentro del módulo. La tabla que sigue muestra los nombres de los registros dentro de la PCB asociados a la unidad DMA y los nombres de las señales correspondientes
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 131 de 136 La siguiente figura muestra el esquema general de la unidad DMA. 3.7. PROGRAMANDO LA UNIDAD DMA Cada canal DMA tiene asociado 6 registros que lo controlan. Existen además 2 registros adicionales que controlan la prioridad inter módulos, el multiplexor de requerimientos internos y la suspensión de servicios. Para cada canal los registros son: DMA Source High Bits 0 a 3 DxSRCH contienen los bits 16 a 19 de la dirección de la fuente
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 132 de 136 DMA Source Low DxSRCL Bits 0 a 15 contienen los bits 0 a 15 de la dirección de la fuente DMA Destination High DxSRCH Bits 0 a 3 contienen los bits 16 a 19 de la dirección del destino DMA Source Low DxSRCL Bits 0 a 15 contienen los bits 0 a 15 de la dirección del destino DMA Control Register DxCON Bit 15 DMEM Bit 14 DDEC Bit 13 DINC Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 6/7 Si = 1 destino en memoria; si =0 destino en espacio E/S si =1 el pointer de destino es decrementado luego de cada transferencia. si =1 el pointer de destino es incrementado luego de cada transferencia. Nota: Si DDEC = DINC el pointer permanece constante SMEN Si = 1 la fuente en memoria; si =0 la fuente en espacio E/S SDEC si =1 el pointer de la fuente es decrementado luego de cada transferencia. SINC si =1 el pointer de la fuente es incrementado luego de cada transferencia. Nota: Si SDEC = SINC el pointer permanece constante TC si =1 se dará por terminada la transferencia cuando el contador llegue a cero. INT si =1 cuando el contador llegue a cero se generará una interrupción SYN Determinan el tipo de sincronización 00 no sincronizado 01 sincronizado por la fuente 10 sincronizado por el destino 11 no usado Si 00 el canal comenzará a transferir datos inmediatamente a continuación de hacer STRT igual a 1 bit 5 bit 4 P IDRQ bit 3 bit 2 Bit 1 CHG SRRT Bit 0 WORD Prioridad. ALTA (1) BAJA (0) si es setea = 1 el canal solo reaccionará a requerimientos internos. Si es =0 solo atenderá requerimientos externos vía el pin DRQ no se usa si es = 1 habilita la posibilidad de modificar STRT Hacerlo igual a 1 indica la iniciación del canal. Solo puede modificarse si CHG = 1. si es = 1 se transferirán palabras; si es = 0 se transferirán bytes DMA Control Register DxCON Bit 15 DMEM Si = 1 destino en memoria; si =0 destino en espacio E/S Binario que indica la cantidad de transferencias a realizar. Este numero es decrementado en una unidad cada vez que una transferencia unitaria es realizada. Los dos registros generales de la unidad DMA son: DMA Module Priority Register DMAPRI
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 133 de 136 Bit 10 IDRQB Bit 8 IDRQA Bit 2 Bit 0 DMAPB DMAPA DMA Halt Register Bit 15 Bit 9 Bit 8 Bit 7 HMI HMB HMA HNMI Bit 1 Bit 0 HDMB HDMA Si = 0 el TIMER2 será la fuente de los requerimientos internos para el módulo B (canales 2 y 3). Si = 1 el canal serie 1 será la fuente. RX1 a canal DMA 3 TX1 a canal DMA 2 Si = 0 el TIMER2 será la fuente de los requerimientos internos para el módulo A (canales 0 y 1). Si = 1 el canal serie 0 será la fuente. RX0 a canal DMA 1 TX0 a canal DMA 0 si es = 1 el módulo B tiene prioridad ALTA si es = 1 el módulo A tiene prioridad ALTA Si es DMAPA = DMAPB la prioridad es rotativa DMAHALT Debe ser = 1 para habilitar la posibilidad de modificación de HNMI. Debe ser = 1 para habilitar la posibilidad de modificación de HDMB. Debe ser = 1 para habilitar la posibilidad de modificación de HDMA. es puesto = 1 cuando la CPU procesa una NMI. Mientras este en 1 suspende toda transferencia en ambos módulos. Es reseteado a cero automáticamente cuando la CPU procesa la instrucción IRET. si es = 1 suspende las transferencias del módulo B si es = 1 suspende las transferencias del módulo A 3.7.1. SECUENCIA CORR ECTA PARA LA PROG RAM ACION DEL DM A 1) Programar los pointers a la fuente y al destino de cada uno de los canales DMA que vayan a usarse. 2) Programar la prioridad inter módulos 3) Programar el registro de control y el contador de transferencias de cada canal comenzando con el de mayor prioridad. 3.7.2. UTILIZACION DE LA UNIDAD DM A C ON LOS PUERTOS DE COM UNICACIÓN SER IE. 3.7.2.1. Ejemp lo 1. Puerto serie 0 en r ecepción Se usará el canal DMA 1 en el módulo A. El pointer a la fuente debe apuntar a SxRBUF El pointer al destino apuntará al lugar de memoria donde el mensaje a recibir debe ser almacenado. El registro de contador de transferencia debe iniciarse con la cantidad de transferencias unitarias requeridas El canal DMA se programará para que acepte requerimientos internos y del canal serie 0. Los valores de cada uno de los registros asociados serán: D1SRCL/H D1DSTL/H DMAPRI Dirección del S0RBUF Dirección de un lugar de memoria, por ejemplo MSG_RCV IDRQB = 0 IDRQA = 1 canal serie 0 será la fuente de interrupciones DMAPB = 0 DMAPA = 1 el módulo A tendrá prioridad ALTA
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 134 de 136 D1TC D1CON 128 DMEN = 1 DDEC = 0 DINC = 1 SMEN = 0 SDEC = 0 SINC = 0 TC = 1 INT = 1 STRT = 1 el mensaje a recibir será de 128 bytes de longitud. destino en memoria el pointer a memoria de destino deberá incrementarse en uno luego de cada transferencia unitaria terminar la transferencia cuando el contador llegue a cero. generar interrupción cuando el contador llegue a cero. Como es el canal DMA 1 la interrupción se presentará en DMAI1. sincronizado por la fuente prioridad de este canal ALTA reaccionará a requerimientos internos. habilita el posible cambio de STRT SYN = 01 P = 1 IDRQ = 1 CHG = 1 inicia el canal WORD = 0 se transferirán bytes. Cuando el canal serie reciba el primer byte de la transmisión en S0RBUF generará una interrupción de recepción la cual internamente provocará un requerimiento de DMA canal 1. Cuando la BIU satisfaga este pedido de un ciclo de bus (respetando sus prioridades) se produce la transferencia entre S0RBUF y el primer byte del buffer MSG_RCV. Con cada byte adicional recibido se generará una situación similar pero como el pointer a destino se incrementa en uno cada vez los bytes recibidos se van colocando en posiciones consecutivas a partir del primer byte en MSG_RCV: Cuando se transfiera el byte numero 128 el contador llegara a cero y por lo tanto se terminara la transferencia (el canal 1 deberá iniciarse nuevamente para que pueda reaccionar a un nuevo requerimiento DMA) y se generará una señal de interrupción en DMAI1. Si este pin se conecta con alguna de las entradas de interrupciones externas de la unidad de interrupciones por programa se podrá detectar esta interrupción y su rutina de servicio correspondiente tiene a su disposición los 128 bytes transmitidos. Durante la transferencia la CPU no fue requerida en lo mas mínimo. Si se quisiese programar una transmisión serie, el proceso es muy similar, pero una diferencia importante es que la transmisión debe iniciarse moviendo el primer byte a transferir al TBUF del canal serie correspondiente con una instrucción OUT. Una vez iniciada la transferencia continuará automáticamente hasta que el contador alcance el valor cero.
MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 135 de 136 APENDICE A. PRECIOS APROXIMADOS Costos de procesadores en funcion de tipo de encapsulado. Fecha AGOSTO­1998. 80186 Numero de item Precio $ A80C186XL­12 24.6 A80C186XL­20 25.35 KU80C186EC­20 12.75 KU80C186EC­25 12.75 N80C186XL­12 7.75 N80C186XL­20 7.75 N80C186XL­25 7.75 R80C186XL­12 20.65 R80C186XL­20 20.65 S80C186EB­25 10.2 S80C186EC­25 12.35 S80C186XL­20 8 S80C186XL­25 8 SB80C186EA­20 19.5 SB80C186EC­20 13.25 SB80C186XL­20 16 SB80C186XL­25 8.65 SB80L186EB­13 10.85 SB80L186EB­16 10.85 TA80C186XL­12 24.6 TA80C186XL­20 24.6 TN80C186EA­13 19.5 TN80C186EA­20 19.5 TN80C186EB­13 9.95 TN80C186EB­20 9.95 TN80C186XL­12 7.75 TN80C186XL­20 7.75 TS80C186EB­13 10.2 TS80C186EC­20 12.35 TS80C186XL­20 8 64 TS80L186EB­13 10.2 80386 Descripcion Precio $ FA80386EXTB25 32 BIT MICROPROCE 16.50 FA80386EXTC33 32 BIT MICROPROCE 16.50 KU80386EXTB25 32 BIT MICROPROCE 15.80 KU80386EXTC25 32 BIT MICROPROCE 15.80 KU80386EXTC33 32 BIT MICROPROCE 15.80 KU80386SXTA25 32 BIT MICROPROCE 11.85 NG80386SX16 32 BIT MICROPROCE 10.00
Numero item MICROPROCESADORES Y MICROORDENADORES Versión del 29/08/a Página 136 de 136