DEPARTAMENTO DE ELECTRONICA Introducción a los microprocesadores / microcontroladores Capítulo 1 Análisis de un procesador simple El concepto de Arquitectura de computadoras se define como el funcionamiento, estructura y diseño de computadoras. Dentro de este término se engloban entre otros aspectos tales como: • Almacenamiento • Control • Interconexión • Temporización • Entrada/salida • Instrucciones • Direccionamiento Controlador Se denomina controlador al dispositivo que se emplea para el manejo o gobierno de uno o varios procesos. El controlador conceptualmente no ha cambiado con el tiempo, pero su implementación ha tenido diversas transformaciones a lo largo del mismo, aunque muchas de ellas se utilizan en la actualidad con mucha frecuencia ya sea por costo, confiabilidad o sencillez. Hubo transformaciones desde mecánicas, luego con elementos de lógica discreta, Relay, y en la década del ´60 aparecen los PLC (sigla de origen inglés para denominar al Controlador Lógico Programable); posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y elementos de E/S montados sobre una placa de circuito impreso. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 1 de 12 DEPARTAMENTO DE ELECTRONICA En la actualidad, todos estos elementos se encuentran incluidos en un chip que recibe el nombre de microcontrolador. La diferencia fundamental entre un microcontrolador y un microprocesador está en que el primero posee una cantidad limitada de procesos e instrucciones de lógica y cálculo pero un manejo versátil y poderoso de distintos periféricos, como ser varios puertos de entrada/salida, conversiones AD/DA, etc.; en cambio en el microprocesador estas características son a la inversa. Un microcontrolador dispone normalmente de los siguientes componentes: • Procesador o UCP (Unidad Central de Proceso). • Memoria RAM para Contener los datos. • Memoria para el programa tipo ROM/PROM/EPROM. • Líneas de E/S para comunicarse con el exterior. • Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.). • Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema. Las primeras computadoras consistían en máquinas compuestas por distintos elementos, cuya finalidad era ejecutar una serie de operaciones. Dichas operaciones se realizaban cableando dichos elementos (Hardware) y estos respondían generalmente de forma secuencial. Por ejemplo si consideramos como sistema una caldera, el controlador que regula el funcionamiento de la misma recibirá información de un sensor que mide constantemente la temperatura del agua, y cuando traspasa los límites prefijados, el controlador genera las señales adecuadas que accionaran los correspondientes Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 2 de 12 DEPARTAMENTO DE ELECTRONICA actuadores que intentan llevar el valor de la temperatura dentro del rango estipulado. En este caso el controlador esta llevando a cabo un control llamado a “lazo cerrado” pues toma información sobre una determinada variable que quiere controlar y luego ejecuta las acciones necesarias sobre los actuadores para que dicha variable llegue al valor preestablecido. Otro ejemplo sería el control de la secuencia de un semáforo, este tipo de control no posee sensores aunque en algunos casos pueden utilizarse, el encendido de las luces del semáforo siguen una determinada secuencia con tiempos prefijados para cada una de ellas. En este caso el controlador lleva a cabo un control a lazo abierto, pues actúa sobre la variable de salida sin tener en cuenta el estado en que se encuentra esta o sea sin tomar información del estado de la misma. Este ejemplo lo tomaremos como base para explicar la arquitectura de un microcontrolador rudimentario y a partir de él llegar a los utilizados en la actualidad.. El siguiente circuito se puede utilizar para controlar la secuencia de un semáforo. Vcc V Vcc L1 J SET Q J V K CLR R A SET Q J A Q K CLR SET Q R Q K CLR Q 1 Hz CK Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 3 de 12 DEPARTAMENTO DE ELECTRONICA El principio de funcionamiento de este circuito podría sintetizarse de la siguiente manera: En este caso inicialmente se activa la llave L1 seteandose el flip flop V encendiéndose la luz verde. verde Al primer pulso de CK el FF V por tener sus entradas JK en 01, su salida pasa a 0 apagándose la luz verde, como el FF A cambia de estado con cada pulso de CK, se enciende la luz Amarilla y el FF R al tener sus entradas en nivel bajo permanece en 0. Al segundo pulso de CK el FF V permanece en 0 por tener las mismas condiciones anteriores, el FF A vuelve a cambiar de estado por lo que se apaga la luz amarilla y como el FF R tiene sus entradas en 1 cambia de estado encendiéndose la luz roja. roja Al tercer pulso de CK el FF V repite las condiciones anteriores por lo que la luz verde permanece apagada, el FF A vuelve a cambiar de estado, no así el FF R por lo que quedan encendidas las luces amarilla y roja. roja Al siguiente pulso de CK los 3 FF quedan con la condición de cambiar de estado por lo que se enciende la luz verde y se apagan la amarilla y la roja volviendo a la condición inicial y a repetir la secuencia [ V – A – R – RA – V .....]. .....] Los tiempos que permanecen encendidas cada luz dependen de la frecuencia del CK que se utilice. Si se quisiera cambiar la secuencia de encendido de las luces o tener tiempos distintos para cada una de ellas se debería cambiar la estructura del circuito. Se debía hacer un cambio conceptual en los sistemas basados en comportamientos secuenciales para no tener que cambiar la estructura circuital del mismo cada vez que se quería modificar su secuencia. Para ello, el científico John von Neumann, propuso el concepto de programa almacenado (software), (software) el cual consiste en una serie de instrucciones guardadas en una memoria que se deben ejecutar ordenadamente. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 4 de 12 DEPARTAMENTO DE ELECTRONICA Basándonos en las consideraciones propuestas por von Neumann desarrollaremos un circuito que permita controlar la secuencia de encendido de las luces del semáforo. Dicho circuito podría representarse por el siguiente esquema: Contador Rst Q0 Qn Ck 10 Hz y a x b Decodificador de Instrucciones Memoria D0 D1 D2 An D3 D4 D5 D6 D7 A0 R A V S1 R A V S2 Para este circuito el contador utilizado es uno del tipo ascendente que incrementa su cuenta por cada pulso de CK que aparece en su entrada. Las salidas Q0 a Qn de este contador están conectadas a las entradas de dirección A0 a An de una memoria con palabras de 8 bits de dato D0 a D7 . Al ir contando el contador, la memoria se va recorriendo en forma secuencial desde la dirección 0 en adelante y esta entregará en sus salidas los datos que tenga almacenados en las distintas direcciones. Se puede observar que mientras el bit de datos D7 permanezca en 1, al contador le llegaran los pulsos de CK provistos por el generador correspondiente haciendo que el contador incremente su cuenta por lo que se procede a recorrer secuencialmente la memoria. En cambio si el bit de datos D7 permanece en 0 la compuerta inhabilita el paso de los pulsos de CK y el contador se detiene en el valor que estaba y por consiguiente la memoria quedará direccionada en una dirección fija. El bit de datos D6 es el que proporcionará el reset de la memoria que supondremos se logrará con un 1 en la entrada correspondiente, en este caso el contador volverá a la posición inicial 0 por lo que la memoria quedará direccionada también en la dirección 0 . Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 5 de 12 DEPARTAMENTO DE ELECTRONICA • Ejemplo 1 Si quisiéramos encender solamente las luces del semáforo S1 con una sola secuencia [ R – A – V ] y que luego este quede apagado, deberíamos escribir lo siguiente en la memoria: Dir 0 Dir 1 Dir 2 Dir 3 Dir 4 a D7 1 1 1 0 x b D6 0 0 0 0 x V2 D5 0 0 0 0 x A2 D4 0 0 0 0 x R2 D3 0 0 0 0 x V1 D2 0 0 1 0 x A1 D1 0 1 0 0 x R1 D0 1 0 0 0 x Inicialmente al estar la memoria posicionada “direccionada” en la dirección 0, el bit D0 enciende la luz roja y con D7 en 1 queda habilitada la entrada de CK, con el próximo pulso de CK la memoria pasa a la dirección 1encendiendo la luz amarilla mediante D1 , al siguiente pulso de CK se enciende la luz verde que está comandada por el bit D2 , por último con el próximo pulso de CK quedan apagadas todas las luces y como el bit D7 está en 0 queda inhabilitada la entrada de pulsos de CK por lo que el semáforo quedará permanentemente apagado. • Ejemplo 2 Si ahora quisiéramos encender los 2 semáforos simulando la secuencia de un cruce de calles deberíamos escribir en la memoria lo mostrado en la tabla. Dir 0 Dir 1 Dir 2 Dir 3 Dir 4 Dir 5 Dir 6 Dir 7 Dir 8 Dir 9 Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama a D7 1 1 1 1 1 1 1 1 1 b D6 0 0 0 0 0 0 0 0 1 V2 D5 1 0 0 0 0 0 0 0 1 A2 D4 0 1 0 0 0 0 0 1 0 R2 D3 0 0 1 1 1 1 1 1 0 V1 D2 0 0 0 0 1 0 0 0 0 A1 D1 0 0 0 1 0 1 0 0 0 Electrónica Digital II R1 D0 1 1 1 1 0 0 1 1 1 hoja 6 de 12 DEPARTAMENTO DE ELECTRONICA Como puede observarse desde la dirección 0 hasta la dirección 7 están escritos los datos que comandan una secuencia completa de los semáforos y en la dirección 8 al poner en 1 el bit D6 este resetea al contador permitiendo que la memoria se direccione en la posición 0 reiniciándose la secuencia, por lo que quedan funcionando los semáforos permanentemente. Como se ha mostrado, con sólo cambiar unos datos en la memoria se cambió la secuencia de encendido de las luces y si se quisiera mantener por mas tiempo alguna de las luces encendidas podríamos repetir los datos de la correspondiente dirección varias veces: por esto es que a diferencia del circuito anterior no hay que cambiar la estructura del mismo sino solamente algunos datos, demostrando su versatilidad. Este circuito básico que denominaremos “procesador” posee datos almacenados en las distintas direcciones de memoria que se van seleccionando secuencialmente, a esta propiedad la podríamos denominar “ejecución del programa” de control de secuencia del semáforo. A los bits D0 ... D5 los llamaremos bits de dato propiamente dicho, pues estos corresponden a la información que se va a utilizar en el semáforo. Los bits D7 y D6 representan lo que llamaremos las “instrucciones” del programa, estos dos bits ingresan al bloque que hemos denominado “Decodificador de instrucciones”, quien es el encargado de operar sobre el contador “Contador de Programa PC“, para que este direccione la memoria convenientemente. Como sólo posee 2 bits de instrucciones se lo denomina “procesador de 2 bits”. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 7 de 12 DEPARTAMENTO DE ELECTRONICA En la siguiente tabla se muestra el valor que pueden adoptar estos dos bits, la operación que realiza el circuito con su abreviatura: D7 D6 0 0 1 0 0 1 1 1 Operación Operación que se realiza Abreviaturas El contador de programa se bloquea, deteniéndose STOP HLT la ejecución del programa. PAUSA El contador de programa queda habilitado para continuar ejecutando el programa El contador de programa se resetea reiniciándose la ejecución del programa. El contador de programa se resetea reiniciándose la ejecución del programa. ALTO CONT RST RST Como se puede observar con dos bits se pueden tener cuatro posibles “instrucciones” que llamaos con las abreviaturas STOP CONTINUAR y RESET, pero como se observa se está desperdiciando una posibilidad debido a que el contador se resetea con el D6 en 1 sin importar el valor de D7. Cabe destacar que los bits D0 ... D5 sombreados en este caso, podrían adoptar cualquier valor, debido a que el tiempo que se va a estar ejecutando esta instrucción no depende del valor de período de CK sino al tiempo que tarda el contador de programa en resetearse que es mucho menor, pero se ha decidido escribir el próximo valor que adoptarán estos bits y por ende los semáforos para que estos no presenten aunque mas no sea por un tiempo pequeño una información errónea, este inconveniente será subsanado mas adelante. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 8 de 12 DEPARTAMENTO DE ELECTRONICA Modificando el circuito anterior, para no desperdiciar una opción y disponer de las cuatro instrucciones que nos permiten los dos bits, se puede obtener el circuito siguiente: Rst P5 P4 P3 P2 P1 P0 Q0 Contador de Pst Programa Ck Memoria D0 D1 D2 An D3 D4 D5 D6 D7 A0 Qn 1 Hz R A V S1 R A V S2 a x y z b Decodificador de Instrucciones Con este circuito se optimiza el “juego de instrucciones” detalladas anteriormente debido a que ahora tendremos la posibilidad de utilizar las cuatro posibles instrucciones que permite este procesador de dos bits. Para ello se ha modificado también el circuito “decodificador de instrucciones” y el Contador utilizado ahora tiene la propiedad de ser preseteable o sea que si se ingresa un valor determinado por las entradas P0 ... P5 y al activar el comando Pst dicho contador pasará a tener en sus salidas Q0 ... Qn, el valor prefijado y continuará la cuenta a partir de este o sea que la ejecución del programa dará un salto hasta la nueva dirección desde donde este proseguirá. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 9 de 12 DEPARTAMENTO DE ELECTRONICA El nuevo “set” de instrucciones correspondiente a este nuevo circuito será: D7 D6 Abreviaturas 0 0 STOP 1 0 CONT 0 1 RST 1 1 JMP • Operación que se realiza El contador de programa se bloquea, deteniéndose la ejecución del programa. El contador de programa queda habilitado para continuar ejecutando el programa El contador de programa (PC) se resetea reiniciándose la ejecución del programa. El “ PC ” se presetea con el valor a donde saltará y proseguirá con la ejecución del programa. Ejemplo 3 Veamos como se podría escribir un programa que realice inicialmente el encendido secuencial de cada una de las 6 luces y que luego los 2 semáforos queden titilando en amarillo. PC Dir 0 Dir 1 Dir 2 Dir 3 Dir 4 Dir 5 Dir 6 Dir 7 Dir 8 Dir 9 a D7 1 1 1 1 1 1 1 1 1 b D6 0 0 0 0 0 0 0 0 1 V2 D5 1 0 0 0 0 0 0 0 0 A2 D4 0 1 0 0 0 0 1 0 0 R2 D3 0 0 1 0 0 0 0 0 0 V1 D2 0 0 0 1 0 0 0 0 1 A1 D1 0 0 0 0 1 0 1 0 1 R1 D0 0 0 0 0 0 1 0 0 0 Como se observa desde la dirección 0 a la 5, se realiza el encendido secuencial de todas las luces del semáforo, durante el tiempo que el contador permanece en la dirección 6, los semáforos estarán en amarillo, mientras que cuando el contador esté en la dirección 7 los semáforos permanecerán apagados. Al llegar el contador al valor 8, se preseteará el mismo con el valor 6 “000110”, por lo que los semáforos pasarán nuevamente a amarillo. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 10 de 12 DEPARTAMENTO DE ELECTRONICA Cabe destacar que por un lapso muy breve el semáforo 1 encenderá conjuntamente las luces verde y amarilla lo cual es un estado no deseado de las luces del semáforo. Para que esto no ocurra modificaremos el circuito de la siguiente manera: Rst P5 P4 P3 P2 P1 P0 Q0 Contador de Pst Programa Qn Ck Q T Memoria D0 D1 D2 An D3 D4 D5 D6 D7 A0 1 Hz Vcc L A T C H Le R A V S1 R A V S2 FF Q x a y z b w Decodificador de Instrucciones Con este circuito se puede guardar en el “Latch” cuando se desee, el valor que se mostrará en los semáforos, y cuando se quiera direccionar el PC con el número correspondiente a la dirección a dónde saltar, este nuevo valor no se mostrará como dato de salida debido a que se inhabilita la posibilidad de posibilidad de “latchear” “latchear” el dato. Se agregó también al decodificador de instrucciones un divisor de pulsos de reloj por lo que cada incremento del “PC” al que llamaremos “ Ciclo de máquina “ le corresponderán varios pulsos de reloj ( en este caso 2 pulsos): esto nos dará la posibilidad de tener mas tiempo para hacer distintas cosas dentro de una misma instrucción. Cabe destacar que el decodificador de instrucciones es el encargado organizar para cada una de las instrucciones los pasos que debe seguir el procesador para ejecutar convenientemente esa instrucción, o sea en cada Ciclo de máquina debe primero leer la instrucción, luego si debe producir un salto bloquear la activación del Lctch, en caso contrario guardar el dato para ser mostrado y Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 11 de 12 DEPARTAMENTO DE ELECTRONICA dependiendo de la complejidad del procesador deberá realizar distintas operaciones antes de pasar a la próxima instrucción activando la entrada de cuenta del PC. El siguiente diagrama de tiempos muestra un ejemplo de esta técnica. CK t CM t Le t Instrucción CONT Reiniciar el programa Decodificar instrucción Guardar dato Incrmentar dirección Decodificar instrucción Guardar dato Incrmentar dirección Decodificar instrucción Saltar a otra dirección Decodificar instrucción Guardar dato Incrmentar dirección Decodificar instrucción Guardar dato Incrmentar dirección Decodificar instrucción PC t Instrucción Instrucción Instrucción JMP CONT RST Es importante destacar que para el análisis que estamos realizando sobre la arquitectura de un procesador no profundizaremos en la circuitería correspondiente al decodificador de instrucciones ni en los tiempos involucrados en el mismo sino en que este debe tomar la información proveniente de los bits de instrucción, decodificarla y realizar las acciones necesarias para que los datos se guarden, se realice un salto a una dirección determinada, etc. sin que haya ningún tipo de ambigüedad en la decisión a tomar, este análisis se realizará en el momento que sea necesario. Arquitectura de Microcontroladores Cap 1.doc Ing. Josè M. Salama Electrónica Digital II hoja 12 de 12