0 оценок0% нашли этот документ полезным (0 голосов)
81 просмотров55 страниц
El documento introduce los conceptos básicos de los microcontroladores. Brevemente describe la evolución histórica desde los primeros sistemas programables hasta el desarrollo del primer microprocesador de 4 bits por Intel en 1971. Explica que desde el siglo XVIII la revolución industrial impulsó el desarrollo tecnológico para lograr la máxima automatización de los procesos industriales.
El documento introduce los conceptos básicos de los microcontroladores. Brevemente describe la evolución histórica desde los primeros sistemas programables hasta el desarrollo del primer microprocesador de 4 bits por Intel en 1971. Explica que desde el siglo XVIII la revolución industrial impulsó el desarrollo tecnológico para lograr la máxima automatización de los procesos industriales.
Авторское право:
Attribution Non-Commercial (BY-NC)
Доступные форматы
Скачайте в формате PDF, TXT или читайте онлайн в Scribd
El documento introduce los conceptos básicos de los microcontroladores. Brevemente describe la evolución histórica desde los primeros sistemas programables hasta el desarrollo del primer microprocesador de 4 bits por Intel en 1971. Explica que desde el siglo XVIII la revolución industrial impulsó el desarrollo tecnológico para lograr la máxima automatización de los procesos industriales.
Авторское право:
Attribution Non-Commercial (BY-NC)
Доступные форматы
Скачайте в формате PDF, TXT или читайте онлайн в Scribd
ICEI Instituto de Capacitacion en Electronica e Informatica 1 Indice Introduccin u Ios microprocesudores Generalidades y cronologia 1-2 El microprocesador y la logica cableada 1-5 Organizacion de un sistema microprocesador 1-6 Estructura de los buses 1-9 Niveles de comunicacion 1-9 Tipos de buses 1-9 Cronologia en la estructura de buses 1-11 Expansion de los buses 1-12 Bloque de memoria 1-13 Tipos de memoria 1-13 Estructura interna de una memoria 1-14 Tiempos de lectura y escritura 1-17 Interconexionado del sistema de memoria 1-22 Estructuras de conexionado 1-22 Estrategias de decodiIicacion 1-23 DecodiIicacion parcial 1-25 DecodiIicacion total 1-27 La unidad central de proceso (CPU) 1-34 Operaciones y Iunciones elementales de la CPU 1-35 La unidad de tiempo y control. El controlador interno 1-36 La unidad aritmetico-logica (ALU) 1-37 El acumulador y registros auxiliares 1-39 Registros de proposito especiIico 1-41 Contador de programa y salida de direcciones 1-41 El registro de instrucciones 1-43 El registro o palabra de estado (PSW) 1-45 El puntero de pila o stack pointer (SP) 1-46 Instrucciones 1-47 Eormato de una instruccion 1-47 Tipos de instrucciones 1-49 Modos de direccionamiento 1-49 Las Subrutinas 1-50 La pila y su puntero 1-53 Las interrupciones 1-55 Las unidades de entrada/salida 1-64 Estructura de las unidades de E/S 1-64 Conexion de las unidades de E/S 1-67 Estructuru internu de Iu fumiIiu MCS-1 2-1 Eamilia MCS-51 2-1 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 2 Patillas de MCS-51 2-3 Arquitectura interna 2-8 Organizacion de la memoria 2-8 Organizacion de los registros de Eunciones especiales 2-10 El Oscilador y circuiteria de reloj 2-13 Versiones HMOS 2-13 Versiones CHMOS 2-14 Diagramas de tiempo de la CPU 2-15 Estructura y Iunciones de los ports 2-17 ConIiguraciones de entrada/salida 2-17 Escritura en un port 2-20 Acceso a la memoria externa 2-20 Seal PSEN 2-23 Seal ALE 2-23 Solapamientos de los espacios de la memoria de programa y datos externos 2-24 A) Memoria de programa 2-24 B) Memoria de Datos 2-24 Temporizadores/Contadores 2-25 Timer 0 y Timer 1 2-25 Modo 0 2-26 Modo 1 2-28 Modo 2 2-29 Modo 3 2-29 Timer 2 2-30 InterIace Serie 2-33 Modo 0 2-33 Modo 1 2-34 Modo 2 2-34 Modo 3 2-34 Comunicaciones multiprocesador 2-34 Registros de control del puertos serie 2-35 Baud Rate 2-37 Utilizacion del Timer 1 para generar Baud Rates 2-37 Utilizacion del Timer 2 para generar Baud Rates 2-39 Port serie en modo 0 2-40 Port serie en modo 1 2-42 Port serie en modo 2 y 3 2-44 Interrupciones 2-46 Estructura del nivel de prioridad 2-48 Tratamiento de las interrupciones 2-49 Interrupciones externas 2-51 Tiempos de respuesta 2-52 Modos de Iuncionamiento de la alimentacion/retencion de datos 2-53 Reduccion de la alimentacion para versiones HMOS 2-53 Reduccion de la alimentacion para versiones CHMOS 2-53 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 3 Modo de no operacion (Idle Mode) 2-54 Modo de reduccion de la alimentacion ( power down mode ) 2-55 El 8751H 2-57 Programacion de la EPROM 2-57 VeriIicacion del programa 2-58 Bit de seguridad de la memoria de programa 2-59 Caracteristicas de borrado 2-59 Versiones de la Iamilia MCS-51 2-60 Versiones de alta velocidad 2-61 Mejoras en el sistema de memoria 2-61 Set de instrucciones y progrumucin de Iu fumiIiu MCS-1 3-1 Introduccion 3-1 DeIinicion de las instrucciones 3-1 Resumen Iuncional 3-2 Instrucciones de transIerencia de datos 3-3 Generales 3-3 EspeciIicas al acumulador 3-3 De carga de 16 bits 3-4 Instrucciones aritmeticas 3-5 Representacion de los numeros 3-5 Numeros sin signo 3-5 Numeros BCD 3-5 Numeros con signo 3-5 Numeros enteros 3-6 Suma 3-7 Resta 3-7 Multiplicacion 3-7 Division 3-7 Euncionamiento de los Ilags del PSW 3-8 Instrucciones logicas 3-14 Operaciones con un solo operando 3-14 Operaciones con dos operandos 3-15 Instrucciones de transIerencia de control 3-15 Llamadas incondicionales, retornos y saltos 3-15 Saltos condicionales 3-16 Retorno de interrupciones 3-17 Set de instrucciones 3-18 Instrucciones aritmeticas 3-18 ADD A,Rn 3-19 ADD A,directo 3-19 ADD A,Ri 3-20 ADD A,#dato 3-20 ADDC A,Rn 3-21 ADDC A,directo 3-21 ADDC A,Ri 3-22 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 4 ADDC A,#dato 3-22 SUBB A,Rn 3-23 SUBB A,directo 3-23 SUBB A,Ri 3-24 SUBB A,#dato 3-24 INC A 3-25 INC Rn 3-25 INC directo 3-26 INC Ri 3-26 DEC A 3-27 DEC Rn 3-27 DEC directo 3-28 DEC Ri 3-28 INC DPTR 3-29 MUL AB 3-29 DIV AB 3-30 DA A 3-31 Instrucciones logicas 3-32 ANL A,Rn 3-33 ANL A,directo 3-33 ANL A,Ri 3-34 ANL A,#dato 3-34 ANL directo,A 3-35 ANL directo,#dato 3-35 ANL C,bit 3-36 ANL C,/bit 3-36 ORL A,Rn 3-36 ORL A,directo 3-37 ORL A,Ri 3-37 ORL A,#dato 3-38 ORL directo,A 3-38 ORL directo,#dato 3-39 ORL C,bit 3-39 ORL C,/bit 3-40 XRL A,Rn 3-40 XRL A, Ri 3-41 XRL A, directo 3-41 XRL A,#dato 3-42 XRL directo,A 3-42 XRL directo,#dato 3-43 CLR A 3-43 CLR C 3-44 CLR bit 3-44 CPL A 3-44 CPL C 3-45 CPL bit 3-45 RL A 3-45 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 5 RLC A 3-46 RR A 3-46 RRC A 3-47 SWAP A 3-47 SETB C 3-48 SETB bit 3-48 Instrucciones de transIerencia de datos 3-49 MOV A,RN 3-50 MOV A,directo 3-50 MOV A,Ri 3-50 MOV A,#dato 3-51 MOV Rn,A 3-51 MOV Rn,directo 3-51 MOV Rn,#dato 3-52 MOV directo,A 3-52 MOV directo,Rn 3-52 MOV directo,directo 3-53 MOV directo,Ri 3-53 MOV directo,#dato 3-53 MOV Ri,A 3-54 MOV Ri,directo 3-54 MOV Ri,#dato 3-54 MOV DPTR,#dato16 3-55 MOVC A,ADPTR 3-55 MOVC A,APC 3-56 MOVX A,Ri 3-56 MOVX A,DPTR 3-57 MOVX Ri,A 3-57 MOVX DPTR,A 3-58 MOV C,bit 3-58 MOV bit,C 3-51 PUSH directo 3-51 POP directo 3-60 XCH A,Rn 3-60 XCH A,directo 3-60 XCH A,Ri 3-61 XCHD A,Ri 3-61 Instrucciones de llamada, retorno y salto 3-62 ACALL dir11 3-63 LCALL dir 16 3-64 RETI 3-65 RET 3-65 NOP 3-66 LJMP dir16 3-66 SJMP rel 3-67 AJMP dir11 3-67 JMP ADPTR 3-68 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 6 JZ rel 3-68 JNZ rel 3-69 DJNZ Ri,rel 3-69 DJNZ directo,rel 3-70 CJNE A,Ri,rel 3-70 CJNE Rn,#dato,rel 3-71 CJNE Ri,#dato,rel 3-72 CJNE Ri,#dato,rel 3-72 JC rel 3-73 JNC rel 3-73 JB bit,rel 3-74 JNB bit,rel 3-74 JBC bit,rel 3-75 Ejemplo de programacion de los diIerentes dispositivos internos: interrupciones, timers y puerto serie 3-76 Ejemplo 1 3-76 Ejemplo 2 3-77 Ejemplo 3 3-78 Ejemplo 4 3-79 Ejemplo 5 3-80 Ejemplo 6 3-81 Ejemplo 7 3-82 Ejemplo 8 3-83 Ejemplo 9 3-85 Ejemplo 10 3-87 Ejemplo 11 3-89 Herrumientus puru eI desurroIIo de upIicuciones con 2 mC 4-1 EspeciIicacion de un sistema y herramientas de desarrollo 4-1 Analisis de caracteristicas 4-1 Diseo Hardware/SoItware 4-2 VeriIicacion y puesta a punto 4-3 Herramientas de depuracion hardware. Analizadores logicos 4-3 Herramientas de depuracion soItware.4-4 Simuladores y emuladores Herramientas de ensamblado y compilado 4-6 Ensamblador X8051 de 2500 A.D. 4-7 Operacion de ensamblado 4-7 Operacion de enlazado 4-9 Ensamblador A51 de Eranklins 4-10 Operacion de ensamblado 4-10 Operacion de enlazado 4-13 Generacion de librerias 4-14 Operacion de conversion de codigo 4-15 Mapa de registros del 8051 y simbolos empleados por A51 4-19 Herramientas de depurado del soItware 4-22 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 7 Depurado mediante simulador AVSIM51 de 2500 A.D. 4-22 Comandos 4-23 Menu de Iunciones 4-36 Como empezar 4-46 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 8 CaptuIo
Introduccin a Ios microcontroIadores GeneraIidades y cronoIoga La introduccion del microprocesador ha signiIicado una verdadera revolucion en el campo del diseo industrial, y es de prever un mayor impacto con la incorporacion de nuevos materiales y tecnologias que conIiguren sistemas mas potentes combinados con sistemas de produccion cada vez mas economicos. La evolucion de la idea de microprocesador queda plasmada a lo largo de la historia, pero el ser humano tuvo que esperar hasta 1971 para conseguir un dispositivo Iisico de este ideal, al Iabricar Intel el 4004, primer microprocesador de 4 bits. Sin embargo existe una trayectoria historica en la que diIerentes acontecimientos van perIilando el concepto de sistema programable. Desde el siglo XVIII, con la revolucion industrial, el objetivo del desarrollo tecnico y cientiIico ha sido la busqueda de la obtencion de la maxima automatizacion de los procesos industriales. El termino automati:acion nacio en EE.UU., en las Iabricas de Eord, ante la necesidad de eliminar los tiempos muertos de las maquinas. Es a partir de la mitad del siglo XX cuando comienza la autentica carrera hacia la maxima automatizacion. Es una carrera de obstaculos sin meta aparente, en la que cada obstaculo esta cada vez mas cerca del otro. Sirva este simil para explicar como la tecnologia avanza a velocidades vertiginosas. Debemos revisar los siglos XVIII y XIX y analizar los hechos que acontecieron con la revolucion industrial. Los primeros dispositivos de calculo que se conocen son los abacos. Los mas antiguos son de origen oriental. Hasta el siglo XVII no se construyen las primeras calculadoras mecanicas, mientras que en el siglo XVIII aparecen las primeras maquinas mecanicas de multiplicar. El precursor de los computadores modernos es Babbage, quien en 1837 propone una maquina que no llego nunca a construirse, puesto que era demasiado compleja para la tecnologia mecanica del momento. EI microprocesador y Ia Igica cabIeada La utilizacion de sistemas basados en microcomputadores desplaza a la logica cableada y a sistemas programables mas complejos hacia otros margenes de utilizacion, a la vez que posibilita la introduccion de la electronica en general, y la inIormatica en particular, en nuevos campos de aplicacion. Respecto a la sustitucion de sistemas de logica cableada por INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 9 microcomputadores, este presenta las siguientes ventajas: a) El microprocesador puede reemplazar un numero elevado de circuitos integrados, lo cual presenta ventajas en cuanto a Iacilidad y modularidad del diseo, reduccion de costes, aumento de Iiabilidad por el menor numero de elementos e interconexiones y disminucion del consumo. b) El sistema resultante es mas Ilexible, por lo que permite mas opciones y/o modiIicaciones a la vez que posibilita Iuturas expansiones del sistema. c) Se puede trabajar con estructuras de inIormacion mas desarrolladas, las operaciones aritmeticas y logicas pueden ser mas complejas y sobre palabras de longitud variable aumentando la capacidad de decision del sistema. d) Se posibilita el soporte de un sistema de entradas y salidas potente en cuanto a numero y diversiIicacion de accesos. e) Se simpliIica ladiagnosis de Iallos, las reparaciones y el mantenimiento. e) Permite concebir sistemas de Iorma modular y estructurada. I) Se reduce el periodo de desarrollo y comercializacion del equipo. Actualmente las aplicaciones de los microcomputadores cubren diversos sectores, entre los que cabria destacar: Controladores programables: automatismos industriales, maquinas herramienta, etc. Instrumentacion: terminales interactivos, analizadores logicos, instrumentacion biomedica, Sistemas de adqisicion de datos, etc. Controladores de periIericos: unidades de discos, control de impresoras, etc. Control de procesos: sistemas de supervision y control, etc. Unidades de proceso aritmetico y contables: ordenadores de gestion, cajas registradoras, etc. Sistemas para la comunicacion: transmisores y receptores de datos, etc. Organizacin de un sistema microprocesador Cualquier sistema microcomputador debe constar basicamente de los siguientes bloques Iuncionales: a) Unidad de clculo (ALU): para la ejecucion de operaciones aritmetico y logicas. b) Unidad de control (UTC): capaz de coordinar el Iuncionamiento de todo el sistema (Eirmware) y de tomar decisiones en Iuncion de resultados previos. c) Sistema de Memoria: para la obtencion de instrucciones (Programa) y almacenamiento de inIormacion (variables del programa). d) Un Sistema de Entradas/Salida s: para establecer la comunicacion con el mundo exterior (recepcion de ordenes, datos, y entrega de resultados tanto de caracter analogico como digital). En la Fig 3.1 se muestra los diIerente bloques descritos anteriormente e interconexion de los mismos, Iormando asi la arquitectura tipica de un ordenador de utilizacion general. Un microprocesador es el resultado de la integracion a alta escala de la unidad aritmetico- logica (ALU) y el la unidad de tiempo y control (UTC). Un microcomputador es el sistema completo que utiliza un microprocesador. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 10 Eig. 3.1 En algunos casos, este elemento base contendra tambien parte de otros subsistemas como lineas de entrada/salidas (I/O) y un bloque de memoria de programa y datos, siendo el caso limite la integracion en un solo chip de un microcomputador completo, denominando a estos microcontroladores mC) de gran aplicacion en automatismos y sistemas de control industrial (MCS-51 de Intel, PIC de Arizona Microchip, etc). Existen Iundamentalmente dos alternativas limites en cuanto a la organizacion concreta de un microcomputador: Estructura Ortogonal: particion del sistema en subsistemas disjuntos donde cada uno tiene una Iuncion especiIica. De esta Iorma es posible aumentar la capacidad de cada subsistema (ROM, RAM, accesos de entrada o de salida) de una Iorma independiente. La Fig 3.2 muestra este tipo de estructura. Estructura Empaquetada. integracion de varias Iunciones distintas en un mismo circuito integrado. Existen circuitos integrados con dos o mas Iunciones; por ejemplo el microcontrolador 8051 de Intel contiene los siguientes bloques: ROM, RAM, puertos de entrada/salida programables bit a bit, temporizadores (Timers), circuitos de control de prioridad de interrupciones, puerto de comunicacion serie (UART). Otros microcontroladores de mayor potencia integran convertidores A/D con varios canales de entrada (80552). Se puede observar este tipo de estructura en la Fig 3.2 . En la practica los microcomputadores tienen una estructura mixta, tendiendo hacia la estructura ortogonal los sistemas mas complejos, con requerimientos de gran capacidad de memoria y/o accesos periIericos, y hacia una estructura mas empaquetada los sistemas para aplicaciones menos complejas; como ejemplo podemos citar el empleo de un automata programable en una determinada tarea de control industrial (Planta embotelladora), siendo el nucleo de la estructura interna de este sistema generalmente un microcontrolador. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 11 Fig.3. 2 En el desarrollo de distintas Iamilias de microprocesadores y circuitos de soporte compatibles, se ha seguido diIerentes tendencias, condicionando generalmente la estructura del ordenador. Entre estas tendencias, no todas incompatibles cabe destacar: Desarrollo de una CPU de Iorma que Iacilite la interconexion con circuitos estandar de memoria de entrada/salida (Intel 80XX6, Motrola M68XXX, Zilog Z-8000). Incorporacion del maximo numero de Iunciones en un circuito dando lugar a microcomputadores integrados (Intel MCS-51, MCS-96; Texas 9940; NEC mPD-17K; etc.). Posibilidad de una capacidad minima Iormando un microcomputador con pocos circuitos integrados (Rockwell PPS-8, Intel 8085). Estructura memoria-memoria con pocos registros internos, a Iin de potenciar Iunciones propias de la CPU y permitir un servicio eIiciente de interrupciones (Texas TMS 9900). Optimizacion para Iunciones de controlador especializado, mas que para Iormar un computador versatil de utilizacion general (Eairchild E-8, National SC/MP, ScientiIic Microsystem SMS 300). Particion de la ALU en "rebanadas" (bit-slice) para conseguir longitudes de palabra variables (AMD 2900, Intel 3002, Motorola 10800). INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 12 Posibilidad de microprogramacion para lograr un repertorio de instrucciones arbitrario (Texas TMSl000, General Instruments CP 1600, National IMP-l6, microprocesadores a rebanadas) Estructura de Ios buses NiveIes de comunicacin Las necesidades de comunicacion en un sistema micromputador aparecen a tres niveles distintos: 1) Comunicacion entre los elementos constituyentes de un circuito integrado. Este sistema de comunicacion constituye los buses internos, de estructura mas o menos distinta para cada CPU considerada. 2) Comunicacion entre los distintos subsistemas del microcomputador: unidad central de proceso, memoria y entrada/salida. El conjunto de las vias para este tipo de comunicacion Iorman los buses externos, en general de caracter sincrono. 3) Comunicacion con periIericos: esta comunicacion es a nivel de sistema de entrada/salida con periIerico. El conjunto de lineas de transmision Iorman los buses periIericos, en general de caracter asincrono. Tipos de buses La inIormacion desde o hacia la CPU y otros subsistemas puede ser de tres tipos: direcciones, datos y control; por lo que Iuncionalmente se encontraran tres tipos de buses en el microcomputador, aunque no esten Iisicamente siempre separados, ya que pueden estar multiplexados en el tiempo sobre lineas comunes. La interconexion de la CPU con el sistema de memoria y E/S se realiza mediante estos buses, tal y como se observa vemos en la Fig 4.1. BUS DE DIRECCIONES. son lineas de la CPU a memoria y sistema de entradas/salidas que sirven para enviar la direccion del elemento seleccionado para una transIerencia. Estas lineas, seran siempre gobernadas por la CPU, salvo en el caso de transIerencias por acceso directo a memoria (DMA). Pueden compartir total o parcialmente las lineas Iisicas con el bus de datos. BUS DE DATOS. son lineas bidireccionales (o dos buses unidireccionales independientes) para el envio de inIormacion (instrucciones y datos) entre subsistemas. Su anchura, en general, es la longitud de palabra del microprocesador. BUS DE CONTROL. son lineas de entrada o salida de la CPU de ordenes o de inIormacion de estado que permiten coordinar la operacion de todo el sistema El bus de control presenta variaciones notables de un microprocesador a otro. Existen dos tendencias en cuanto a su realizacion Iisica: Dar unas seales de control elementales, que pueden estar codiIicadas, y que deben ser interpretadas temporalmente respecto al estado en que se producen en cada ciclo de INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 13 maquina. Esta estructura se observa principalmente en microprocesadores de las primeras generaciones. Dar un conjunto de seales completo y demultiplexado, de Iorma que las memorias y periIericos responda a estas de una Iorma pasiva, por lo que no son precisos circuitos especializados para la decodiIicacion de las seales de control. Eig. 4. 1 Las distintas lineas del bus de control se pueden agrupar Iuncionalmente en varios tipos distintos, dependiendo de cada microprocesador en particular el que se disponga de unas y otras Iunciones, asi como la Iorma de realizarlas: Seales de sincronizacin de transferencias: gobiernan el intercambio de inIormacion entre subsistemas. Estas seales son las de validacion de lectura o escritura de memoria y E/S. En caso de que el microprocesador permita un Iuncionamiento asincrono de los buses, se dispondra de lineas de control (Ready, Wait,.) que permiten retrasar los ciclos de lectura y escritura en caso de que la memoria o periIericos tengan un tiempo de acceso superior al preciso para una transIerencia sincrona gobernada solo por la CPU. Seales de estado:. Salidas de la CPU que pueden signiIicar dos tipos de inIormacion: Estado del microprocesador: tipo de ciclo de maquina en curso, inicio de ciclo (sincronismo), estado del sistema de interrupciones, inicializacion... Estado de los buses: pueden indicar que los buses estan en estado de alta impedancia, si el bus de datos esta operando en modo de entrada o de salida, el tipo de inIormacion (direcciones o datos) presente en un bus multiplexado, etc. Seales de temporizacin: son las seales de reloj del sistema, de una o varias Iases. Seales de control de secuencia o modo de operacin. Son primitivas de control externo que originan: a) Inicializacion del sistema (Reset). b) Peticion de interrupciones. Peticion de ciclos de memoria para transIerencias por DMA. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 14 Paro del sistema (Halt). Otras seales particulares de cada sistema: algunos microprocesadores poseen seales especiales como las de reIresco de memoria dinamica (Z-80), lineas de control dedicadas a Iunciones especiIicas del sistema de E/S, (COSMAC), lineas de la CPU gestionables por soItware (8085 . CronoIoga en Ia estructura de buses En general, la estructura, respecto a si los buses son o no multiplexados, depende del microprocesador utilizado, aunque se observa una cierta evolucion desde los primeros microprocesadores comercializados. En los microprocesadores de la 1 generacin, la limitacion en el numero de patillas (pins) de los circuitos integrados impone un multiplexaje de direcciones, datos y seales de control sobre unas mismas vias de comunicacion, lo cual implica una gran complejidad en los sistemas externos a la CPU (registros, demultiplexores, decodiIicadores, temporizadores, etc.). En la 2 generacin y 3 generaciones se tiende a separar los buses por Iunciones, estableciendo lineas particulares para el bus de control aunque multiplexa datos y direcciones (8086), debido a la limitacion de encapsulados tipo DIP (Dual In Package), siendo el numero de patillas mas Irecuente de 40. En los microprocesadores mas modernos, al incorporar el empleo de encapsulados tipo PGA (Pin Grid Array), de hasta 168 patillas caso del 486DX; se tiende demultiplexar totalmente las seales de control de una Iorma que se simpliIique la interconexion con otros sistemas, y ademas se dispone de mas lineas de control y de interrupciones; de igual Iorma se demultiplexan datos y direcciones. Expansin de Ios buses Existe una tendencia hacia la normalizacion de los buses a Iin de potenciar la compatibilidad de diversos sistemas. Los intentos de normalizacion cubren dos sectores: BUSES EXTERNOS. Se pretende que se pueda construir un sistema microcomputador a partir de tarjetas de circuito impreso compatibles con un bus normalizado, (MUBUS, ISA, VESA,PCI, PCMCIA etc.). Para deIinir el bus de comunicacion se debera: a) DeIinir las seales de Iorma univoca en cuanto a la Iuncion a realizar. b) DeIinir las temporizaciones de Iorma absoluta (duracion de pulsos y niveles) y relativa (respecto a otras seales). c) Establecer la disposicion Iisica en el conector de cada una de las lineas. BUSES DE COMUNICACION CON PERIFRICOS. Para especiIicar estos buses se deberan deIinir en sus dos aspectos: N Hardware: lineas de transmision, Iuncion y disposicion. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 15 N Software: protocolos de comunicacion. Las directrices de normalizacion de estos buses cubren tres niveles distintos: Transmision en paralelo con periIericos cercanos al microcomputador. Transmision en serie con periIericos situados a una distancia mayor que justiIique el intento de reducir el numero de lineas. Union a redes de perifricos y/o redes de ordenadores. BIoque de memoria Tipos de memorias Todo sistema ordenador precisa de memoria para: Almacenar las instrucciones que Iorman el programa. Almacenar datos y resultados intermedios. La memoria esta organizada en palabras, cada una con una unica direccion. La longitud de palabra, en general, es la misma que la del microprocesador y bus de datos. Las memorias utilizadas en microcomputadores son, en general, de semiconductores y de acceso aleatorio, estas se Iabrican utilizando diversas tecnologias (TTL, STTL, MOS,VIOS, CMOS,...) con caracteristicas distintas en tiempos de acceso, posibilidades de integracion y consumo. MEMORIAS ROM: Las memorias de solo lectura (ROM) se utilizan en microcomputadores para almacenar programas, tablas y constantes. Existen tres tipos basicos de memorias ROM: ROM de mscara. son memorias programadas en el proceso de Iabricacion e inalterables posteriormente. Son las mas economicas en coste por bit pero solo para grandes cantidades, ya que el coste Iijo es elevado, por lo que son utilizadas en la produccion de grandes series. ROM programable (PROM): son memorias, que pueden ser programadas por el usuario pero no modiIicadas, ya que el proceso de programacion es irreversible. Son mas baratas que las memorias ROM de mascara para pequeas series. ROM reprogramables (EPROM, EAROM,EEPROM): son memorias que pueden ser grabadas y borradas o modiIicadas posteriormente. Las memorias EPROM son especialmente aptas para realizacion de prototipos y pequeas series. En la Eig. 5.1 se presenta en encapsulado de la memoria EPROM 27C64. MEMORIAS RAM: Las memorias de escritura y lectura (RAM) tienen como Iinalidad el almacenamiento de datos y resultados intermedios o tambien se utilizan como memoria de programa para zonas del mismo que deben ser modiIicadas. Las memorias RAM son volatiles, es decir, la inIormacion almacenada se pierde si Ialla la alimentacion del sistema. Existen dos tipos de memoria RAM de acceso aleatorio: INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 16 N RAM estticas. la inIormacion se almacena en un biestable, de Iorma que el contenido se mantiene mientras haya alimentacion. N RAM dinmicas. la inIormacion se mantiene en Iorma de carga en la capacidad puerta-sustrato de un transistor MOS. Esta carga se disipa con el tiempo (del orden de milisegundos) por lo que es necesario un reIresco periodico consistente en un ciclo de lectura/escritura en cada bit de memoria, realizado de Iorma paralela con todos los bits de columna a la vez. La principal desventaja de las memorias dinamicas es la necesidad de disponer de un circuito de reIresco externo. Las ventajas de la memoria dinamica es que permiten una mayor densidad de integracion (actualmente del orden de 64K bits Irente a 16K en las estaticas), al precisar menos transistores por celula elemental de memoria, por lo que son mas baratas que las RAM estaticas de la misma capacidad y consumen menos potencia. Estructura interna de una memoria El diseo de los circuitos integrados busca siempre una minimizacion de la superIicie de la oblea ocupada por cada chip. Es, por tanto, logico que el diseador trate de encontrar que disposicion topologica de los distintos elementos da lugar a una minima superIicie. Las pastillas de Iorma cuadrada o casi cuadrada tienen ventajas en este sentido y el diseador trata de encajar los elementos en dicho Iormato. En el caso de las memorias compuestas en su mayor parte por elementos identicos (las celulas de almacenamiento) la disposicion de todos ellos en una superIicie cuadrada sugiere una organizacion matricial por Iilas y columnas. Por otro lado, la organizacion matricial simpliIica el diseo y permite reducir el numero de cicuitos complementarios que realizan las Iunciones de escritura y lectura en cada una de las celulas. Pensemos en una memoria de 256 posiciones de 1 bit. La pastilla estaria organizada como 16 Iilas por 16 columnas, conteniendo cada posicion una celula de almacenamiento. Para direccionar cualquiera de estas celulas serian necesarios 8 terminales de direcciones, de los cuales 4 serian utilizados para seleccionar una Iila y los otros 4 para seleccionar una columna. La celula que se encontrase en la Iila y en la columna seleccionadas seria la que resultase leida o escrita. La estructura matricial de una memoria como esta se presenta en la Fig 5.2 en la que pueden verse los decodiIicadores de Iilas y columnas. Los terminales de direcciones A4 - A7 seleccionan una de las Iilas, activando todas las celulas que la componen. Los terminales A0 - A3 seleccionan una columna, activando el circuito de lectura/escritura correspondiente, de modo que el dato leido o escrito es el que se encuentra en la celula interseccion entre Iila y columna activadas. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 17 Fig. 5. 2 En esta ocasion han de leerse simultaneamente 8 celulas que estan situadas en la misma Iila pero no consecutivas. La representacion de la seleccion de columnas mediante multiplexores es solo ilustrativa. La matriz de memoria es de 128 Iilas por 128 columnas. Las columnas estan agrupadas en grupos de 16 de las cuales el multiplexor selecciona una. Puesto que hay 8 multiplexores y todos ellos estan gobernados por los mismos 4 bits procedentes del conjunto de las direcciones, se accede a las 16.384 celulas de ocho en ocho. Por ejemplo si la direccion es 00H queda activada la Iila 0 y las columnas 0, 16, 32, 48, 64, 80, 96 y 112. Estas ocho celulas componen la posicion 00H de esta memoria. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 18 Por ultimo vamos a describir el diagrama suministrado por el Iabricante de una memoria RAM de 256 x 4 cuyas 1024 celulas estan dispuestas en una matriz de 32 Iilas por 32 columnas tal y como se observa en la Fig. 5.4. En el bloque "circuitos de E/S de columna" existiran 32 elementos, cada uno de ellos encargado de leer o escribir en una columna. Las columnas se activan de 3 en 3 mediante un mecanismo similar a los multiplexores de la Iigura 5.3. Fig 5.4 Tiempos de Iectura y escritura Para la utilizacion de una memoria en un circuito es de trascendental importancia la observacion de las secuencias y tiempos relacionados con las mismas que especiIica el Iabricante. DesaIortunadamente existe gran conIusion sobre la Iorma de Iuncionamiento de diIerentes pastillas de memoria que viene agravada por el hecho de que los Iabricantes no han llegado a un lenguaje comun que Iacilite la interpretacion de sus especiIicaciones. Por todo ello va a resultar aqui imposible exponer el detalle de los diagramas de tiempos que pueden encontrarse en las hojas de caracteristicas de memorias y cuya consulta es im- prescindible para poder interpretar en su sentido correcto cuestiones tan importantes como son la secuencia en que deben aplicarse las seales (datos, direcciones, seleccion de chip, lectura/escritura, etc.) y las relaciones temporales que deben mantenerse entre ellas. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 19 Pese a todo, vamos a intentar mostrar los conceptos primarios que pueden servir para un conocimiento mas completo del Iuncionamiento de las pastillas de memoria. Lo que se expone a continuacion es valido tanto para memorias RAM (exceptuando las dinamicas), EEPROM y R0M, entendiendo que en estas ultimas el proceso de escritura no es aplicable. En las memorias EPROM el ciclo de escritura se denomina ciclo de programacion, el cual debe de realizarse mediante un programador de memorias. Caracterizacin de las memorias de lectura: Debido a los diIerentes retardos que se producen en los circuitos que intervienen en el proceso, la lectura de una memoria no es instantanea, es decir que media un cierto tiempo desde el momento en que se da la orden de leer una posicion determinada y los datos aparecen en los terminales de salida. Debemos recordar que para eIectuar un proceso de lectura hemos de realizar las siguientes acciones: Establecer la direccion de la posicion que se desea leer en sus entradas de direcciones. Activar la pastilla globalmente mediante la entrada de seleccion de pastilla chip enable (CE`). Asegurarse de que la entrada de seleccion lectura (OE`) esta al nivel activo (generalmente "0") El orden en que estas operaciones deben realizarse puede ser importante en algunos casos y ser diIerente al de esta exposicion. Solo las hojas de caracteristicas pueden inIormarnos de las secuencias correctas y de los intervalos de tiempos maximos y minimos que se permiten entre ellas. Pasando por alto este detalle y suponiendo que estas tres condiciones se cumplen en un cierto instante t0 el tiempo que transcurre hasta que los datos leidos en las celulas direccionadas aparezcan en los terminales de salida, instante t1 es el llamado "tiempo de acceso" TACC. Una vez obtenido el dato deseado, se pueden alterar las condiciones de los terminales de la pastilla, bien para eIectuar una lectura de otra posicion, una escritura o, simplemente para dejarla inactiva. Las relaciones de tiempos a que deben estar sujetas estas seales despues de realizada la lectura tambien estan impuestas por las especiIicaciones del Iabricante. El tiempo total utilizado para establecer las seales adecuadas en las entradas, obtener el dato y desactivar las seales, dejando a la pastilla preparada para una nueva operacion de lectura o escritura es el llamado "tiempo de ciclo de lectura". De todos los tiempos que componen el tiempo de ciclo de lectura, el mas importante es sin duda el tiempo de acceso, por lo que en la mayoria de los casos no es disparatado decir: TIEMPO DE CICLO DE LECTURA TIEMPO DE ACCESO Caracterizacin de las memorias de escritur a: El proceso de escritura de una posicion de memoria esta sujeto a temporizaciones similares a las descritas para la lectura. Las acciones a eIectuar son las siguientes: N Establecer la direccion de la posicion en que se desea escribir el dato. N Activar la pastilla globalmente mediante la entrada de seleccion de pastilla (CE`). N Establecer el dato que se desea escribir en las entradas de datos. N Poner la entrada de seleccion escritura (WE`) al nivel adecuado (generalmente '0). INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 20 N Todas estas operaciones han de realizarse en el orden especiIicado por el Iabricante, guardando entre ellas los intervalos tambien especiIicados. Una vez transcurrido el tiempo necesario, se procede a retornar la linea WE` a su nivel de reposo (WE` 1). Este instante es el que se suele tomar como reIerencia para la escritura del dato deseado en la posicion direccionada De todas las deIiniciones de los tiempos involucrados en el proceso de escritura, destacaremos las siguientes: tWPL TIEMPO DEL IMPULSO DE ESCRITURA Tiempo minimo durante el cual la entrada WE` debe mantenerse a 0. tDV TIEMPO DE ESCRITURA Tiempo minimo anterior al instante de reIerencia (paso de 0 a 1 de la entrada WE`) durante el cual el dato a escribir debe permanecer estable. tDH TIEMPO DE MANTENIMIENTO Tiempo minimo posterior al instante de reIerencia durante el cual el dato a escribir debe permanecer estable. Ademas de estos tiempos, tambien conviene especiIicar: tAS TIEMPO DE ESTABLECIMIENTO DE LA DIRECCION Tiempo minimo que debe mediar desde que se establece la direccion deseada y se habilita la pastilla, hasta que la linea WE` puede ponerse a nivel activo ('0) para escritura. Alguno de estos tiempos, en algunas pastillas, puede ser nulo. El tiempo total que dura el proceso de escritura sera el llamado tWC TIEMPO DE CICLO DE ESCRITURA, cuyo valor minimo especiIicara el Iabricante. Es normal que el tiempo de ciclo de lectura sea aproximadamente igual al tiempo de ciclo de escritura, denominandose este valor comun "tiempo de ciclo de memoria. La inversa de este tiempo representara, por tanto, la maxima Irecuencia con que la memoria puede ser accedida, bien para lectura, bien para escritura. . La memoria EEPROM especiIicada 28C64 incorpora una linea que permite consultar el estado listo / ocupado (RDY/BUSY`), en cuanto al ciclo de escritura. Se tarta de una salida en drenador abierto permitiendo cablearla con una resistencia de Pull-up al resto de lineas RDY/BUSY` de otros dispositivos de memoria, con objeto de poder ser consultadas por el mP. Interconexin deI sistema de memoria Estructuras de conexionado Existen dos tipos de estructuras conceptualmente distintos a la Iorma de considerar la memoria en un microprocesador. ESTRUCTURA HARVARD: Cuando la memoria de programa (pasiva o solo lectura) recibe un tratamiento distinto de la memoria de datos (activa o de lectura/escritura). Las diIerencias pueden consistir en el modo de direccionamiento de Iorma que las lineas de control (o alguna de ellas) que activen cada subsistema (ROM, RAM) no son comunes, INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 21 pudiendose llegar a una total diIerenciacion de los buses de comunicacion, lo que permitira un cierto solapamiento entre los ciclos de busqueda y ejecucion de las instrucciones. Fig. 5. 9 ESTRUCTURA VON NEWMAN O PRINCETON: Cuando el tratamiento de memoria es unico, sin distincion entre datos e instrucciones. Este sistema es el mas sencillo y el mas Ilexible, aunque el rendimiento en cuanto a rapidez de ejecucion es inIerior a la estructura Harvard. Fig. 5. 10 Al interconectar la CPU con el sistema de memoria se deberan considerar tres tipos de inIormacion: N DIRECCIOAES. sirven para seleccionar una posicion de memoria determinada, y deberan mantenerse estables durante todo el ciclo de memoria (en lectura o escritura). N DA1OS. son las lineas que Iorman el bus de datos y a traves de ellas se realiza la transIerencia de inIormacion. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 22 N COA1ROL. son las seales que activan y sincronizan la transIerencia. Las seales de control a considerar, en general, son: 4 Lneas de seleccin: se obtienen a partir de la decodiIicacion de las lineas de direcciones mas signiIicativas, no utilizadas para el direccionamiento interno de cada circuito integrado. La seleccion se puede dar a dos niveles: S Seleccion de modulos de memoria S Seleccion de circuitos de memoria dentro de cada modulo. 4 Lneas de validacin de transferenci a: son seales de activacion de la lectura o escritura. Indican cuando al microprocesador entran los datos (lectura) o que los datos enviados por la CPU son validos (escritura). 4 Lneas de Sincronizacin: algunos mP incorporan alguna linea (READY) que permite alargar el ciclo RD/WR a peticion de la memoria u otro dispositivo periIerico seleccionado, pudiendose de esta Iorma acomodar el tiempo de acceso al ciclo maquina. Estrategias de decodificacin De esta Iorma, una primera condicion que debe cumplir la conexion de la memoria a un sistema mP es la de prever las lineas necesarias para poder seleccionar cualquier posicion de memoria. Si todas las unidades de memoria disponibles en el mercado tuvieran una capacidad de 64 Kbytes (numero maximo de posiciones de memoria que puede direccionarse con un microprocesador de 8 bits), esta condicion estaria resuelta sin mas que conectar las dieciseis lineas del bus de direcciones a las dieciseis lineas de direccion de memoria y por tanto cada direccion que apareceria en el bus seleccionaria una de las 64 K posiciones de la memoria. En realidad esto no es asi, y los diIerentes tipos de memoria poseen distintos tipos de estructura y capacidad. Por ejemplo, existen memorias de 4 K x 1 bit o1 K x 8 bits, etc. Esta gran variedad de memorias presenta dos problemas en cuanto a su conexion: Hay que determinar cual de las dieciseis lineas del bus de direcciones hay que utilizar. Si se requieren varias unidades de memoria, disear un sistema que seleccione en que unidad se encuentra la inIormacion. El primer problema tiene Iacil solucion, puesto que todas las memorias disponen de unas entradas de direccion en Iuncion de su capacidad de almacenamiento. Asi pues, una memoria de 1 K 1024 posiciones de memoria dispone de 10 entradas de direccion (A0- A9), puesto que 2 10 1024 y estas seran las que se conectaran a sus respectivas lineas del bus de direcciones. Esta situacion es la que se ilustra en la Fig. 5.11. Ademas de las entradas de direccion, las memorias disponen de una o mas entradas de seleccion del dispositivo (entradas CS o chip select) que se utilizan para seleccionar la unidad deseada cuando en el bus de direcciones aparece la direccion de una de las posiciones de esta unidad. En el segundo caso, la solucion no es tan sencilla, ya que para cada direccion hay que seleccionar la unidad a la que pertenece. Consideremos la situacion planteada en la Fig. 5.12 en la que deben conectarse dos unidades de memoria de 1 K x 8. Como las dos unidades tienen conectadas sus lineas de direccion A0-A9 al bus, cuando una de las 1024 posiciones aparezcan en el bus de INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 23 direcciones, el dato seleccionado aparecera en el bus de datos de ambas memorias, produciendose un eIecto llamado "cruce de bus, debido a que se han seleccionado dos unidades de memoria a la vez y a que las salidas de datos estan unidas entre si. Para solucionar esto hay que utilizar las lineas CS para seleccionar una sola unidad a la vez mientras que las salidas de datos de las demas quedan en estado de alta impedancia no oIreciendo ninguna carga al bus. Todas estas consideraciones planteadas desembocan en lo que llamamos "estrategias de decodificacin`, es decir metodos que Iacilitan la seleccion de la unidad de memoria deseada. Fig. 5.11 ig. 5. 12 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 24 Decodificacin parciaI Este es un metodo muy sencillo y por consiguiente con un coste muy bajo, que permite realizar la seleccion de una unidad de memoria sin que las demas queden aIectadas. La Fig 5.13 ilustra el mismo ejemplo anterior, pero con el problema de la seleccion solucionado. Consiste en conectar la entrada CS a la linea de direccion A15 pero intercalando en una de las unidades un inversor. De esta manera la memoria 1 se seleccionara cuando A15 0 y la memoria 2 cuando A15 1, siendo imposible que en cualquier caso las dos memorias se seleccionen a la vez. Evidentemente, este tipo de decodiIicacion presenta un problema: existen muchas combinaciones que seleccionan cualquiera de las dos memorias. Asi, por ejemplo, la direccion 8000 H en la que A15 1 selecciona la memoria 2, asi como tambien la direccion A000 H. Y la direccion 0800 H selecciona la memoria 1 como tambien la direccion 0000H. Fig. 5. 13 Si construimos una tabla en la que esten representadas todas las posibles direcciones desde la 0000 H hasta la EEEE H, veremos que siempre hay alguna de las dos memorias seleccionadas. Para que esta decodiIicacion Iuncione en un sistema, deberiamos asignar a la memoria 1 una zona comprendida entre la 0000 H y la 7EEE H y a la memoria 2 una zona comprendida entre la 8000 H y la EEEE H. El ejemplo anterior es, evidentemente, muy sencillo y no reIleja la realidad de muchos de los sistemas que existen actualmente. Por ello, en la Fig 5.14 se presenta un circuito que utiliza el metodo de la decodiIicacion parcial en el que se han conectado cuatro unidades de memoria RAM MC6810 de 128x8 y una memoria EPROM del tipo TMS2716 de 2K x 8. Las memorias RAM, al tener una capacidad de 128 bytes, necesitan para su direccionamiento siete lineas del bus de direcciones. Con esto liemos solucionado el direccionamiento de las 128 posiciones de memoria. Ahora hemos de solucionar el problema de la seleccion de cada unidad para que solo lo haga una de ellas. Para ello utilizamos las entradas CS que en el caso de este tipo de memoria es de cuatro. Asignamos entonces un espacio de memoria a cada una de ellas de manera que sean consecutivas, es decir, a la primera le asignamos la zona 0000-007E H, a la segunda de la 0080-00EE H y asi sucesivamente, tal como muestra la tabla representada en la misma Iigura. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 25 Fig. 5. 14 Cada zona comprende 128 posiciones de memoria que es la capacidad de cada una de las unidades. Para seleccionar la primera memoria conectamos las entradas CS a las lineas de direccion A7, A8, A9 y A15, puesto que los bits correspondientes a estas lineas siempre se mantienen a cero sea cual sea la posicion de memoria seleccionada dentro de la gama 0000-007E. Para la segunda memoria conectamos las entradas CS directamente a las lineas A8, A9, A15 y la linea A7 con un inversor, puesto que este bit siempre esta a uno dentro de su gama de actuacion. En las otras dos memorias RAM se conectan inversores en las lineas A8 para la RAM-3 y en la A7 y A8 para la RAM-4. La tabla de la Fig. 5.14 muestra claramente toda esta disposicion. Para la memoria EPROM, el procedimiento es analogo. Se ha asignado a esta la zona E800- EEEE; es decir, 2 K bytes. Utiliza como lineas de direccion de la A0-Al0 y dispone de una sola entrada CS. En este caso y para diIerenciarla del resto de unidades conectamos la linea A15 a traves de un inversor a la entrada CS. De este modo, solo cuando esta linea este a uno, seleccionara la memoria EPROM, es decir siempre que en el bus aparezca una direccion comprendida entre E800 y la EEEE. Las lineas Al l-A14 no se utilizan para seleccion y por consiguiente no se conectan a ninguna unidad. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 26 Como ya se ha dicho anteriormente, el metodo de decodiIicacion parcial es sencillo y economico (en el ejemplo anterior se han utilizado solamente cinco inversores) pero tiene el inconveniente de que al no utilizar todas las lineas de direccion, hace diIicil la Iutura expansion del sistema y tiene poca Ilexibilidad cuando se quieren realizar modiIicaciones. Decodificacin totaI Se dice que un sistema microprocesador emplea el metodo de la decodiIicacion total, cuando todas sus lineas de direccion A0-A15 se utilizan para acceder a cada posicion de memoria y que cada una de ellas solo responde a una sola direccion. Evidentemente, este metodo es mucho mas eIiciente porque prevee todas las posibilidades Iuturas de expansion, pero resulta algo mas complejo y costoso ya que requiere circuitos especializados. Existen varias estrategias empleadas en el metodo de la decodiIicacion total y se pueden dividir en cuatro grupos, segun el tipo de componentes empleados: Lgica aleatoria (puertas AND, NAND, OR, NOR e inversores) Decodificadores Redes lgicas programables (PAL). Se describiran cada uno de estos metodos haciendo las consideraciones pertinentes en cada caso. Lgica aIeatoria La decodiIicacion se realiza utilizando un numero determinado de puertas logicas que conectadas convenientemente implementan la Iuncion deseada. Si deseamos realizar la decodiIicacion para una memoria que actue en la zona A000-A3EEH utilizaremos las lineas A0-A9 para direccionamiento y las Al0-A15 para activar la entrada CS. El circuito empleado para realizar esta decodiIicacion esta representado en la Fig. 5.15 y responde a la ecuacion logica CS`(Al5` * A14 * Al3` * Al2 * A11 * A10)` utilizandose para ello dos inversores y una puerta de seis entradas. Cuando el numero de memorias es mayor, la cantidad de puertas necesarias hace que el metodo resulte costoso y poco Ilexible. ig. 5. 15 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 27 La utilizacion de decodiIicadores de M entradas y N salidas donde N 2 M, resuelve en gran parte el problema de la decodiIicacion total de una manera mucho mas sencilla. Los mas empleados son el 74L5 154, decodiIicador de cuatro lineas a dieciseis, el 74L5138, decodiIicador de tres a ocho lineas y el 74L5139, doble decodiIicador de dos a cuatro lineas, los cuales ademas de tener entradas de habilitacion que aumentan la versatilidad, todas sus salidas son activas a nivel bajo, es decir, la salida seleccionada queda a nivel cero. La Eig. 5.16 muestra un ejemplo de como realizar la decodiIicacion total, empleando decodiIicadores, en un sistema en el que se desean conectar seis memorias RAM MC6810 de 128 x 8 y cuatro memorias EPROM de 1K x 8 TM52708. La tabla de la misma Iigura muestra las direcciones asignadas a cada memoria asi como el estado de los bits utilizados para decodiIicacion. En este ejemplo se ha utilizado un decodiIicador 74L5154 para seleccionar todas las unidades de memoria RAM, utilizando las cuatro lineas de direccion de mayor peso A12- A15. Cuando todas estas lineas estan a nivel bajo, seleccionan la salida Q15 que se utiliza como seal de habilitacion de un segundo decodiIicador 74L5139 que, a traves de las lineas de direccion Al0-Al 1 realizan la seleccion de las cuatro memorias EPROM conectadas al bus. Como puede verse, el empleo de decodiIicadores Iacilita en gran parte y con relativamente pocos componentes (dos decodiIicadores y cuatro inversores), la solucion al problema de la decodiIicacion total. Ademas, la adicion de nuevas unidades de memoria al sistema no oIrece ninguna diIicultad, puesto que en el decodiIicador 74L5154 quedan aun trece lineas direccionables por A12-A15 que pueden ser utilizadas para este Iin. Por otra parte son muchas las combinaciones a realizar con un decodiIicador sin mas que cambiar las lineas de direccion conectadas a el o bien combinando dos o mas decodiIicadores, con lo que podemos dividir el espacio de memoria en tantas partes como deseemos. La Fig 5.17 presenta un ejemplo de como utilizar una combinacion de dos decodiIicadores 74L5138 para obtener particiones de 32 bits. Fig. 5. 17 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 28 Decodificacin con redes Igicas programabIes (PAL) Los dispositivos PAL pueden considerarse como un conjunto de puertas AND-OR dispuestas convenientemente Iormando matrices producto y suma de manera que puedan utilizarse los diagramas de Karnaugh para la implementacion de Iunciones logicas. Para explicarlo de una manera sencilla, una PAL es un dispositivo logico Iormado por multitud de puertas logicas interconectadas de manera conveniente. Ahora bien, las PAL disponen de una caracteristica importante que modiIica esta idea: la posibilidad de rogramacion de las interconexiones entre las puertas. Una disposicion de conexion Iija solo podria dar lugar a una unica Iuncion de salida y por tanto no tendria ninguna aplicacion practica a menos que esta Iuera la Iuncion deseada. La posibilidad de programar ciertas interconexiones proporciona la generacion de multitud de Iunciones logicas de salida y por tanto la Iacultad de obtener las ecuaciones para la decodiIicacion de las memorias. En la Fig 5.18 se muestra una disposicion tipica de una PAL en la que las intersecciones pueden ser programadas y estan Iormadas por Iusibles al igual que en las memorias PROM. La Iusion de este implica la apertura de la conexion y viceversa. Aunque en la representacion mas general, cada puerta AND solo dispone de una sola entrada, en realidad cada una de ellas tiene 2 N entradas siendo N el numero de entradas de la PAL. Al igual que las memorias PROM, una vez programada la PAL no es posible volver a modiIicar su contenido, es decir, variar la Iuncion logica de salida. No obstante, existen en el mercado un tipo de PAL que, al igual que las memorias EPROM, disponen de una ventana para su borrado y posterior programacion. Tambien existen tipos de PAL reprogramables electricamente o GAL. Para la implementacion de Iunciones logicas mediante dispositivos PAL es necesario disponer las sumas de productos. Si la Iuncion a generar es compleja, hay que recurrir a los sistemas de simpliIicacion como por ejemplo los diagramas de Karnaugh. La utilizacion de una PAL como decodiIicador de direcciones en un sistema microprocesador no requiere, por lo general, Iunciones demasiado complejas y sus ecuaciones pueden obtenerse directamente a traves de la tabla de direcciones. Fig. 5. 18 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 29 A eIectos de notacion, se representa con un circulo las uniones programables que deben dejarse intactas. Las entradas de la PAL se toman de las lineas de direccion mas una seal de control que indica la validez de los estados Las Iunciones obtenidas realizan la decodiIicacion para las dos memorias EPROM cuyas direcciones estan comprendidas entre la 8000H y la EEEEH, y dos memorias RAM con direcciones comprendidas entre la 4000H y la 4EEEH. A continuacion se describen las ecuaciones simpliIicadas: EPROM1` A15 * A14 EPROM2`A15 * A14` RAM1A15` A14 A13` A12` A11 RAM2 A15` A14 A13` A12` A11` La unidad centraI de proceso (CPU) La unidad central de proceso (CPU) es el sistema principal de un microcomputador, ya que es el elemento capaz de interpretar las instrucciones y coordinar su ejecucion. La CPU esta constituida por tres subsistemas Iuncionales: N UNIDAD ARITMTICA Y LOGICA (ALU): es el elemento calculador del sistema, capaz de realizar operaciones logicas (AND, OR, X0R...) y aritmeticas (suma, resta...). N UNIDAD DE TIEMPO Y CONTROL (UTC). es el elemento controlador del Ilujo de inIormacion (instrucciones y datos) en el sistema. Las Iunciones de la unidad de control son: a) busqueda de instrucciones en memoria (Fetch). b) decodiIicacion, interpretacion y ejecucion de las instrucciones; c) control de la secuencia de ejecucion; d) reconocimiento de primitivas externas de control: interrupciones, peticion de acceso directo a memoria, ordenes de paro, espera, inicializacion, etc. N REGISTROS. Empleados para guardar temporalmente inIormacion con la cual va a operar la ALU, o registros punteros para direccionar en memoria, contador de programa, puntero del stack o pila. Estos tres subsistemas estan total o parcialmente integrados en un circuito LS1, el que se denomina microprocesador. Operaciones y funciones eIementaIes de Ia CPU El microprocesador o CPU es, por supuesto, el componente central de cualquier sistema con microprocesador. Controla las Iunciones realizadas por otros dispositivos del sistema y proporciona al mismo su capacidad aritmetica y logica. El microprocesador busca instrucciones de la memoria, las decodiIica y las ejecuta. ReIerencia memoria y dispositivos E/S en busca de datos y responde a seales de control procedentes de dispositivos externos. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 30 Las seales de control generadas por dispositivos externos pueden hacer que el microprocesador tome algunas de las siguientes acciones: N Reset, provoca que la ejecucion del programa comience desde alguna posicion inicial. N Esperar una cantidad de tiempo suIiciente para acceder a una determinada posicion de memoria. N Interrumpir la ejecucion del programa en curso y biIurcar a una posicion de memoria donde empieza una subrutina que da servicio al dispositivo externo causante de la interrupcion. N Suspender su operacion y poner sus patas de direcciones y datos en Ilotacion, permitiendo que otros dispositivos lean o escriban directamente en memoria. La unidad de tiempo y controI. EI controIador interno La Unidad de Tiempo y Control UTC o controlador interno es el circuito que gobierna y coordina todas las operaciones que tienen lugar dentro de la CPU es la UTC. Se trata de un circuito eminentemente secuencial que genera las micro ordenes que reciben los elementos operativos (ALU y registros). Ordenes tales como que un registro acepte un dato o lo entregue al bus, que un registro se incremente, decremente o desplace, que la ALU ejecute una Iuncion determinada de su repertorio, todas ellas proceden del controlador interno. Para que el controlador interno pueda desempear su Iuncion debe recibir dos inIormaciones de distinta procedencia: N La INSTRUCCION, procedente del exterior de la CPU N El ESTADO, procedente del interior de la CPU Todo ello puede representarse graIicamente del modo indicado en la Fig 6.2. La instruccion es una combinacion de bits cuyo valor representa un determinado codigo de operacion, el cual debe realizar la CPU. La UTC decodiIica o interpreta el signiIicado de la instruccion y la descompone en micro ordenes u operaciones elementales sobre la ALU y los diIerentes registros internos de la CPU. Fig. 6. 2 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 31 Por otro lado, la accion de la UTC esta condicionada por la historia anterior de la CPU presente en la palabra de estado o PSW. Por esta entrada llegan al controlador inIormaciones tales como que en un registro hay un valor positivo o negativo o nulo, se ha producido desbordamiento en una operacion de la ALU, etc.. En Iuncion de esta inIormacion la UTC puede generar microordenes diIerentes para una misma instruccion. La UTC es un circuito sincrono, es decir que todos sus cambios de estado estan acompasados al ritmo de una seal de reloj que la cual puede ser interna externa a la CPU y que se utiliza para sincronizar el Iuncionamiento de todo el sistema. Las microordenes o seales de salida de la UTC bien podrian ser del tipo que muestra la Fig. 6.3. Fig. 6. 3 Cada salida de la UTC genera una microorden especiIica destinada a actuar sobre un elemento de la CPU. Por ejemplo, una de estas seales da lugar a que un dato se escriba en un registro determinado, otra seal activa la salida de un registro cuyo contenido pasa al bus interno, otras indican a la ALU que debe realizar una suma, etc.. Logicamente el Iabricante de la pastilla busca la Iorma de realizar la UTC de la manera mas eIicaz y que ocupe menos superIicie. Es Irecuente que se utilicen para ello circuitos basados en PLA (Programmable Logic Array) o incluso en ROM. Algunos microprocesadores permiten que el usuario deIina el comportamiento que desee que tenga el controlador ante un codigo de instruccion dado, es decir, permiten programar el propio controlador Estos microprocesadores se denominan microprogramables. Se denomina microprogramacion a la tecnica que permite deIinir el comportamiento del controlador. Volviendo a la Fig. 6.1. vamos a describir cada uno de los elementos internos que existen en la CPU. Nos ocuparemos Iundamentalmente de aquellos elementos basicos que, con algunas diIerencias, existen en todos los microprocesadores. La unidad aritmtico Igica (ALU) Es un circuito combinacional, capaz de realizar ciertas operaciones de tipo logico o de tipo aritmetico entre dos operandos, generando un resultado que se deposita en un registro llamado acumulador, tal y como ilustra la Fig. 6.4. Para ello es preciso que cada uno de los INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 32 operandos este situado en la entrada correspondiente de la ALU. Estas variables de entrada determinaran la salida de la ALU de acuerdo con las tablas de verdad a las que responde. Las entradas de control que deben considerarse tambien como entradas al circuito combinacional ALU a la hora de deIinir las tablas de verdad, permiten seleccionar el tipo de operacion que se va a realizar. Por ejemplo, 3 lineas de control permiten deIinir 8 operaciones diIerentes que podrian ser: AND, OB, EXOR, NOT, NAND, NOR, SUMA BINARIA y RESTA BINARIA. Estas serian las operaciones que es capaz de realizar la ALU. Fig. 6. 4 El acumulador es un registro de carga paralelo, lectura paralelo que recoge el resultado de la operacion de la ALU. Su orden de carga (ENABLE) procedera del controlador interno y debera llegar despues de que los operandos han sido cargados en sus registros respectivos con el suIiciente retraso como para que la salida de la ALU haya alcanzado su valor estable. En la Fig 6.5.a) vemos que se utilizan tres registros en torno a la ALU: Dos registros de operando y un acumulador. No obstante, la mayoria de los Iabricantes optan por suprimir uno de los registros de operando sustituyendolo por el propio acumulador. De esta Iorma el acumulador cumple dos misiones: Antes de la operacin: almacena un operando Despus de la operacin: almacena el resultado Esto es posible debido al retardo de la ALU, incapaz de generar instantaneamente el resultado. De este modo se tiene la ventaja de eliminar un registro (superIicie del chip) a costa de que uno de los operandos se destruye en la operacion. La estructura resultante modiIicacion es la que se muestra en la Fig. 6.5 b). INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 33 a) b) Fig. 6. 5 EL acumuIador y registros auxiIiares La CPU hace uso de un grupo de registros que pueden ser utilizados durante la ejecucion del programa. Sirven para almacenar temporalmente datos y resultados intermedios, tal y como se observaba al describir la ALU. Este tipo de registros puede ser considerado como posiciones de memoria entro de la CPU. Esta caracteristica hace que el tiempo de acceso a estos registros sea muy rapido. Los registros auxiliares pueden utilizarse, entre otras, para las siguientes Iunciones: Almacenamiento de datos temporales sin tener que acudir a la memoria exterior Eacilitar la generacion de direcciones de memoria Los microcontroladores mC) monochip disponen, dentro del integrado, de memoria de datos y/o de programa. Todas estas posiciones pueden ser consideradas como "registros auxiliares. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 34 Estos registro se denominan en cada CPU que reciben son B, C, D, H, L, R0, R1, R2, R3, ETC. La Fig. 6.6 a) ilustra un registro generico de lectura paralelo escritura paralelo, las Iiguras b) y c) son representaciones del mismo de Iorma simpliIicada. Fig. 6. 6 EL ACUMULADOR El acumulador (A o ACC) es un registro de proposito general , que recibe un trato privilegiado ya que en combinacion con la ALU actua de la Iorma descrita anteriormente, que corresponde a la propia de un registro de carga paralelo/lectura paralelo. Pero ademas, bien podria encargarse por si mismo de eIectuar a1gunas operaciones, como se ilustra en la Eig. 6.7. a), tales como DESPLAZAMIENTOS (b) y ROTACIONES (c) a izquierda o derecha asi como INCREMENTOS y DECREMENTOS del dato que contiene, Eacilmente podriamos sintetizar con biestables un circuito secuencial que tuviese este comportamiento. Fig. 6. 7de una Iorma, algunos nombres Registros de propsito especfico El control de la CPU exige disponer de unos registros asociados de proposito especiIico, ademas de la UTC. Estos registros son: N Contador de programa (PC). N Registro de direcciones temporal . INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 35 N Registro de instrucciones (RI). N Registro o palabra de estado (PSW). N Puntero de Pila o Stack pointer (SP). Fig. 6.7 EL CONTADOR DE PROGRAMA Y CIRCUITO DE SALIDA DE DIRECCIONES La CPU es el elemento que se encarga de direccionar la memoria que contiene tanto el propio programa como datos de cualquier tipo Para ello debe disponer de un conjunto de terminales de salida que se conectaran al bus de direcciones del subsistema de memoria. El numero de terminales que constituyen la salida de direcciones puede ser cualquiera y sera el determinante de la maxima dimension de la memoria que CAPACIDAD DE DIRECCIONAMIENTO 2 N LINEAS DE DIRECCION Es Irecuente en microprocesadores de 8 bits que el numero de terminales de direcciones sea de 16 si bien aumentar en los microprocesadores mas modernos. Con 16 terminales de direcciones A(0-15) es posible direccionar hasta 65.535 posiciones de memoria y, con el objeto de acogernos a un caso concreto, supondremos que mientras no se indique lo contrario, la CPU que se esta presentando dispone precisamente de estos 16 terminales. A una combinacion cualquiera de valores binarios de estos terminales la denominaremos genericamente "direccion". Las direcciones que impone en su salida la mente de dos tipos: N Direccion para acceder a una posicion de memoria en la que se va a encontrar una instruccion a eiecutar. N Direccion para acceder a una posicion de memoria en la que se va a leer o a escribir un dato. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 36 Cuando la CPU se dirige a memoria para encontrar instrucciones del programa que esta ejecutando suele hacerlo a posiciones consecutivas, precisamente a la zona que llamamos memoria de programa. En este caso, el elemento interno de la CPU que se encarga de presentar su contenido en los terminales de direcciones es el llamado contador de programa. El contador de programa sera, por tanto, un contador ascendente-descendente, circuito secuencial ya conocido el cual se observa en la Eig.6.8. Su numero de bits estara en consonancia con el numero de terminales de direccion existentes. Fig. 6. 8 Pero el programa no siempre se ejecuta de Iorma estrictamente consecutiva, sino que pueden producirse saltos o rupturas de secuencia que el contador de programa debe ser capaz de manejar. Para ello debe disponer de entradas de carga paralelo que permitan que su contenido pueda ser alterado bruscamente. Cuando la CPU eIectua un direccionamiento a memoria para leer o escribir un dato, la direccion a la que accede no tiene ninguna relacion con el contador de programa y, por tanto, debe de existir algun camino para que la direccion aparezca en los terminales de salida correspondientes. Todas estas posibilidades estan representadas a modo de bloques en la Fig 6.9. En ella podemos ver que la direccion que en cada momento esta presente en los terminales de direcciones procede de un registro "registro de salida de direcciones". La inIormacion presente en este registro puede proceder bien del contador de programa y otros registros de la CPU a traves del bus interno. Por otro lado el contador de programa tambien puede alterar su contenido directamente por medio de sus entradas de carga paralelo. Como hemos dicho, el microprocesador que estamos considerando trabaja con datos de 8 bits y dispone de 16 bits de direcciones. Queda, por tanto, explicar de que Iorma es posible que los registros asociados a la salida de direcciones puedan cargarse con inIormacion de solo 8 bits, que es la que puede transportar el bus interno. La solucion no es otra que la descomposicion de una direccion (palabra de 16 bits) en dos palabras de 8 bits que son transmitidas en un orden preestablecido. Por esta razon, en la Fig 6.9 los registros de 16 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 37 bits aparecen divididos en dos mitades con entradas independientes conectadas al bus interno. La UTC o controlador interno de la CPU se encarga de coordinar estas operaciones sin que su detalle sea necesario para la utilizacion del mP. Fig. 6. 9 EL REGISTRO DE INSTRUCCIONES La CPU es capaz de ejecutar un numero Iinito de acciones que le vienen sealadas desde el exterior mediante una inIormacion binaria que se denomina "Instruccin". fig. 6. 10 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 38 Una instruccion es una palabra, combinacion binaria de unos y ceros que indica a la CPU el tipo de operacion que debe realizar a continuacion. Como ya se ha comentado la UTC interpretara el codigo de operacion desencadenando las acciones necesarias sobre los diIerentes elementos internos de la CPU. Las instrucciones escritas en la secuencia adecuada han sido depositadas previamente en la memoria, concretamente en la zona denominada "memoria de programa. Cada una de esas instrucciones es leida por la CPU y debe llegar a presencia de la UTC, siguiendo el camino sealado por la Ilecha sobre la Fig. 6.10. La Iorma en que la instruccion es extraida de la memoria no es diIerente a cualquier otro proceso de lectura, sin embargo la CPU debe conocer que esa inIormacion leida es precisamente una instruccion; esto debe estar implementado en el microcodigo de cada instruccion cuyas ultimas micro-ordenes consistiran en realizar una nueva busqueda de instruccion o "Ciclo de Fetch" , Fig. 6.11. Fig. 6. 11 El registro de instrucciones es pues el lugar en el que se deposita el codigo de operacion de una instruccion, quedando presente a la entrada del controlador para indicarle la secuencia de acciones que de desarrollar. Este registro tendra tantos bits como tiene la longitud del bus de datos de la CPU. EL REGISTRO O PALABRA DE ESTADO (PSW) El registro de Estado tambien llamado "registro de cdigos de condicin" esta constituido por un conjunto de biestables independientes, es decir que pueden ser puestos a "1" o a "0" aisladamente los unos de los otros, segun la Fig. 6.12. Cada uno de ellos esta destinado a INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 39 memorizar el hecho de que un determinado suceso ha tenido lugar dentro de la CPU. Cada uno de estos biestables se suele denominar ELAG (bandera) simbolizando asi su Iuncion de "elemento visible" que pretende llamar la atencion sobre el hecho que representa. Los sucesos que suelen estar sealados mediante banderas son tipicamente los siguientes: N El resultado de una operacion ha sido nulo (ELAG DE CERO) N El resultado de una operacion ha sido negativo (ELAG DE SIGNO) N El resultado de una operacion desborda la capacidad del registro (ELAG DE DESBORDAMIENTO), etc. Fig. 6. 12 El estado de los Ilags es consultado por el controlador interno y condicionara su modo de actuacion en el desarrollo de una instruccion. Tambien puede ser consultado a voluntad del programador y sera la clave para que los programas "tomen decisiones" en Iuncion de las circunstancias. Aunque cada uno de los bits del registro de estado sea independiente de los restantes, todos ellos estan organizados en Iorma de un registro que tambien puede ser leido o escrito globalmente por la CPU de la misma Iorma que cualquier otro. EL PUNTERO DE PILA O STACK POINTER (SP) El stack pointer SP es un registro que se utiliza como indicador de una posicion de una zona de memoria que denominamos pila (stack). Este registro requiere una atencion especial y se hace necesario a la hora de ejecutar tramos de programa denominados "Subrutinas" o en rutinas de atencion a una "Interrupcin" o evento externo. Mas adelante se estudiara con cierta proIundidad el Iuncionamiento de este registro. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 40 Instrucciones Formato de una instruccin Es conveniente desarrollar un poco mas el concepto de instruccin explicado hasta ahora de Iorma muy superIicial. Una primera deIinicion de instruccion podria ser: Una Instruccin es una inIormacion elemental que se suministra a la CPU, a partir de la cual esta desarrolla una secuencia de acciones que le permiten llevar a cabo una determinada operacion de entre las que componen su repertorio. Puesto que la unica inIormacion asequible para la CPU es la binaria, una instruccion no sera mas que una combinacion de ceros y unos con un signiIicado preestablecido. Sin embargo, con el Iin de Iacilitar al programador recordar el signiIicado de estos codigos, es conveniente adjudicar a cada instruccion una abreviatura que sintetice la accion de la misma. Esta abreviatura se denomina "Cdigo nemnico" debiendo resaltarse que solo es una Iorma mas clara de representar las instrucciones de cara al programador, ya que la CPU solo entiende palabras binarias. En la tabla siguiente se presentan a titulo ilustrativo algunas de las instrucciones que es capaz de ejecutar un microprocesador concreto, en este caso la Iamilia de icrocontroladores MCS-51 de INTEL. Los codigos nemonicos asignados: Los codigos nemonicos utilizados tienen un signiIicado sencillo en relaccion a los terminos ingleses de donde proceden: ADDC ADD WITH CARRY, SBC SUBTRACT WITH CARRY, CLC CLEAR CAREY, etc.. Puesto que son convencionales, podrian sustituirse por otros cualquiera si bien ello no es aconsejable, siendo conveniente utilizar siempre los establecidos por el Iabricante. Pero una instruccion no se compone unicamente de este codigo, binario o nemonico, que solo deIine la Iuncion a realizar. Muchas instrucciones deben especiIicar tambien cuales son los datos a utilizar o en que lugar se encuentran estos datos. Estas instrucciones requieren ademas un Operando. Estableciendo una terminologia mas concreta deIiniremos los diIerentes terminos implicitos en una instruccion. CODIGO DE OPERACION: Es el codigo que deIine el tipo de operacion a realizar. OPERANDO: Es la inIormacion asociada a una instruccion que deIine bien el dato con el que se va a operar, bien la posicion de memoria en la cual se encuentra dicho dato. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 41 INSTRUCCION: Es el conjunto de codigo de operacion y del operando (si este existe). Por ejemplo, una instruccion completa seria de la Iorma: Esta instruccion indica a la CPU que debe incrementar en una unidad el contenido de la posicion de memoria 0300H . El codigo de operacion, en el tipo de microprocesadores que estamos utilizando, se especiIica mediante un byte. Esto signiIica que podrian representarse hasta 256 codigos de operacion diIerentes mediante sus 8 bits. El operando, si existe, puede ser un dato de la longitud utilizada (8 bits en nuestro caso) o una direccion (16 bits caso). En consecuencia una instruccion completa puede ser: de 1 byte (si no hay operando) de 2 bytes (el primero para el codigo de operacion y otro para el operando) de 3 bytes (el primero para el codigo de operacion y dos para el operando) En microprocesadores mas complejos pueden ser necesarios dos bytes para poder especiIicar mas de 256 operaciones diIerentes. Ademas el operando puede requerir especiIicar dos direcciones y las direcciones pueden ser de mas de 16 bits. Por ejemplo, el 68000 de Motorola tiene instrucciones que requieren 10 bytes. Tipos de instrucciones El repertorio de instrucciones es muy variable en Iuncion del microprocesador utilizado. Existe una gran diIerencia entre los primeros microprocesadores con un "conjunto de instrucciones muy limitado" (RISC), y los empleados hasta hace muy poco tiempo con "gran potencia en cuanto a nmero de instrucciones" (CISC). Actualmente parece que se ha optado por una vuelta a los origenes, de Iorma que la IilosoIia que "parece" imponerse a nivel de rendimiento es la de arquitecturas tipo RISC (486DX, PENTIUM, Sparck,..). Por la Iuncion realizada, las instrucciones tipicas de un microprocesador se pueden dividir en varias categorias: N Instrucciones de transferencia. movimiento de datos entre registros. Los registros Iuente y destino de la transIerencia pueden pertenecer a la CPU (acumulador y registros auxiliares), a memoria o al sistema de E/S. N Instrucciones operativas. ejecucion de operaciones logicas o aritmeticas entre dos operandos (suma, resta, multiplicacion...), sobre un solo operando INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 42 (incremento, complemento, borrado...) o bit a bit (Y, O, O exclusiva, puesta a uno, complemento...). N Instrucciones de control de secuencia. saltos de programa y llamadas y retornos de subrutinas, incondicionales o condicionales. N Instrucciones de control. instrucciones que aIectan al registro de estado, sistema de interrupciones, cambio de bancos de registros, paro del sistema, instrucciones especiales de E/S, etc. Algunos sistemas son microprogramables, lo cual posibilita un repertorio de instrucciones arbitrario. Modos de direccionamiento Existen distintas Iormas de direccionar los registros, palabras de memoria y accesos de entrada y salida que intervienen en la ejecucion de una instruccion. Las posibilidades de direccionamiento de un microprocesador son importantes de tener en cuenta por su repercusion en la velocidad de ejecucion, Ilexibilidad de la programacion y necesidades en la capacidad de memoria. Como se ha visto una instruccion se puede considerar dividida en dos partes: cdigo de operacion y operando (si es necesario). El operando, si existe, ocupa palabra(s) sucesiva(s) al codigo de operacion. La inIormacion de la direccion se puede presentar de distintas Iormas: Direccionamiento implicito: cuando el mismo codigo de operacion indica la direccion del operando. Por la limitacion que este metodo supone, en cuanto a capacidad, su utilizacion es restringida al direccionamiento de registros internos de la CPU y casos especiales de control de secuencia. N Direccionamiento inmediato. cuando el operando no representa una direccion sino que es uno de los datos de la operacion. N Direccionamiento directo: cuando se indica de una Iorma absoluta la direccion eIectiva del operando o la direccion de salto en caso de instrucciones de control de secuencia. N Direccionamiento indirecto. cuando el operando indica una direccion donde esta la direccion eIectiva del operando. Puede ser posible un encadenamiento de indirecciones hasta llegar a la direccion eIectiva. La indireccion puede ser respecto a un registro interno, punteros de memoria o de stack, o respecto a memoria, segun donde este el puntero de la direccion eIectiva. N Direccionamiento relativo al contador de programa: el operando indica un desplazamiento, positivo o negativo, respecto a la direccion de la instruccion en curso. N Direccionamiento indexado. el operando indica un desplazamiento respecto a un puntero de memoria en la CPU (registro de indice). N Direccionamiento por pginas. cuando el operando indica la direccion eIectiva en la pagina (memoria dividida en modulos de 256 palabras) en curso o respecto a la pagina cero (posiciones 0 a 255). INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 43 Las subrutinas Cuando una misma secuencia de instrucciones identicas aparece varias veces a lo largo del programa, supone un trabajo adicional para el programador, que tiene que escribir varias veces lo mismo y a esto se aade una mayor extension del programa; por ello es preIerible agruparia en un bloque independiente que recibe el nombre de SUBRUTINA; En el juego de instrucciones de todo microprocesador existe una instruccion "LLAMADA A SUBRUTINA" (CALL) que rompe la secuencia normal de ejecucion del programa, alterando el contenido del contador de Iorma que la ejecucion continua en el punto de comienzo de una subrutina. Ademas, permite que una vez Iinalizada se incorpore una instruccion "EIN DE SUBRUTINA" (RET) que permita que el contador de programa recupere el valor que tenia y pueda continuar la ejecucion del programa principal a partir del punto de donde partio. La secuencia de instrucciones que se recorre se representa esquematicamente en la Fig. 8.1. Fig. 8. 1 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 44 SUBRUTINAS ANIDADAS Es posible que una subrutina recurra, a su vez, a otras subrutinas (que podriamos llamar SUB-SUBRUTINAS). Estas pueden requerir otras y asi sucesivamente. Este anidamiento de subrutinas puede realizarse perIectamente sin mas limitaciones que las que veremos seguidamente, derivadas del mecanismo utilizado para "recordar" el valor del contador de programa en cada punto en que se produce un salto a subrutina. En la Eig. 8.2 se esquematiza una situacion en la que el programa principal hace uso de la subrutina A. Esta, a su vez, llama a la subrutina B, la cual utiliza la subrutina C. Existen tres niveles de anidamiento y la CPU debe recordar los valores del contador de programa en que se han producido los saltos, que llamaremos PCl, PC2 y PC3. Fig. 8. 2 Para ello existen varias posibilidades: Debe estar limitado, con lo que se limita el NIVEL de ANIDAMIENTO de subrutinas. Sin embargo, la velocidad con que se eIectua este almacenamiento puede ser mas alta que mediante el procedimiento 2). Almacenar estos valores en una zona de la memoria RAM exterior a la CPU llamada PILA o STACK y disponer en la CPU de un solo registro auxiliar llamado 'puntero de pila o stack pointer` que indique la posicion del ultimo valor almacenado. Este procedimiento que estudiaremos seguidamente, permite un nivel de anidamiento practicamente ilimitado INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 45 (todo el MAPA de MEMORIA) si bien requiere maniobras adicionales de la CPU que precisan de un tiempo mayor. Pero al ejecutarse una subrutina ademas del contador de programa, que siempre se debera recordar, puede ser necesario almacenar los datos contenidos en otros registros de la CPU con el Iin de que a la vuelta al programa principal se reanude la ejecucion del mismo en las mismas condiciones existentes en el momento de producirse el salto a la subrutina. En particular, puede ser necesario guardar el contenido del acumulador v del registro de estado. Ademas, dependiendo de los casos, puede necesitarse la salvaguarda de otros registros. La salvaguarda del contador de programa suele hacerse automaticamente mientras que la del acumulador y del registro de estado requiere la indicacion expresa del programador mediante instrucciones especiales. El almacenamiento de otros registros tambien puede hacerse por metodos normales de llevar datos a memoria. La piIa y su puntero El metodo automatico de salvaguarda del contador de programa y de otros registros hace uso de una zona de memoria de tamao variable reservada expresamente para este Iin, que recibe el nombre de STACK o PILA. Al mismo tiempo se dispone en la CPU de un registro especial llamado puntero de la pila que se decrementa automaticamente cada vez que se ejecuta una instruccion de LLAMADA a SUBRUTINA. Este registro PUNTERO debera, en principio, ser de 16 bits con el Iin de permitir el almacenamiento de una direccion completa. Su contenido inicial es Iijado por el programador cargandolo con la "direccin de comienzo de la pila" deseada. Al eIectuarse una llamada a subrutina el contador de programa se almacena en esa direccion y en la anterior decrementandose (o incrementandose dependiendo del tipo de CPU) en dos unidades el contenido del puntero de la pila, de Iorma que "seala" ahora la siguiente direccin libre del stack. Si a su vez, en la ejecucion de la subrutina se produce una nueva llamada a subrutina, se almacenaran los valores correspondientes del contador de programa decrementandose (o incrementandose) automaticamente el puntero de la pila Los valores sucesivos del contador de programa son guardados consecutivamente en direcciones cada vez mas bajas ( o mas altas), creciendo el STACK hacia arriba (o hacia abajo), de la Iorma indicada en la Fig. 9.1. En el ejemplo de la Iigura, el programador ha Iijado el comienzo de la Pila en la posicion XXX8 de memoria, correspondiente a la RAM. Al producirme la 1 llamada a subrutina, se almacenan automaticamente los valores de PCH y PCL en XXX8 y XXX7, quedando el Puntero con el contenido XXX6, es decir, apuntando a XXX6. Al producirme una llamada a la 2 subrutina, en el seno de la 1, los valores del PC en ese momento se almacenan en XXX6 y XXX5 quedando el puntero en XXX4. La Fig. 9.1 representa el caso en que la subrutina ha sido interrumpida por una 3 quedando el puntero sealando la proxima direccion libre XXX2. Al Iinalizar la ejecucion de cada subrutina, se produce el proceso inverso, devolviendo a la CPU los valores sucesivos del PC e incrementandose automaticamente el valor del puntero. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 46 Fig. 9. 1 Fig. 9. 2 El Iuncionamiento de la memoria destinada al STACK es del tipo LIFO (last in, Iirst out) y es corriente que el proceso se produzca en el sentido indicado (decrementandose el puntero al saltar a subrutinas e incrementandose al volver a ellas), pero esto es arbitrario, INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 47 pudiendo muy bien ser al contrario. Esta es una eleccion que ha hecho el Iabricante del microprocesador. Cuando se desea almacenar, ademas del PC, el contenido de otros registros, cada vez que se produce un salto a subrutinas se deben utilizar las instrucciones adecuadas (PUSH) para llevar este al stack. En la Fig. 9.2 se presenta un ejemplo hipotetico en el que se llevan al stack el PC, el ACUMULADOR y DOS REGISTROS auxiliares. El programador debe prever el tamao maximo de la pila con el Iin de obtener un optimo aprovechamiento de la RAM sin que en ningun caso interIiera el crecimiento de la misma con zonas de la RAM destinadas a otros usos. Los registros que se salvaguardan automaticamente al producirse la llamada a subrutina dependen del microprocesador concreto de que se trate. Todos los microprocesadores guardan automaticamente el contador de programa, ya que resulta imprescindible conservar su valor para reanudar la ejecucion del programa principal. Para la salvaguarda de los registros de Iorma no automatica, todos los microprocesadores disponen de instrucciones especiIicas que se suelen denominar PUSH, para llevar datos a la pila y POP, para recuperarlos. Las interrupciones Las interrupciones constituyen quiza el mecanismo mas importante para la conexion del sistema microprocesador al mundo exterior, sincronizando la ejecucion de programas con acontecimientos externos. Todos los microprocesadores tienen implementado, e incluso potenciado, este mecanismo gracias al cual se va a Iacilitar su incorporacion a sistemas que Iuncionan en tiempo real. El Iuncionamiento de las interrupciones es similar al de las subrutinas de las cuales casi exclusivamente se diIerencian en el procedimiento con que se ponen en marcha. Asi como las subrutinas se ejecutan cada vez que en el programa aparece la instruccion de llamada PUSH, las interrupciones se ponen en marcha al activarse un terminal INT de entrada a la CPU, es decir, mediante un mecanismo hardware. Las interrupciones se pueden producir en cualquier momento de la ejecucion del programa, no estando ligadas a los puntos del mismo en los que el programador ha previsto la instruccion equivalente de llamada a subrutina. La subrutina que se pone en marcha como consecuencia de una interrupcion se denomina "rutina de atencin a la interrupcin" y debe Iinalizar con una instruccion especiIica que indique el termino de la misma, denominado "fin de interrupcin" (RETI). La Fig. 10.1 trata de esquematizar este Iuncionamiento. Las interrupciones se diIerencian por otro lado de las subrutinas en que ademas de almacenar en la pila el Contador de programa (PC), se almacena la Palabra de estado (PSW) ya que en el retorno de la rutina de interrupcion hacia el programa principal, este debe continuar su ejecucion con los Elags de la PSW en el mismo estado en que se interrumpio. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 48 Fig. 10. 1 Para ilustrar su Iuncionamiento, plantearemos un ejemplo muy clasico; la realizacion de un RELOJ EN TIEMPO REAL. Se denomina RELOJ EN TIEMPO REAL a cualquier sistema que es capaz de producir interrupciones periodicas en momentos determinados. En este ejemplo lo vamos a utilizar para que el microprocesador lleve la cuenta de segundos, minutos y horas con la precision de un oscilador a cuarzo exterior. El diagrama de bloques necesario se muestra en la Fig. 10.2.. Fig. 10. 2 La seal, procedente de un oscilador a cuarzo, dividida en Irecuencia por procedimientos conocidos, suministra a la CPU, a traves de su entrada de interrupcion, impulsos a la Irecuencia de 1 Hz. Cada uno de estos impulsos va a provocar una interrupcion, lo que dara lugar a la ejecucion de una rutina cuya unica mision sera la actualizacion de tres contadores: un contador de segundos, uno de minutos y un tercero de horas. No habria inconveniente en establecer otros contadores que contabilizasen dias, meses, aos, etc.. Estos contadores son "soItware", es decir, que cada uno de ellos es un registro o posicion de memoria que se incrementa bajo la accion del programa. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 49 La rutina de atencion a estas interrupciones tendria la estructura que se muestra en la Fig. 10.3. El microprocesador tardara muy poco en ejecutar este programa, por lo que la mayor parte de su tiempo estara desocupado y podra utilizarse para otras cosas. Si, por ejemplo, tarda 100 microsegundos (tiempo seguramente excesivo) y lo ejecuta una vez cada segundo, solo ocupara el 0,01 de su tiempo en llevar la cuenta de la hora, tarea que resultaria perIectamente compatible con otras actividades llevadas a cabo por el programa principal. La rutina de atencion a interrupciones, a su termino, debe devolver el control al programa principal, para lo cual, igual que las subrutinas, tiene que salvaguardar los datos necesarios para que la CPU este en condiciones de reanudar su tarea como si esta no se hubiera interrumpido. El mecanismo de la pila y su puntero se utiliza aqui de Iorma identica a la descrita para el caso de las subrutinas aadiendo el almacenamiento del registro de estado junto con el contador de programa, quedando las diIerencias relegadas a un segundo termino especiIico de cada microprocesador. Fig. 10. 3 INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 50 Las unidades de entrada/saIida Estructura de Ias unidades de E/S Hasta ahora se han descrito dos de las unidades basicas de un sistema microprocesador: la unidad central de proceso (CPU) y la memoria. La primera es la encargada de procesar la inIormacion, realizar los calculos aritmeticos y logicos y ejecutar instrucciones del programa mientras que la segunda es la unidad de almacenamiento de inIormacion que segun el tipo de memoria podia contener datos de Iorma permanente o temporal. Hasta aqui y desde una vision general el proceso parece simple, pero queda una cuestion pendiente; la Iorma de introducir datos y como, una vez procesados aparecen de Iorma inteligible para Nosotros Esta es la tarea Iundamental de las unidades de entrada-salida, la de proveer de un sistema Iacil y ordenado de acceso al bus de datos del sistema microprocesador. La utilizacion de un dispositivo de E/S (entrada-salida) necesita de una interIace, es decir, de un sistema hardware-soItware que permita la comunicacion con el elemento exterior. A una unidad de E/S tambien se le llama via de acceso o "Puerto. Una via de acceso puede ser de entrada (puerto de entrada) si la CPU lee datos del exterior o de salida (puerto de salida) si la CPU escribe o envia datos al exterior o tambien puede ser de entrada-salida si la CPU realiza ambas operaciones. En este caso se dice que es una via de acceso bidireccional (puerto bidireccional). El numero de puertos o vias de acceso que puede soportar un sistema microprocesador esta limitado por el numero de bits de direccion que esten reservados a este Iin. La Fig.13.1 ilustra un diagrama de bloques con una conIiguracion de entrada-salida. Fig. 13. 1 La comunicacion entre el microprocesador y el elemento exterior puede realizarse Iundamentalmente por dos metodos: Serie y Paralelo. Puertos Paralelo: Un puerto de entrada paralelo transIiere todos los bits de la palabra de datos a la vez desde el elemento exterior hacia la CPU y un puerto de salida paralelo transIiere la palabra de datos desde la CPU hacia el elemento exterior. La y salida paralelo. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 51 En la Fig. 13.2 muestra un ejemplo de puerto de entrada que utiliza un circuito integrado 74LS244 compuesto por 8 "buffers triestados, cada uno de los cuales tiene su entrada conectada al circuito exterior pudiendo transIerir una palabra de 8 bits. Las salidas se conectan al bus de datos directamente gracias a que disponen de estado de alta impedancia. La transIerencia de inIormacion se produce al activar la entrada de habilitacion E (Enable) del 74LS244 a traves de un decodiIicador. Fig. 13. 2 Un circuito similar puede utilizarse como puerto de salida, utilizando un circuito de enclavamiento o "Latch" como el 74LS374 tal como muestra la Fig. 13.3. Fig. 13. 3 Puertos Serie: La comunicacion serie se utiliza para transIerir palabras de datos secuencialmente bit a bit. Se utiliza entre equipos que se encuentran a distancias relativamente elevadas, incluso a traves de la linea teleIonica. La transmision serie tiene la ventaja de utilizar un menor numero de lineas de conexion que la comunicacion paralelo. Solamente son necesarias dos pares de lineas: un par para entrada y el otro para salida y en algunos casos puede ser realizado con una linea comun y dos lineas: una para entrada y otra para salida. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 52 Una unidad de entrada-salida serie necesita que la palabra de datos sea convertida primero de paralelo a serie (el bus de datos del microprocesador es siempre paralelo) proceso que recibe el nombre de "serializacin" de la inIormacion. Este proceso puede ser realizado por hardware o por soItware. Si se disponen de circuitos especializados es mas conveniente realizarlo por hardware porque de esta manera reducimos las tareas de programacion. Un ejemplo tipico de transmision serie se representa en la Fig. 13.4. La velocidad de transmision de la inIormacion esta determinado por la Irecuencia de la seal de reloj. El numero de bits por segundo transmitidos se mide en "baudios. Asi por ejemplo 300 baudios signiIica una velocidad de 300 bits por segundo. Para que el elemento receptor conozca exactamente en que momento se inicia la transmision y en que momento se termina se utiliza un protocolo de transmision. La inIormacion se transmite en bloques de datos. Cada bloque esta Iormado por un bit de inicio (Start), continua con los bits de datos y un bit de paridad opcional y termina con uno o dos bits de parada (Stop) tal como se muestra en la Fig. 13.4. Fig. 13. 4 Al nivel lgico ~0 se le llama a menudo ~espacio y al nivel lgico ~1 se le llama ~marca. Por ejemplo, si la palabra de datos a transmitir es 0110101(7bits) y se utiliza paridad par la palabra transmitida sera 01010110011 (el bit menos signiIicativo es el que se manda primero) y aparecera como muestra la Iigura anterior. Si la palabra de datos esta en codigo ASCII, el dato 35H representara el numero 5. Un teletipo, llamado generalmente TTY es un terminal de entrada serie parecido a una maquina de escribir que utiliza un bit de inicio, siete bits de datos, un bit de paridad (generalmente ignorado) y dos bits de parada, por lo tanto hay 11 bits en el codigo del caracter transmitido. Eunciona a 10 caracteres por segundo y su velocidad de transmision es INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 53 de 110 baudios. Los terminales de video Iuncionan generalmente a velocidades de hasta 9.600 baudios, es decir 960 caracteres por segundo. Conexin de Ias unidades de E/S Desde el punto de vista de conexion al sistema microprocesador, unicamente es necesario disponer de un sistema de decodiIicacion del bus de direcciones de modo que cada vez que aparezca la direccion seleccionada, se transIiera la inIormacion del bus de datos a la salida del circuito de enclavamiento. Lo mismo podriamos decir del caso inverso. Una disposicion mas completa se representa en la Fig. 13.5 en la que se han combinado los circuitos anteriores para obtener ocho lineas de entrada y ocho de salida. En este caso unicamente es necesario disponer de una seal de control que habilite el circuito correspondiente para las seales de entrada o de salida. Para esta Iuncion se utiliza generalmente la seal de lectura-escritura combinada adecuadamente con la seal de habilitacion suministrada por el decodiIicador. Fig. 13. 5 La conIiguracion proporcionada por este circuito podria ser util para una aplicacion concreta, pero diIicilmente esta estructura tan rigida proporcionara los requerimientos necesarios de la mayoria de sistemas. Por ello, la mayor parte de Iabricantes disponen de una gama de circuitos LSI programables que realizan las Iunciones de unidad de entrada- salida y que se denominan dispositivos de adaptacin universales tal como el 8255 de INTEL. Estos circuitos LSI disponen de registros internos para almacenar los datos desde o hacia los circuitos de utilizacion. La seleccion de estos registros se realiza por decodiIicacion del bus de direcciones utilizando las mismas tecnicas vistas anteriormente en el apartado de memorias. Antes de ocuparnos de las peculiaridades de la conexion de estas unidades, hay que hacer una distincion en el modo con que la CPU trata a las unidades de entrada- salida segun el tipo de microprocesador utilizado. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 54 Puertos de Entrada/Salida mapeados en memoria: Un primer metodo consiste en tratar a estas unidades como si Iueran posiciones de memoria. Bajo esta concepcion, una instruccion MOV (mover) se utiliza tanto para manejar datos de la memoria como para leer o escribir datos en la unidad de entrada-salida sin mas que especiIicar la direccion correspondiente. Este metodo se denomina entradas-salidas mapeadas en memoria porque utiliza parte de la zona reservada al direccionamiento de memoria para acceder a las entradas-salidas. Tiene la ventaja de utilizar las mismas instrucciones que para el acceso de los datos en memoria y presenta el inconveniente de que al utilizar parte de la zona de direccionamiento destinada a esta, limita la capacidad total de memoria que puede disponer el sistema. Esta concepcion en el tratamiento de las entradas-salidas desde el punto de vista de la CPU es el utilizado por Motorola y Rockwell en sus Iamilias de microprocesadores. Puertos de Entrada/Salida NO mapeados en memoria: El otro metodo consiste en utilizar instrucciones especiali:adas para acceder a los puertos de entrada-salida. Estas instrucciones producen la activacion de ciertas lineas de control de la CPU para indicar que la inIormacion presente en el bus de datos esta destinada a la unidad de entrada-salida direccionada. Este metodo, utilizado por Intel y Zilog en sus Iamilias de microprocesadores tiene la ventaja de no restar espacio de direccionamiento a la memoria y por lo tanto de independizar el direccionamiento de ambos dispositivos. Por otra parte, presenta el inconveniente de necesitar lineas de control distintas ( IO/M`)que indiquen si el acceso es a la memoria o a la unidad de entradas-salidas; ademas el set de intrucciones debe incoporar instrucciones especiIicas para el tratamiento de entradas-salidas (IN, OUT). A pesar de que como ya hemos dicho anteriormente, las mismas tecnicas empleadas para la decodiIicacion de la memoria son aplicables en el caso de las unidades de entrada-salida, si que habra que tener en cuenta el tipo de tratamiento que la CPU haga sobre estas para determinar las lineas de control a utilizar. En el caso de un sistema orientado a memoria, el mismo decodiIicador utilizado para la memoria sirve para la decodiIicacion de las unidades de entrada-salida mientras que en el caso de instrucciones especializadas deberemos de utilizar otro decodiIicador distinto que utilice la seal IO/M` activa al nivel de seleccion de entradas-salidas (IO/M`1). A nivel general, los dispositivos adaptadores universales poseen unas caracteristicas tales como: Programacion del sentido de actuacion de los puertos. Lineas de control exterior para el establecimiento de protocolos de dialogo (handshaking). Programacion de los Ilancos de actuacion en la generacion de interrupciones. Posibilidad de enmascarar seales de control de interrupcion. A nivel de interconexion con el sistema microprocesador disponen de las siguientes lineas: Bus de datos: Se utiliza para el intercambio de inIormacion CPU-PeriIerico. Lineas de habilitacion: Permite la habilitacion del dispositivo cuando se dan las condiciones de seleccion. Lineas de seleccion de registro: Seleccionan los registros internos. Se conectan generalmente a las lineas de direccion menos signiIicativas. Lineas de control de interrupcion: Eacilitan la generacion de interrupciones a la CPU y se conectan a sus entradas correspondientes. Reloj: Conectada a la seal de reloj del procesador. Lectura-escritura: Indican la direccion del Ilujo de datos. INTRODUCCION A LOS MICROCONTROLADORES Germn Pereira Muoz ICEI Instituto de Capacitacion en Electronica e Informatica 55 Reposicion (Reset): Reinicializa el contenido de los registros. La Fig, 13.6 ilustra un adaptador de puertos universal, en este caso el PPI 8255A de NTEL. El empleo de los adaptadores universales en un sistema microprocesador proporciona una solucion Ilexible en la mayoria de aplicaciones a la vez que reduce el numero de dispositivos empleados aunque, debido a sus posibilidades de programacion exige un esIuerzo a nivel de soItware que, no obstante, esta ampliamente recompensado. Fig. 13. 6