You are on page 1of 19

1 Estructura del Microcontrolador

1.1 El Microprocesador y el Microcontrolador El microprocesador llamado tambin CPU (Unidad Central de Proceso) es un circuito electrnico que se encarga de leer interpretar y ejecutar las instrucciones que se encuentran contenidos en una unidad de memoria. Los microprocesadores no trabajan solos sino que forman parte de un sistema ms complejo coo la computadora. Una computadora contiene varios circuitos integrados siendo el microprocesador su cerebro es decir la parte fundamental pero adems requiere otros circuitos integrados como por ejemplo: memorias RAM para almacenar los datos temporalmente y memorias ROM para almacenar el programa del fabricante que se encarga del proceso del equipo, un circuito integrado para los puertos de entrada y salida, un decodificador de direcciones entre otros. Un microcontrolador es otro dispositivo electrnico que contiene en un solo circuito integrado la CPU, la memoria RAM, memorias ROM, puertos de entrada y salidas y otros perifricos como un convertidor analgico a digital, un circuito para comunicacin serial, etc. con la consiguiente reduccin de espacio, es decir el microcontrolador es propiamente un computador fabricado

toda esta maravilla en un solo chip y es empleado en diversas aplicaciones especficas en la industria.

Figura 1.1 Esquema simplificado de un microcontrolador

Se debe considerar que la CPU debe acceder a los dispositivos de memoria donde estn los programas y los datos que debe ejecutar, esto lo hace a travs de buses que son lneas que en comn transportan un valor numrico y se clasifican en: Un bus de direccionamiento: Es un conjunto de lneas que permite a la CPU acceder a un determinado registro para escribir o leer un dato. Bus de datos: Es el conjunto de lneas por donde la CPU enva o recibe datos Bus de control: Es un conjunto de lneas que permite a la CPU controlar el acceso a un dispositivo de memoria, interfaces de E/S y otros elementos. 1.2 Arquitectura de un microcontrolador Estudiaremos la arquitectura del microcontrolador visto desde el punto de vista de cmo la CPU accede a los datos y a las instrucciones: 1.2.1 La arquitectura Von Neumann: La arquitectura tradicional de microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la CPU, esta conectada a una memoria nica que contiene las instrucciones del programa y los datos

Figura 1.2 Arquitectura Von Neumann

El tamao de la unidad de datos o instrucciones est fijado por el ancho del bus de la memoria Por otro lado este bus nico limita la velocidad de operacin del microprocesador, ya que no se puede buscar de memoria una nueva instruccin, antes de que finalicen las transferencias de datos que pudieran resultar de la instruccin anterior. 1.2.2 La arquitectura Harvard y sus ventajas: La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que la CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos

Figura 1.3 Arquitectura Harvard

Ambos buses son totalmente independientes y pueden ser de distintos anchos, por ejemplo la memoria de datos puede ser de 8 bits y la memoria de programas de 16 bits. Adems, como los buses son independientes, la CPU puede estar accediendo a los datos para completar la ejecucin de una instruccin, y al mismo tiempo estar leyendo la prxima instruccin a ejecutar. 1.3 Caracterstica de la CPU El microprocesador es un circuito digital con registros que varan de tamao (de 1 a 16 bits), y un grupo de instrucciones, la mayora de las cuales pueden ser implementadas de muchas formas diferentes. Tiene buses de datos, direccin y control. Considerando que el programa y los datos estn en la memoria y que el resultado de algn clculo ser mantenido en un registro o en memoria, significa que el programa y los datos debieron venir del exterior (mundo real) y los resultados deben ser enviados al exterior. La unidad aritmtica lgica ALU, es uno de los circuitos ms importantes de la CPU, cuyo propsito es ejecutar operaciones aritmticas y lgicas con los datos que le son enviados. El ALU tiene dos entradas principales, una viene de un registro llamado Acumulador y la otra viene del Registro de datos. El ALU puede sumar las dos palabras, restar la una de la otra, realizar operaciones lgicas, etc. la operacin que realiza el ALU es determinada por seales de control.

A y B: entradas de los operandos R: Salida F: entrada de la unidad de control D: Es un estado de salida

Figura 1.4 Smbolo del ALU

Debido a que el ALU ejecuta operaciones con estas dos palabras, es que estos dos datos se llaman operandos. Los dos operando pueden ser sumados, restados o comparados de alguna forma, y el resultado de la operacin es almacenado en el Acumulador. Por ejemplo, los datos $07 y $09 van a ser sumados. Antes de los nmeros puedan ser sumados, un operando $09 es colocado en el acumulador, el otro $07 es colocado en el Registro de datos. Las lneas de control apropiadas son activadas para implementar la operacin de suma. El ALU suma los dos nmeros dando como resultado $10 (16). La suma es almacenada en el acumulador, reemplazando al operando que fue originalmente almacenado all. El Acumulador es el registro ms til. Durante las operaciones aritmticas y lgicas l acta en forma dual. Antes de la operacin, l mantiene uno de los operandos, despus de la operacin, l mantiene el resultado de la suma, diferencia o resultado lgico. Por ejemplo cuando la instruccin LDAA $C000 se ejecuta, el contenido de la posicin de memoria $C000 es cargada al acumulador A; si la instruccin fuese STAB $C400, se origina que el contenido del acumulador B es transferido a la posicin de memoria $C400 El Registro de Datos, es un registro de un byte de almacenamiento temporal para datos que van o vienen del bus de datos. Es decir, mantiene una instruccin mientras est siendo almacenado en memoria. El Registro de Direcciones, es otro registro de dos bytes de almacenamiento temporal que seala la direccin de una posicin de memoria o de un dispositivo E/S que es usado en la operacin que se est ejecutando. El Contador de Programa PC, es un contador que controla la secuencia en la cual las instrucciones de un programa son ejecutadas. En cualquier instante, el contador indica la direccin de memoria desde el cual el prximo byte de informacin va a ser tomado. El Decodificador de Instrucciones, hace justamente lo que su nombre indica. Despus que un cdigo de instruccin es tomado desde la memoria y ubicada en el registro de datos, la instruccin es decodificada por este circuito. El decodificador examina el cdigo de 8 bits y decide cual operacin debe ser ejecutada. El Controlador/Secuenciador, esta unidad produce una variedad de seales de control para llevar a cabo la instruccin. Dado que cada instruccin es diferente, una combinacin diferente de seales de controles producida para cada instruccin. Esta unidad determina la secuencia de eventos necesarios para completar la operacin descrita por la instruccin.

1.4 Interaccin entre la CPU y la memoria RAM. Una memoria RAM es aquella donde se puede escribir datos (se le pone la direccin, se le entrega el dato y luego la seal de escritura) y leer datos (se le pone la direccin, la seal de lectura y luego se toma el dato). Dos buses y unas lneas de control conectan la memoria RAM con la CPU. Si el bus de direcciones es de 14 bits, por ejemplo, entonces se puede direccionar 16,384 posiciones de memoria desde la CPU al decodificador de direcciones (de la memoria RAM). A cada posicin de memoria se le asigna un nico nmero llamado su direccin. El decodificador de direcciones de la RAM decodifica el nmero de 14 bits del bus de direcciones y selecciona la posicin especifica de la memoria. La memoria tambin recibe la seal de control del CPU que le dice a la memoria la operacin que debe ejecutar. Cuando se activa la seal de lectura, empieza la operacin de lectura la cual indica que la posicin seleccionada va a ser leda. Esto quiere decir que el nmero de 8 bits contenido en la posicin de memoria seleccionada va a ser colocado en el bus de datos de donde puede ser transferido a la CPU. Asuma que la CPU lee el contenido de la posicin $2000. asuma tambin que el nmero all almacenado es $9A, entonces la operaciones son: Primero, la CPU coloca la direccin $2000 en el bus de direccin. El decodificador de la RAM reconoce la direccin y selecciona la posicin de memoria. Segundo, la CPU enva una seal de lectura a la memoria, indicndole que el contenido de la posicin seleccionada debe ser colocada en el bus de datos y Tercero, la memoria responde colocando el nmero $9A en el bus de datos. El CPU puede entonces tomar el nmero y usarlo como lo necesite. Debe sealarse que el proceso de lectura de la RAM no altera el contenido de la posicin leda. Esto es, el nmero $9A estar presente en la posicin de memoria $2000 despus que la operacin de lectura ha terminado. Esto significa que se puede leer la misma posicin de memoria tantas veces como se necesite. La CPU puede tambin iniciar la operacin de escritura. Durante la operacin de escritura, una palabra (dato) es tomado del bus de datos y colocado en la posicin de memoria seleccionada. Veamos ahora como la CPU puede almacenar el nmero $F5 en la posicin de memoria $3000. Las operaciones son: Primero, el CPU coloca la direccin $3000 en el bus de direcciones. El decodificador de direcciones de la memoria selecciona la posicin de memoria $3000. Segundo, la CPU pone el nmero $F5 en el bus de datos y Tercero, la CPU enva la seal de escritura a la memoria. La memoria responde almacenando el nmero contenido en el bus de datos, en la posicin seleccionada. Esto es, $F5 es almacenado en la posicin $3000. Es necesario indicar que, el contenido previo de la posicin seleccionada se pierde cuando un nuevo nmero es escrito en esa misma posicin.

1.5 La Secuencia Bsqueda-Ejecucin (Fetch-execute) de la instruccin. Cuando la CPU est ejecutando un programa, lo hace a travs de una secuencia fundamental que lo repite una y otra vez. Recuerde que un programa consiste de instrucciones que le dice a la CPU exactamente las operaciones que tiene que ejecutar. Estas instrucciones deben ser almacenadas ordenadamente en memoria. Las instrucciones deben ser buscadas y luego una vez por la CPU en la memoria. La operacin de la CPU puede ser separado en dos fases, cuando la CPU es inicialmente arrancado, l entra en la fase de bsqueda (fetch phase). Durante la fase de bsqueda, una instruccin es tomada de la memoria y luego decodificada. Una vez que la instruccin es decodificada, la CPU cambia a la fase de ejecucin (execute phase). Durante esta fase, la CPU lleva a cabo la operacin definida por la instruccin. La fase de bsqueda consiste siempre de la misma serie de operaciones. Por lo tanto toma siempre el mismo tiempo. Sin embargo, la fase de ejecucin consistir de diferentes secuencias de eventos, dependiendo de qu tipo de instruccin est siendo ejecutada. Por lo tanto, el tiempo de la fase de ejecucin puede variar considerablemente de una instruccin a otra.

Inicio Bsqueda Ejecucin

Figura 1. 5 La Secuencia Bsqueda y Ejecucin de una Instruccin.

1.6 Funcionamiento de la CPU. La operacin fundamental de la CPU es ejecutar una secuencia de instrucciones almacenadas en la memoria de programas, del modo siguiente: El primer paso es buscar una instruccin en un lugar de la memoria de programa. La ubicacin de la direccin en la memoria es determinada por el Contador de programa (PC). Despus que se lee la instruccin el contador de programa es incrementado de acuerdo a la instruccin leda. La instruccin es decodificada donde una parte indica a la CPU que operacin debe realizar y la parte restante de la instruccin brinda informacin requerida por ejecutar esta instruccin, como por ejemplo pueden se los operandos para una operacin de suma, los operandos se puede dar como un valor constante o nos sealan una direccin de memoria donde se encuentra el valor del operando. Despus de los pasos de bsqueda y decodificacin se lleva a cabo la ejecucin de la instruccin

Finalmente los resultados del paso de la ejecucin son escritos aun registro interno de la CPU alguna memoria principal. Luego del proceso de bsqueda y ejecucin se repite la secuencia con la siguiente instruccin el programa, debido al valor incrementado en el valor del programa. En CPUs ms complejos que el descrito aqu, mltiples instrucciones pueden ser ledas, decodificadas, y ejecutadas simultneamente.

Figura 1.6 Diagrama de bloques de una CPU

Usando un ejemplo veremos como funciona la CPU. Supongamos que la operacin que debe ejecutar la CPU es la suma de $07(07) con $0A(10). Consideremos que despus de revisar el Juego de Instrucciones, se decide que tres instrucciones son necesarias para solucionar el problema. Antes de que el programa sea corrido, l debe ser colocado en la memoria, es decir los cinco bytes. El programa en lenguaje ensamblador considerando que el usuario puede escribir el cdigo desde la direccin $0000, es:
ORG LDAA ADDA STOP $0000 #$07 #$0A ; Directiva. Seala la direccin de inicio del cdigo. ; Acumulador A se carga con $07. ; Suma $07 con $0A. El resultado est en el acumulador A. ; Fin del programa

Desafortunadamente, la CPU no puede entender ni nemnico, ni nmeros decimales, solamente interpreta nmeros binarios. Las direcciones y los cdigos en memoria son:

Antes de que el programa sea corrido, l debe ser colocado en la memoria, es decir los cinco bytes. Describiremos paso a paso el proceso por el cual el CPU realiza este programa. 1.6.1 Fase de Bsqueda de la primera instruccin (LDAA). Al empezar la ejecucin del programa, el Contador de Programa (Program Counter) debe mostrar la direccin de la primera instruccin. En este caso, la primera instruccin est en la posicin de memoria $0000, tal como lo muestra el contador en la figura. El primer paso es buscar la primera instruccin en la memoria. La secuencia de eventos que suceden durante la fase de bsqueda es controlado por el Controlador/Secuenciador. El produce las seales de control las cuales causaran los eventos que se muestran en las figuras siguientes. Una vez que la direccin est segura en el registro de direcciones, el contador de programa se incrementa en uno. Esto es, su contenido cambia de $0000 a $0001 y esto no cambia el contenido del registro de direcciones. Luego, el contenido del registro de direcciones que es $0000 es colocado en el bus de direcciones. Los circuitos de la memoria decodifican la direccin y seleccionan la posicin de memoria $0000. El contenido de la posicin de memoria seleccionada es colocada en el bus de datos en la CPU. Despus de esta operacin el cdigo de operacin de la instruccin LDAA estar en el registro de datos. El prximo paso es decodificar la instruccin. El cdigo de operacin es transferido al decodificador de instrucciones (Instruction Decoder). Este circuito reconoce que el cdigo de operacin es la de una instruccin llamada LDAA. El informa al Controlador/Secuenciador de este hecho y el Secuenciador produce los pulsos de control necesarios para llevar a cabo la instruccin. Esto completa la fase de bsqueda de la primera instruccin. Este proceso se explica en los diagramas siguientes

Figura 1.7 La direccin de la primera instruccin $0000 es puesta en el Contador de programa.

Figura 1.8 El contenido del Contador de Programa es transferido al registro de direcciones

Figura 1.9 El Contador de Programa es incrementado

Figura 1.10

El cdigo de la instruccin es decodificado

Figura 1.11 El cdigo de operacin de la primera instruccin estar en el registro de datos

1.6.2 Fase de Ejecucin de la primera instruccin (LDAA) . La primera instruccin fue buscada de la memoria y decodificado durante la fase de bsqueda. La CPU sabe ahora que esto es una instruccin LDAA. Durante la fase de ejecucin, debe llevarse a cabo esta instruccin leyendo el prximo byte de la memoria (operando 1) y colocndolo en el acumulador A. El primer paso es transferir la direccin del prximo byte desde el contador de programa hasta el registro de direcciones. Usted recordar que el contador de programa fue incrementado a la direccin apropiada $0001 durante la fase bsqueda previa. Luego se producen dos operaciones: Primero, el contador de programa es incrementado a $0002 en anticipacin a la prxima fase de bsqueda, Segundo, el contenido del registro de direcciones $0001 es ubicado en el bus de direcciones. La direccin es decodificada y el contenido de la posicin de memoria $0001 es cargado al registro de datos. Recuerde que ste es el operando $07. Un instante despus, el nmero es transferido al acumulador. Entonces, la primera fase de ejecucin terminar con el nmero $07 en el acumulador A.

Figura 1.12 El contador de programa es incrementado y el contenido del registro de direcciones es ubicado en el bus de direcciones.

Figura 1.13 El primer operando $07 es transferido al acumulador va el registro de datos.

1.6.3 Fase de Bsqueda de la segunda instruccin (ADDA). La prxima instruccin en el programa es la instruccin ADDA. Esta es buscada de la memoria usando el mismo procedimiento anterior:

Primero, el contador del programa $0002 es transferido al registro de direcciones, Segundo, el contador de programa es incrementado a $0003, Tercero, la direccin es colocada en el bus de direcciones, Cuarto, el contenido de la posicin de memoria seleccionada es transferido al registro de datos, Quinto, el contenido del registro de datos es decodificado por el decodificador de instruccin, El dato buscado en la memoria es el cdigo de operacin para la instruccin ADDA, luego el Controlador/Secuenciador produce los pulsos de control necesarios para ejecutar esta instruccin.

Figura 1.14 Bsqueda de la instruccin Suma (ADDA).

1.6.4 Fase de Ejecucin de la segunda instruccin (ADDA). La ejecucin de la instruccin ADDA es un proceso que consta de las operaciones: Primero, el contenido del contador de programa $0003 es transferido al registro de direcciones, Segundo, el contador de programa es incrementado a $0004 en anticipacin a la prxima fase de bsqueda,

Tercero, la direccin del operando 2 es colocada en el bus de direcciones, Cuarto, el operando 2 que es $0A(10) es transferido en el registro de datos, Quinto, el operando 2 es transferido a una entrada del ALU. Simultneamente, el otro operando $07(07) es transferido del acumulador a la otra entrada del ALU. Sexto, el ALU suma los dos operando. El resultado $11(17) es cargado al acumulador A, escribiendo encima del operando $07 que fue previamente almacenado all.

Figura 1.15 Ejecutando la instruccin Suma (ADDA)

1.6.5 Fase de Bsqueda y Ejecucin de la tercera instruccin (STOP). El proceso de clculo de nuestro programa termina con la suma de dos operandos en el acumulador A. Sin embargo, el programa no est terminado hasta que se le diga al CPU que detenga o pare la ejecucin de las instrucciones. La instruccin final en el programa es la instruccin STOP. Ella es buscada usando el mismo proceso de bsqueda anteriormente descrito. La direccin viene del contador de programa va el registro de direcciones. Cuando esta direccin es colocada en el bus de direcciones, la posicin de memoria $0004 es leda y el cdigo de operacin para la instruccin STOP es cargado en el registro de datos. El cdigo de operacin es decodificado y la instruccin es ejecutada.

La ejecucin de la instruccin STOP coloca al CPU en el modo parada. El Controlador/Secuenciador entonces detiene de enviar seales de control. Luego el CPU se detiene.

Figura 1.16 Bsqueda y ejecucin de la instruccin STOP

1.7 Caractersticas del microcontrolador 68HC11 La familia Motorola 68HC11 (abreviado HC11 o 6811) es una familia de microcontroladores de Motorola, derivada del microprocesador Motorola 6800. Los microcontroladores 68HC11 se utilizan en mltiples aplicaciones en la industria. Tienen la Arquitectura de Von Neumann en la que la memoria de programa, de datos y de entrada/salida se direcciona en un nico mapa de memoria. Dentro de la familia de Motorola existen microcontroladores de 8 bits, 16 bits y 32 bits. El microcontrolador MC68HC11F1 es un microcontrolador de 8 bits de datos fabricado con tecnologa HCMOS ( CMOS con lo cual se consigue bajo consumo de potencia e inmunidad al ruido y HMOS para conseguir una alta velocidad de operacin ). Este microcontrolador contiene los siguientes bloques funcionales:

Figura 1.17: Diagrama de bloques del microcontrolador 68HC11F1 -Un conversor analgico-digital A/D de 8 canales, -Dos interfases de comunicacin una sincrona SPI y otra asncrona SCI, -Un temporizador de 16 bits con: 3 capturadores de entrada, Cuatro salidas de comparacin con salida Hardware, un Pre-escalador programable de cuatro etapas, un acumulador de Pulsos y un sistema de vigilancia watchdog. - Dos entradas para interrupcin externa. - Un mdulo UART para comunicacin serial asincnica - Un mdulo SPI para comunicacin serie sncrona -Un circuito de Interrupcin en tiempo real, un circuito de monitoreo del reloj y un circuito detector de cdigo ilegal.

-Tiene una RAM de 1024 bytes y una EEPROM de 512 bytes. La memoria RAM es voltil. -Siete puertos de E/S de 8 bits (puerto A, B, C, D, E, Fy G). Algunas lneas de estos puertos cumplen tambin otras funciones por ejemplo la lnea PE2 puede recibir una seal analgica que el microcontrolador convertir a una seal digital. En el siguiente dibujo se presenta el circuito integrado del microcontrolador 68HC11F1, donde se observa que tiene 68 patitas

Figura 1.18 Forma fsica del Microcontrolador 68HC11F1

El microcontrolador necesita de un cristal que proporcionar las seal de reloj E para que sincronice todas las operaciones del microcontrolador, donde: E = Fcristal /4

Figura 1.19 Circuito reloj del microcontrolador

A continuacin se presenta los microcontroladores de la familia 68HC11, sealando los tipos de memorias que contienen en su interior:

Figura 1.20 Familia del 68HC11 de Motorola

You might also like