Departamento de Sistemas e Informática Microprocesador 8086 Digital II Presentación de Docentes y Material è è Docentes: è Ing. Silvia Domizi è Ing. Diego Alegrechi Material de Cátedra – (disponible en www.dsi.fceia.unr.edu.ar) 1. 2. 06/10/2014 Intel 8086 - Datasheet Los microprocesadores Intel - B. Brey – 3º Edición – Prentice Hall (Cap 7). Microprocesador 8086 – Digital II 2 Microprocesadores y Microcontroladores Microprocesador Dispositivo electrónico semiconductor que incluye la ALU, conjunto de registros y circuitos de control en un mismo chip. ➢ Incluye un set de instrucciones para manipular los datos y comunicarse con los periféricos. ➢ No incluye memorias internas. Posee buses de datos y direcciones que posibilitan la conexión con memorias de programas y datos externas al chip del microprocesador. ➢ Microcontrolador Microprocesador más memorias y periféricos específicos integrados en un mismo chip (temporizadores, conversores A/D, D/A, puertos UART, CAN, SPI, I2C, USB, ETHERNET, etc). ➢ Sistemas totalmente dedicados a resolver problemas específicos (sistemas embebidos). ➢ 06/10/2014 Microprocesador 8086 – Digital II 3 Microprocesador 8086 - Características Principales Características Procesador de 16 bits (puede operar en 8 ó 16 bits pero los buses internos son todos de 16 bits). ➢ Hasta 1 Mbyte de memoria direccionable (mapeable) – Bus de 20 lineas de direcciones. ➢ Espacio de memoria para periféricos de entrada salida de 64 Kbytes. ➢ Los buses de datos y direcciones están multiplexados temporalmente. ➢ La memoria o las memorias donde se aloja el código del programa y los datos es externa al microprocesador. El 8086 NO posee ningún tipo de memoria integrada para código o datos. ➢ ➢ Velocidad de operación (5MHz, 8MHz, 10MHz) ➢ Encapsulado de 40 pines. 06/10/2014 Microprocesador 8086 – Digital II 4 Microprocesador 8086 - Arquitectura Arquitectura del 8086 Estos microprocesadores tienen dos unidades inteligentes conectadas internamente: EU BIU Unidad de ejecución (Execution Unit). Unidad de interfaz con el Bus (Bus Interface Unit). 06/10/2014 Microprocesador 8086 – Digital II 5 Microprocesador 8086 - Arquitectura La unidad de ejecución (EU) Se encarga de decodificar las instrucciones cargadas (Fetched) por la BIU, generar las señales de control y ejecutar las instrucciones 06/10/2014 Microprocesador 8086 – Digital II 6 Microprocesador 8086 - Arquitectura La unidad de ejecución (EU) Proporciona las direcciones lógicas al BIU. Una dirección lógica está formada de dos direcciones, la primera indica el segmento en el cual se está trabajando y la otra indica el offset, o desplazamiento, de este segmento; esto es segment:offset. 06/10/2014 Microprocesador 8086 – Digital II 7 Microprocesador 8086 - Arquitectura La unidad de ejecución (EU) Posee una unidad aritmética lógica (ALU) de 16 bits, un registro de banderas y un conjunto de registros de propósito general. El registro de banderas contiene 6 banderas de estado y 3 banderas de control que se pueden manipular por los programas para alterar las operaciones del procesador . 06/10/2014 Microprocesador 8086 – Digital II 8 Microprocesador 8086 - Arquitectura La Unidad de Interfase con el Bus (BIU) Es la responsables de la comunicación externa del procesador. Esta unidad de proceso se encarga de traducir las direcciones lógicas a direcciones físicas de la memoria con ayuda de los registros de segmento DS, SS, ES, CS e IP. 06/10/2014 Microprocesador 8086 – Digital II 9 Microprocesador 8086 - Arquitectura La Unidad de Interfase con el Bus (BIU) Se encarga de todas las operaciones de Bus (comunicación con el exterior), que incluyen los ciclos de lectura y escritura, así como también la carga de las instrucciones para la EU (Instruction Fetching). Las instrucciones son cargadas en una cola de instrucciones. 06/10/2014 Microprocesador 8086 – Digital II 10 Microprocesador 8086 - Arquitectura La Unidad de Interfase con el Bus (BIU) La EU puede trabajar a una máxima eficiencia si se le provee constantemente de instrucciones y datos para procesar. Esa es la principal función de la cola de pre-carga de instrucciones de la BIU Concepto de Pipeline 06/10/2014 Microprocesador 8086 – Digital II 11 Microprocesador 8086 - Arquitectura MODELO DE PROGRAMACIÓN DEL 8086. 06/10/2014 Microprocesador 8086 – Digital II 12 Microprocesador 8086 - Arquitectura El modelo de programación del 8086 06/10/2014 Microprocesador 8086 – Digital II 13 Microprocesador 8086 - Arquitectura Registros de datos o de propósito general AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L según queramos referirnos a la parte alta o baja respectivamente. 06/10/2014 Microprocesador 8086 – Digital II 14 Microprocesador 8086 - Arquitectura Registros de datos o de propósito general AX = Acumulador. Es el registro principal, es utilizado en las instrucciones de multiplicación y división y en algunas instrucciones aritméticas especializadas, así como en ciertas operaciones de carácter específico como entrada, salida y traducción. Obsérvese que el 8086 es suficientemente potente para realizar las operaciones lógicas, la suma y la resta sobre cualquier registro de datos, no necesariamente el acumulador. 06/10/2014 Microprocesador 8086 – Digital II 15 Microprocesador 8086 - Arquitectura Registros de datos o de propósito general BX = Base. Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto, manteniendo la dirección de la base o comienzo de tablas o matrices. De esta manera, no es preciso indicar una posición de memoria fija, sino la número BX (así, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir accediendo a un gran bloque de memoria en un bucle). 06/10/2014 Microprocesador 8086 – Digital II 16 Microprocesador 8086 - Arquitectura Registros de datos o de propósito general CX = Contador. Se utiliza comúnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. En las instrucciones de desplazamiento y rotación se utiliza como contador de 8 bits. 06/10/2014 Microprocesador 8086 – Digital II 17 Microprocesador 8086 - Arquitectura Registros de datos o de propósito general DX = Datos. Usado en conjunción con AX en las operaciones de multiplicación y división que involucran o generan datos de 32 bits. En las de entrada y salida se emplea para especificar la dirección del puerto E/S. 06/10/2014 Microprocesador 8086 – Digital II 18 Microprocesador 8086 - Arquitectura Registros de segmento CS, DS, SS, ES: Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso, habrá de moverse alguno. 06/10/2014 Microprocesador 8086 – Digital II 19 Microprocesador 8086 - Arquitectura Registros de segmento CS = Registro de segmento de código (code segment). Contiene la dirección del segmento que apunta a un área de memoria donde se encuentra el código, instrucciones del programa. Los programas de más de 64 Kb requieren cambiar CS periódicamente. 06/10/2014 Microprocesador 8086 – Digital II 20 Microprocesador 8086 - Arquitectura Registros de segmento DS = Registro de segmento de datos (data segment). Contiene la dirección del segmento que apunta a un área de memoria donde se encuentran datos del programa. (Variables, Cttes, etc) 06/10/2014 Microprocesador 8086 – Digital II 21 Microprocesador 8086 - Arquitectura Registros de segmento SS = Registro de segmento de pila (stack segment). Contiene la dirección del segmento que apunta a un área de memoria donde se guardarán datos temporales del programa (Ej. direcciones de retorno de subrutinas, etc) 06/10/2014 Microprocesador 8086 – Digital II 22 Microprocesador 8086 - Arquitectura Registros de segmento ES = Registro de segmento extra (extra segment). Segmento de ampliación para zona de datos. Es extraordinariamente útil actuando en conjunción con DS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre las que se pueden intercambiar datos 06/10/2014 Microprocesador 8086 – Digital II 23 Microprocesador 8086 - Arquitectura Registros punteros de pila SP = Puntero de pila (stack pointer). Apunta al inicio de la pila. Utilizado en las instrucciones de manejo de la pila. 06/10/2014 Microprocesador 8086 – Digital II 24 Microprocesador 8086 - Arquitectura Registros punteros de pila BP = Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados). 06/10/2014 Microprocesador 8086 – Digital II 25 Microprocesador 8086 - Arquitectura Puntero de instrucciones o contador de programa IP = Puntero de instrucción (instruction pointer). Marca el desplazamiento de la instrucción en curso dentro del segmento de código. Es automáticamente modificado con la lectura de una instrucción. 06/10/2014 Microprocesador 8086 – Digital II 26 Microprocesador 8086 - Arquitectura Registros índices: SI = Índice fuente (source index). Utilizado como registro de índice en ciertos modos de direccionamiento indirecto, también se emplea para guardar un valor de desplazamiento en operaciones de cadenas. 06/10/2014 Microprocesador 8086 – Digital II 27 Microprocesador 8086 - Arquitectura Registros índices: DI = Índice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas. 06/10/2014 Microprocesador 8086 – Digital II 28 Microprocesador 8086 - Arquitectura Registro de estado o de indicadores (flags) Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecución de un programa. • Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condición, que reflejan los resultados de operaciones del programa • los bits del 8 al 10 son indicadores de control y el resto no se utilizan. • Estos indicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa según el resultado de las operaciones. • 06/10/2014 Microprocesador 8086 – Digital II 29 Microprocesador 8086 - Arquitectura Bit CF Acarreo ("Carry Flag") Uso Indicador de arrastre del bit de mayor orden, que puede ocurrir en las operaciones aritméticas suma y resta. PF Paridad ("Parity Flag") Si está activo Indica un número par de bits activos (bits cuyo contenido es 1). Esta información es útil cuando el procesador controla transmisiones de datos. AF Acarreo auxiliar Indicador de ajuste en operaciones aritméticas con cantidades BCD ZF Cero ("Zero Flag") Está activo si el resultado de operación es cero o resultado de comparación igual. SF Signo ("Sign Flag") Si está activo indica que el resultado de operación o de comparación son negativos. Detención ("Trap Flag") Si está activo, el procesador genera automáticamente una interrupción después de la ejecución de cada instrucción, lo que permite controlar paso a paso la ejecución del programa. Este bit debe estar normalmente inactivo (a 0). IF Interrupción ("Interrupt Flag") Este bit controla el estado del sistema de interrupciones enmascarables . Cuando está activo (1) permite las interrupciones; el estado inactivo (0) las deshabilita. DF Dirección ("Direction Flag") TF 06/10/2014 Indicador de: OF Desbordamiento Microprocesador 8086(Overflow – DigitalFlag") II Indica la dirección de las operaciones. Señala desbordamiento aritmético 30 Microprocesador 8086 - Arquitectura Bit Indicador de: Indicativo si bit 1 Indicativo si bit 0 CF Acarreo CY ("Carry yes") NC ("No Carry") PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar AF Acarreo auxiliar AC ("Auxiliar Carry") NA ("No Auxiliar") ZF Cero ZR ("Zero") NZ ("No Zero") SF Signo NG ("Negative") negativo PL ("Plus") positivo IF Interrupción EI DI ("Disabled Interrupt") desactivada DF Dirección DN ("Down") decremento UP incremento OF Desbordamiento OV ("Overflow") NV ("No overflow") 06/10/2014 ("Enabled Interrupt") activa Microprocesador 8086 – Digital II 31 Microprocesador 8086 Segmentación de la Memoria en el 8086 06/10/2014 Microprocesador 8086 – Digital II 32 Microprocesador 8086 – Espacio Mapeable FFFFFh Bus de Direcciones Ao 220 = 1MByte Espacio Mapeable Mapa de Memoria A20 00000h 06/10/2014 Microprocesador 8086 – Digital II 33 Microprocesador 8086 - Segmentación Espacio de Memoria Un segmento es un área continua de memoria que puede tener hasta 64Kbytes, que debe comenzar en una localidad de memoria cuya dirección sea límite de 16 bytes (cantidad denominada párrafo) y que puede solaparse con otros segmentos. FFFFFh Fin del Segmento CS:FFFFh Segmento Físico de Código (64 Kbytes) CS:IP CS:0000h Inicio del Segmento Desplazamiento(Offset) 00000h 06/10/2014 Microprocesador 8086 – Digital II 34 Microprocesador 8086 - Segmentación Dirección Física y Dirección Lógica Cada localidad de memoria tiene dos tipos de direcciones : Dirección Física y Dirección Lógica o efectiva Una dirección Física es el valor único de 20 bits que identifica la localización de cada byte en el espacio de memoria de 1 Mbyte. Los programas tratan con dirección Lógicas mas que con la dirección Física. Para cualquier localidad de memoria, el valor base del segmento ubica el primer byte del contenido del segmento y el valor del offset es la distancia, en bytes , de la localización destino del principio del segmento. Los valores de la base del Segmento y del offset son cantidades no signadas de 16 bits; la dirección del byte más bajo del segmento tiene un offset 0. 06/10/2014 Microprocesador 8086 – Digital II 35 Microprocesador 8086 - Segmentación Formación de una Dirección Física Siempre que una memoria es accesada , se genera una dirección física a partir de la dirección lógica. Dirección efectiva, lógica u offset 4 bits Dirección de segmento EL REGISTRO DE SEGMENTO SE DESPLAZA 4 BITS HACIA LA IZQUIERDA (MULTIPLICACIÓN x16) 0000 0000 Dirección física 20 BITS 06/10/2014 Microprocesador 8086 – Digital II 36 Microprocesador 8086 - Segmentación Espacio de Memoria Segmentos Físicos → → → → Empiezan en direcciones físicas divisibles por 16. Tienen un tamaño fijo de 64 Kbytes. Utilizando direcciones lógicas, se puede acceder a todos los registros de un segmento físico sólo cambiando el desplazamiento. CS, DS, SS y ES son los registros del 8086 que contienen las direcciones de inicio de los respectivos segmentos físicos. Segmentos Lógicos → → FFFFF h SS:FFFF h Segmento Lógico de Pila Segmento Físico de Pila (64 Kbytes) SS:0000h CS:FFFF h Segmento Lógico de Código Segmento Físico de Código (64 Kbytes) CS:0000h Es una sección de memoria de tamaño VARIABLE y en general puede contener código, datos o pila. Para poder definir estos códigos son necesarios el uso de las directivas del ensamblador (emu8086) DS:FFFF h Segmento Lógico de Datos Segmento Físico de Datos (64 Kbytes) DS:0000h 00000h 06/10/2014 Microprocesador 8086 – Digital II 37 Microprocesador 8086 - Segmentación El segmento de código (tiene como base el contenido del registro CS). En este segmento se encuentran las instrucciones que forman el programa. Para acceder a los datos contenidos en él, se usa el registro IP como desplazamiento. El segmento de datos (que tiene como base el registro DS). Contiene los datos que utiliza el programa (variables, etc.) Para acceder a los datos contenidos en él, se suele utilizar los registros SI y DI como desplazamiento. 06/10/2014 Microprocesador 8086 – Digital II 38 Microprocesador 8086 - Segmentación SEGMENTOS SOLAPADOS CS CS SEGMENTO DE CÓDIGO PROGRAMA SEGMENTO DE CÓDIGO DS SEGMENTO DE DATOS OTRO SEGMENTO ES SEGMENTO EXTRA DE DATOS SS STACK MEMORIA 06/10/2014 MEMORIA Microprocesador 8086 – Digital II 39 Microprocesador 8086 - Segmentación Relocalización de un programa usando el registro CS 02000 600 PROGRAMA SEGMENTO DE CÓDIGO EN CURSO nuevo (CS)=1A30 1A300 600 PROGRAMA SEGMENTO DE CÓDIGO RELOCALIZADO MEMORIA 06/10/2014 Microprocesador 8086 – Digital II 40 Microprocesador 8086 Instrucción MOV y modos de direccionamiento 06/10/2014 Microprocesador 8086 – Digital II 41 Microprocesador 8086 – Instrucción MOV 06/10/2014 Microprocesador 8086 – Digital II 42 Microprocesador 8086 - Direccionamiento Tipos de Direccionamientos permitidos por el 8086 Por registro Inmediato Directo Indirecto – Por Registro Indirecto – Relativo a la Base Indirecto – Relativo a las base más índice Indirecto – Relativo a la base más índice con desplazamiento 06/10/2014 Microprocesador 8086 – Digital II 43 Microprocesador 8086 - Direccionamiento Direccionamientos por Registro e Inmediato En este tipo de operaciones no intervienen operandos que hagan referencia a una posición de memoria. MOV BX,CX Transfiere el contenido del registro CX al registro BX MOV AX,0x40h Transfiere 0x40h al registro AX En los restantes modos de direccionamiento SIEMPRE uno (y sólo uno) de los dos operandos hace referncia a una posición de memoria. Direccionamiento Directo DATO dw 1000h : : MOV BX,DATO Se transfiere la variable DATO al registro BX. El ensamblador interpreta a la variable DATO como un offset respecto del segmento de datos. Se transfiere un Byte de la posición DS:[1000h] a la parte baja del registro BX MOV BL,[1000h] 06/10/2014 Microprocesador 8086 – Digital II 44 Microprocesador 8086 - Direccionamiento Direccionamiento Indirecto – Por Registro MOV BX,1234h MOV AX,[BX] Transfiere 16 bits de la posición DS:[1234h] al registro AX Direccionamiento Indirecto – Relativo a la Base TBL_datos db 1,2,3 Transfiere el segundo Byte de la tabla “TBL_datos” a la parte baja del registro BX. La BIU calcula la dirección como: Dir = DS:(offset(TBL_datos) + DI) MOV DI,1 MOV BL,TBL_dato[DI] Direccionamiento Indirecto – Relativo a la Base + Indice TBL_datos db 1,2,3 MOV MOV MOV MOV AL,0xFFh BX,OFFSET TBL_datos DI,2 [BX][DI],AL 06/10/2014 Transfiere el valor guardado en AL al tercer Byte de la tabla “TBL_datos”. La BIU calcula la dirección como: BX = offset(TBL_datos) Dir = DS:( BX + DI) Microprocesador 8086 – Digital II 45 Microprocesador 8086 - Direccionamiento Direccionamiento Indirecto – Relativo a la Base + Indice con desplazamiento TBL_datos db 1,2,3 MOV MOV MOV MOV Transfiere el valor guardado en AL al tercer Byte de la tabla “TBL_datos”. La BIU calcula la dirección como: BX = offset(TBL_datos) Dir = DS:( BX + DI +1h) AL,0xFFh BX,OFFSET TBL_datos DI,1 1h[BX][DI],AL Resumen → Los únicos registros que pueden ser utilizados para el direccionamiento son BX, BP, SI y DI. Las combinaciones posibles para su uso se detallan a continuación. Desplazamiento 06/10/2014 Registro Base Registro Índice Combinaciones [BX] [SI] [BX][SI] [BP][SI] [BP] [DI] [BP][DI] [BX][DI] Microprocesador 8086 – Digital II 46 Microprocesador 8086 Espacio de Entrada/Salida 06/10/2014 Microprocesador 8086 – Digital II 47 Microprocesador 8086 – Espacio de I/O Espacio de Entrada/Salida → → → → El microprocesador 8086 posee también un espacio de direcciones válido, adicional al mapa de memoria de 1MBytes, cuyo rango va del 0000h al FFFFh (64 Kbytes). Sólo se utilizan 16 bits para direccionarlo A0 a A15. Un Pin (M/#IO) del 8086 indica si la operación de lectura o escritura fue realizada en el espacio de memoria o en el espacio de entrada/salida. Se utilizan sólo 2 instrucciones de Assembler para interactuar con este espacio (IN y OUT) 06/10/2014 Microprocesador 8086 – Digital II FFFFh 216 = 64KByte Espacio Mapeable Mapa de I/O 0000h 48 Microprocesador 8086 – Espacio de I/O 06/10/2014 Microprocesador 8086 – Digital II 49 Microprocesador 8086 – Espacio de I/O 06/10/2014 Microprocesador 8086 – Digital II 50 Microprocesador 8086 Pinout – Descripción Pin a Pin del 8086 06/10/2014 Microprocesador 8086 – Digital II 51 Microprocesador 8086 - PinOut Pines de Alimentación: ➢ VCC (5V) y GND Señal de Clock: ➢ El clock del 8086 dependiendo de su modelo podrá ser de 5MHz, 8MHz o 10MHz ➢ La señal deberá ser suministrada por un generador de clock externo (8284A) Bus de Direcciones: ➢ 20 líneas / pines (AD0 a AD15 y A16 a A19) ➢ Permiten direccionar 1MByte (220) Bus de Datos: ➢ 16 líneas / pines (AD0 a AD15) ➢ AD0 a AD15 son pines compartidos entre el Bus de Direcciones y el Bus de Datos. ➢ Para su utilización se requiere la multiplexación Temporal de los pines (Multiplexación del bus). 06/10/2014 Microprocesador 8086 – Digital II 52 Microprocesador 8086 - PinOut Pin de RESET: ➢ Manteniendo durante cuatro ciclos de clock este pin en un nivel ALTO producirá que el microprocesador se reinicie. ➢ Cuando el microprocesador se reinicia comienza a ejecutar instrucciones en la dirección FFFF0h del espacio de memoria. ➢ Se deshabilitan las interrupciones. Pin MN/#MX (Selección de Modo Máximo o Mínimo): ➢ Un nivel ALTO en este pin seleccionará el modo Mínimo. ➢ Un nivel BAJO en este pin seleccionará el modo Máximo. ➢ Dependiendo del modo seleccionado, se dará función específica a los pines 24 al 31. Pin #BHE (Byte High Enable): ➢ Habilita la escritura de la parte alta del bus de datos del 8086 bit 8 a bit 15. Pin READY: ➢ Se emplea para introducir estados de espera (Wait-State) en los ciclos de bus del microprocesador. ➢ Este pin en un nivel BAJO introducirá ciclos de espera. ➢ Este pin en un nivel ALTO no tiene efectos en el funcionamiento del microprocesador. 06/10/2014 Microprocesador 8086 – Digital II 53 Microprocesador 8086 - PinOut Modo Mínimo Modo Máximo Pin de RESET: ➢ Manteniendo durante cuatro ciclos de clock este pin en un nivel ALTO producirá que el microprocesador se reinicie. Single Processor mode Multiprocessor mode ➢ Cuando el microprocesador se reinicia comienza a ejecutar instrucciones El 8086 es responsable Un Controlador de Bus externo al en la dirección FFFF0h del espacio de memoria. de generar ➢ Se deshabilitan las interrupciones. todas las señales de control para 8086 será responsable de generar accesos a memoria y I/O. todas las señales de control para Pin MN/#MX (Selección los de Modo Máximo o Mínimo): los accesos a memoria y I/O. ➢ Un nivel ALTO en este pin seleccionará el modo Mínimo. ➢ Un nivel BAJO en este pin seleccionará el modo Máximo. Aplicaciones simples Aplicaciones complejas ➢ Dependiendo del modo seleccionado, se dará función específica a los pines 24 al 31. Pin #BHE (Byte High Enable): No es posible la conexión de un Procesadores adicionales pueden ➢ Habilita la escritura de la parte alta del bus de datos del 8086 bit 8 a bit procesador adicional ser conectados Ej. 8087 ( Co15. Procesador matemático) Pin READY: Pin # 33 es conectado a +5V Pin # 33 conectado a GND ➢ Se emplea para introducir estados de espera (Wait-State) en los ciclos de bus del microprocesador. ➢ Este pin en un nivel BAJO introducirá ciclos de espera. ➢ Este pin en un nivel ALTO no tiene efectos en el funcionamiento del microprocesador. 06/10/2014 Microprocesador 8086 – Digital II 54 Microprocesador 8086 - PinOut (Modo MN) Pin de #RD: ➢ Este pin de salida cuando está en un nivel BAJO indica que el microprocesador puede recibir datos del espacio de memoria o de Entrada/Salida. Pin de #WR: ➢ Este pin de salida cuando está en un nivel BAJO indica que el microprocesador está sacando datos para ser escritos en un dispositivo del espacio de memoria o de Entrada/Salida. Pin M/#IO: ➢ Este pin de salida indica si la operación de lectura/escritura se realizará con los dispositivos del mapa de memoria (nivel ALTO) o con los dispositivos del mapa de Entrada/Salida (nivel BAJO). Pin DT/#R: ➢ Este Pin de salida indica si el microprocesador se encuentra transmitiendo datos (DT/#R = 1) o recibiendo datos (DT/#R = 0). Esta señal es útil para habilitar los circuitos de acoplamiento del canal de datos. Pin #DEN: ➢ Este Pin de salida con un nivel en BAJO indica que el bus de datos se encuentra habilitado. Esta señal es útil para habilitar los circuitos de acoplamiento del canal de datos. 06/10/2014 Microprocesador 8086 – Digital II 55 Microprocesador 8086 - PinOut (Modo MN) Pin ALE (Address Latch Enable): ➢ Este pin de salida indica que los pines AD0 a AD15 y A16 a A19 contienen una dirección válida (Memoria o Entrada/Salida). ➢ Este pin se utiliza para grabar dicha dirección en un registro externo al microprocesador antes de que el microprocesador la retire. Pin HOLD: ➢ Este pin de entrada indica al microprocesador que se solicita un acceso directo a memoria. Un nivel en ALTO en este pin provocará que el microprocesador deje de ejecutar instrucciones y lleve su bus AD y de control a un estado de alta impedancia. Con un nivel BAJO en este pin el microprocesador ejecuta normalmente su programas. Pin HLDA: ➢ Este Pin de salida indica si el microprocesador reconoció el pedido de HOLD y que se han concedidos los canales. Pin #TEST: ➢ Este pin de entrada funciona en conjunto con la instrucción de assembler WAIT. Si #TEST = 1 entonces la instrucción WAIT esperará hasta que #TEST = 0 para continuar con el flujo de programa. ➢ Es útil para sincronizar con algún elemento externo al cual el microprocesador debe esperar que termine de realizar alguna tarea específica 06/10/2014 Microprocesador 8086 – Digital II 56 Microprocesador 8086 - PinOut (Modo MN) Pin INTR (Solicitud de Interrupción): ➢ Este pin de entrada se utiliza para solicitar una interrupción por hardware al microprocesador. ➢ La solicitudes de interrupciones que ingresen por este pin podrán ser enmascaradas (estado del bit del registro de banderas IF – Interrupt Flag). Pin #INTA (Reconocimiento del pedido de interrupción): ➢ Este Pin de salida indica con un nivel BAJO que el microprocesador reconoció el pedido de INTR. El dispositivo externo que solicitó la interrupción deberá colocar en el bus de datos el número del vector de interrupciones para que el microprocesador identifique la rutina de servicio de interrupciones que deberá ejecutar. Pin NMI (Interrupción No Enmascarable): ➢ Este pin es similar al INTR excepto que que no verifica cual es el estado del flag IF, por lo que cualquier pedido de interrupción que ingrese por este pin no podrá ser enmascarado. ➢ Esta entrada utiliza el vector de interrupción 2. 06/10/2014 Microprocesador 8086 – Digital II 57 Microprocesador 8086 - PinOut (Modo MN) Pines de Estado (Status Bus – S3 a S7): ➢ S3 y S4 se utilizan para identificar que registro de segmento se está utilizando en ese ciclo de bus. S5 indica el estado del flag IF (Interrupt Flag). ➢ S6 siempre es un CERO lógico. ➢ S7 siempre es un UNO lógico. ➢ 06/10/2014 Microprocesador 8086 – Digital II 58 Microprocesador 8086 Generador de Clock - 8284A 06/10/2014 Microprocesador 8086 – Digital II 59 Generador de Clock - 8284A El microprocesador 8086 no tiene integrado un generador de clock, por lo que será necesario el uso de uno externo. ➢ El fabricante (INTEL) recomienda en el manual del microprocesador el uso del 8284A. ➢ Las principales funciones que brinda este generador de clock son las siguientes: ➢ ✔ ✔ ✔ ✔ Generar la señal de clock al microprocesador (5MHz, 8MHz o 10MHz). Genera una señal de clock auxiliar para los periféricos del sistema. Maneja la señal de RESET del microprocesador. Maneja la señal de READY del microprocesador con la finalidad de insertar tiempos de espera (T-WAIT) en los ciclos de bus del 8086. 06/10/2014 Microprocesador 8086 – Digital II 60 Generador de Clock - 8284A Pines X1 y X2: ➢ Pines de conexión para el oscilador a cristal de la frecuencia correcta. Pin EFI: ➢ Entrada externa de clock. Esta entrada puede utilizarse como fuente de clock del 8284A en lugar del oscilador a cristal. Pin F/#C: ➢ Este pin de entrada puesto a un nivel BAJO se selecciona el oscilador a cristal como fuente de reloj para el 8284A. Con un nivel en ALTO se selecciona la entrada externa de clock EFI. Pin CLK: ➢ Este pin de salida es el que proporciona la señal de clock para el microprocesador 8086. La frecuencia de esta señal es de 1/3 de la frecuencia del oscilador a cristal o de la señal EFI. Pin PCLK: ➢ Este pin de salida es el que proporciona la señal de clock para los periféricos del sistema. La frecuencia de esta señal es de 1/6 de la frecuencia del oscilador a cristal o de la señal EFI. Pin OSC: ➢ Este pin de salida presenta una señal acondicionada (niveles TTL) de la misma frecuencia que el oscilador a cristal o de la señal EFI. 06/10/2014 Microprocesador 8086 – Digital II 61 Generador de Clock - 8284A Pines #AEN1 y #AEN2 (Address Enable): ➢ Estos pines (habilitación de direcciones) funcionan en conjunto con los pines RDY1 y RDY2 para generar la señal de READY del microprocesador. Pines RDY1 y RDY2: ➢ Estos pines indican que los canales están listos. Funcionan en conjunto con los pines #AEN1 y #AEN2. ➢ Este dispositivo permite tener dos grupos de periféricos que requieran insertar una cantidad distinta de T-WAITS. Pin READY: ➢ Este pin de salida que se conecta con el pin de READY del microprocesador. ➢ Cuando #AEN tiene un valor bajo y RDY un valor alto, se activará en forma sincrónica la señal READY. Pin #RES: ➢ Entrada de reset del 8284A. Se conecta una red RC que proporciona la temporización y acondicionamiento de la señal para el reset. Pin RESET: ➢ Este pin de salida proporciona la señal de RESET para el microprocesador. Esta señal es #RES sincronizada con el CLK. 06/10/2014 Microprocesador 8086 – Digital II 62 Generador de Clock - 8284A Pin CSYNC: ➢ Entrada de sincronización de la señal de clock EFI. Si se utiliza el oscilador a cristal este pin debe estar a GND. ➢ Esta entrada se utiliza en sistemas multiprocesadores. Pin #ASYNC: ➢ Es una entrada que permite seleccionar una o dos etapas de sincronización para la señal de READY. Pines VCC y GND: ➢ Pines de alimentación del 8284A. 06/10/2014 Microprocesador 8086 – Digital II 63 Generador de Clock - 8284A Aplicación típica del 8284A para la generación de las señales de Clock y Reset del microprocesador PCLK PCLK OSC 06/10/2014 2.5MHz 15MHz Microprocesador 8086 – Digital II 64 Microprocesador 8086 Multiplexado del Bus Esquemas típicos de Conexión 06/10/2014 Microprocesador 8086 – Digital II 65 Multiplexado del Bus y Buffering Demultiplexado del Bus Los buses de Dirrecciones/Datos (AD0 a AD15) y Direcciones/Estados (A16/S3, A17/S4, A18/S5, A19/S6) son multiplexados temporalmente por el microprocesador para minimizar la cantidad de pines del encapsulado. ➢ ➢ ¿Qué implica la Multiplexación temporal de los buses? ✔ ➢ Implica que en un momento/tiempo del ciclo de bus del microprocesador los pines del mismo (AD0 a AD15, A16/S3, A17/S4, A18/S5, A19/S6) se comportarán como bus de direcciones y en otro momento/tiempo del ciclo de bus se comportarán como bus de datos y de estados (los mismos pines!). ¿Es necesario demultiplexar los Buses?¿Por qué? ✔ ✔ Cualquier dispositivo que se encuentre conectado al microprocesador (ej. una memoria), requiere que la dirección siga siendo válida en sus pines de entrada mientras se lleva a cabo una operación de lectura o escritura del mismo Debemos salvar (grabar) la dirección válida que presenta el microprocesador en sus pines cuando este se comporta como bus de direcciones en un dispositivo externo (Latch/Registro). 06/10/2014 Microprocesador 8086 – Digital II 66 74LS373 – Registros 3 estados (3-States Octal D-types Transparent Latches) ALE (Address Latch Enable) Este pin de salida indica que los pines AD0 a AD15 y A16 a A19 contienen una dirección válida (Memoria o Entrada/Salida). Bus de Control ● M/IO: Memoria o Entrada/Salida ● #RD: Lectura (READ) ● #WR; Ecritura (WRITE) Sistema Totalmente Buffereado 74LS374 – Registros 3 estados (3-States Octal D-types Transparent Latches) 74LS245 – Transceiver (bidireccional) con salida de tres estados. Este tipo de configuración es requerido cuando las memorias o periféricos son lentos. DIR Direction 1: 0: è 06/10/2014 Gracias! Microprocesador 8086 – Digital II 69