Arquitectura básica
Aunque
inicialmente todos los microcontroladores adoptaron la arquitectura clásica de
von Neumann, en el momento presente se impone la arquitectura Harvard.
La arquitectura de von Neumann se caracteriza por disponer
de una sola memoria principal donde se almacenan datos e instrucciones de forma
indistinta. A dicha memoria se accede a través de un sistema de buses único
(direcciones, datos y control) mientras que la arquitectura Harvard dispone de
dos memorias independientes, una que contiene sólo instrucciones y otra sólo
datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es
posible realizar operaciones de acceso (lectura o escritura) simultáneamente en
ambas memorias.
Los
microcontroladores PIC responden a la arquitectura Harvard.
El procesador o CPU
Es el elemento más
importante del microcontrolador y determina sus principales características,
tanto a nivel hardware como software.
Se encarga de
direccionar la memoria de instrucciones, recibir el código OP de la instrucción
en curso, su decodificación y la ejecución de la operación que implica la
instrucción, así como la búsqueda de los operandos y el almacenamiento del
resultado.
Existen tres
orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores
actuales.
CISC: Un gran número de procesadores usados en los
microcontroladores están basados en la filosofía CISC (Computadores de Juego de
Instrucciones Complejo). Disponen de más de 80 instrucciones máquina en su
repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo
muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que
ofrecen al programador instrucciones complejas que actúan como macros.
RISC: Tanto la industria de los computadores comerciales
como la de los microcontroladores están decantándose hacia la filosofía RISC
(Computadores de Juego de Instrucciones Reducido). En estos procesadores el
repertorio de instrucciones máquina es muy reducido y las instrucciones son
simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las
instrucciones permiten optimizar el hardware y el software del procesador.
SISC: En los microcontroladores destinados a aplicaciones
muy concretas, el juego de instrucciones, además de ser reducido, es
"específico", o sea, las instrucciones se adaptan a las necesidades
de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Específico).
Memoria
En los
microcontroladores la memoria de instrucciones y datos está integrada en el
propio circuito integrado. Una parte debe ser no volátil, tipo ROM, y se
destina a contener el programa de instrucciones que gobierna la aplicación.
Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las
variables y los datos.
Hay dos
peculiaridades que diferencian a los microcontroladores de los PC's:
No existen sistemas de almacenamiento masivo como disco duro
o disquetes.
Como el microcontrolador sólo se destina a una tarea en la
memoria de programa, sólo hay que almacenar un único programa de trabajo.
La memoria de
datos (RAM) en estos dispositivos es de poca capacidad pues sólo debe contener
las variables y los cambios de información que se produzcan en el transcurso
del programa. Por otra parte, como sólo existe un programa activo, no se
requiere guardar una copia del mismo en la RAM pues se ejecuta directamente
desde la memoria de programa (ROM).
El usuario de PC
está habituados a manejar Megabytes de memoria, pero los diseñadores con
microcontroladores trabajan con capacidades de memoria de programa de 512
bytes, 1K, 2K (hasta unos 64K) y de RAM de 20 bytes, 68 bytes, 512 bytes (hasta
unos 4K).
Según el tipo de
memoria de programa que dispongan los microcontroladores, la aplicación y
utilización de los mismos es diferente. Se describen las cinco versiones de
memoria no volátil que se pueden encontrar en los microcontroladores del mercado:
1º. ROM con máscara
Es una memoria no
volátil de sólo lectura cuyo contenido se graba durante la fabricación del
chip.
Máscara viene de
la forma cómo se fabrican los circuitos integrados. Estos se fabrican en obleas
que contienen varias decenas de chips. Estas obleas se obtienen a partir de
procesos fotoquímicos, donde se impregnan capas de silicio y oxido de silicio,
y según convenga, se erosionan al exponerlos a la luz. Como no todos los puntos
han de ser erosionados, se sitúa entre la luz y la oblea una máscara con
agujeros, de manera que donde deba incidir la luz, esta pasará. Con varios
procesos similares pero más complicados se consigue fabricar los transistores y
diodos que componen un circuito integrado.
El elevado coste
del diseño de la máscara sólo hace aconsejable el empleo de los
microcontroladores con este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.
2ª. OTP
El
microcontrolador contiene una memoria no volátil de sólo lectura
"programable una sola vez" por el usuario. OTP (One Time
Programmable). Es el usuario quien puede escribir el programa en el chip
mediante un sencillo grabador controlado por un programa desde un PC. La
versión OTP es recomendable cuando es muy corto el ciclo de diseño del
producto, o bien, en la construcción de prototipos y series muy pequeñas.
Tanto en este tipo
de memoria como en la EPROM, se suele usar la encriptación mediante fusibles
para proteger el código contenido.
3ª EPROM
Los
microcontroladores que disponen de memoria EPROM (Erasable Programmable Read
OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza,
como en el caso de los OTP, con un grabador gobernado desde un PC. Si,
posteriormente, se desea borrar el contenido, disponen de una ventana de
cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta
durante varios minutos. Las cápsulas son de material cerámico y son más caros
que los microcontroladores con memoria OTP que están hechos con material plástico.
Hoy día se utilizan poco, siendo sustituidas por memorias EEPROM o Flash.
4ª EEPROM
Se trata de
memorias de sólo lectura, programables y borrables eléctricamente EEPROM
(Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como
el borrado, se realizan eléctricamente desde el propio grabador y bajo el
control programado de un PC. Es muy cómoda y rápida la operación de grabado y
la de borrado. No disponen de ventana de cristal en la superficie.
Los
microcontroladores dotados de memoria EEPROM una vez instalados en el circuito,
pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho
circuito. Para ello se usan "grabadores en circuito" que confieren
una gran flexibilidad y rapidez a la hora de realizar modificaciones en el
programa de trabajo.
El número de veces
que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es
recomendable una reprogramación continua. Hoy día están siendo sustituidas por
memorias de tipo Flash.
Se va extendiendo
en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM
en los circuitos programables para guardar y modificar cómodamente una serie de
parámetros que adecuan el dispositivo a las condiciones del entorno.
Este tipo de
memoria es relativamente lenta.
5ª FLASH
Se trata de una
memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona
como una ROM y una RAM pero consume menos y es más pequeña.
A diferencia de la
ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor
densidad que la EEPROM.
La alternativa
FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de
memoria de programa no volátil. Es más veloz y tolera más ciclos de
escritura/borrado. Son idóneas para la enseñanza y la Ingeniería de diseño.
Las memorias
EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las
incorporan puedan ser reprogramados "en circuito", es decir, sin
tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo con
este tipo de memoria incorporado al control del motor de un automóvil permite
que pueda modificarse el programa durante la rutina de mantenimiento periódico,
compensando los desgastes y otros factores tales como la compresión, la
instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede
convertirse en una labor rutinaria dentro de la puesta a punto.
Puertos de Entrada y Salida
La principal
utilidad de las patillas que posee la cápsula que contiene un microcontrolador
es soportar las líneas de E/S que comunican al computador interno con los
periféricos exteriores y según los controladores de periféricos que posea cada
modelo de microcontrolador, se destinan a proporcionar el soporte a las señales
de entrada, salida y control.
Todos los
microcontroladores destinan algunas de sus patillas a soportar líneas de E/S de
tipo digital, esto es, todo o nada. Por lo general, estas líneas se agrupan de
ocho en ocho formando Puertos. Las líneas digitales de los Puertos pueden
configurarse como Entrada o como Salida cargando un 1 ó un 0 en el bit
correspondiente de un registro destinado a su configuración.
Reloj principal
Todos los
microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la
sincronización de todas las operaciones del sistema. Esta señal del reloj es el
motor del sistema y la que hace que el programa y los contadores avancen.
Generalmente, el
circuito de reloj está incorporado en el microcontrolador y sólo se necesitan
unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia
de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a
elementos pasivos o bien un resonador cerámico o una red R-C.
Aumentar la
frecuencia de reloj supone disminuir el tiempo en que se ejecutan las
instrucciones pero lleva aparejado un incremento del consumo de energía y de
calor generado.
Cada fabricante oferta numerosas
versiones de una arquitectura básica de microcontrolador. En algunas amplía las
capacidades de las memorias, en otras incorpora nuevos recursos, en otras
reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor
del diseñador es encontrar el modelo mínimo que satisfaga todos los
requerimientos de su aplicación. De esta forma, minimizará el coste, el
hardware y el software.
Los principales recursos específicos que incorporan los
microcontroladores son:
Temporizadores o
"Timers".
Perro guardián o
"Watchdog".
Protección ante fallo de
alimentación o "Brownout".
Estado de reposo o de bajo consumo.
Conversor A/D.
Conversor D/A.
Comparador analógico.
Modulador de anchura de impulsos o
PWM.
Puertos de comunicación.
Temporizadores o "Timers"
Se emplean para controlar periodos de tiempo (temporizadores) y para
llevar la cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a
continuación dicho valor se va incrementando o decrementando al ritmo de los
impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento
en el que se produce un aviso.
Cuando se desean contar acontecimientos que se materializan por cambios
de nivel o flancos en alguna de las patillas del microcontrolador, el
mencionado registro se va incrementando o decrementando al ritmo de dichos
impulsos.
Perro guardián o
"Watchdog"
Cuando un ordenador personal se bloquea por un fallo del software u otra
causa, se pulsa el botón del reset y se reinicializa el sistema.
En la mayoría de los casos y a diferencia de un ordenador personal, un
microcontrolador funciona sin el control de un supervisor y de forma continuada
las 24 horas del día y 365 días al año. El Perro guardián consiste en un
temporizador que, cuando se desborda y pasa por 0, provoca un reset
automáticamente en el sistema.
Se debe diseñar el programa de trabajo que controla la tarea de forma
que refresque o inicialice al Perro guardián antes de que provoque el reset. Si
falla el programa o se bloquea, el programa no refrescará al Perro guardián y,
al completar su temporización, provocará el reset del sistema.
Protección ante fallo de
alimentación o "Brownout"
Se trata de un circuito que resetea al microcontrolador cuando el
voltaje de alimentación (VDD) es inferior a un voltaje mínimo
("brownout"). Mientras el voltaje de alimentación sea inferior al de
brownout el dispositivo se mantiene reseteado, comenzando a funcionar
normalmente cuando sobrepasa dicho valor. Esto es muy útil para evitar datos
erróneos por transiciones y ruidos en la línea de alimentación.
Estado de reposo ó de bajo consumo
Son abundantes las situaciones reales de trabajo en que el
microcontrolador debe esperar, sin hacer nada, a que se produzca algún
acontecimiento externo que le ponga de nuevo en funcionamiento. Para ahorrar
energía, (factor clave en los aparatos portátiles), los microcontroladores
disponen de una instrucción especial (SLEEP en los PIC), que les pasa al estado
de reposo o de bajo consumo, en el cual los requerimientos de potencia son
mínimos. En dicho estado se detiene el reloj principal y se
"congelan" sus circuitos asociados, quedando sumido en un profundo
"sueño" el microcontrolador. Al activarse una interrupción ocasionada
por el acontecimiento esperado, el microcontrolador se despierta y reanuda su
trabajo. Para hacernos una idea, esta función es parecida a la opción de
Suspender en el menú para apagar el equipo (en aquellos PCs con administración
avanzada de energía).
Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital)
pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen
disponer de un multiplexor que permite aplicar a la entrada del CAD diversas
señales analógicas desde las patillas del circuito integrado.
Transforma los datos digitales obtenidos del procesamiento del
computador en su correspondiente señal analógica que saca al exterior por una
de las patillas de la cápsula. Existen muchos dispositivos de salida que
trabajan con señales analógicas.
Algunos modelos de microcontroladores disponen internamente de un
Amplificador Operacional que actúa como comparador entre una señal fija de
referencia y otra variable que se aplica por una de las patillas de la cápsula.
La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea
mayor o menor que la otra.
También hay modelos de microcontroladores con un módulo de tensión de
referencia que proporciona diversas tensiones de referencia que se pueden
aplicar en los comparadores.
Modulador de anchura de impulsos o
PWM
Son circuitos que proporcionan en su salida impulsos de anchura
variable, que se ofrecen al exterior a través de las patillas del encapsulado.
Resulta util para sistemas de control de potencia, como por ejemplo motores.
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse
con otros dispositivos externos, otros buses de microprocesadores, buses de
sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras
normas y protocolos. Algunos modelos disponen de recursos que permiten directamente
esta tarea, entre los que destacan:
UART, adaptador de comunicación
serie asíncrona.
USART, adaptador de comunicación
serie síncrona y asíncrona
Puerto paralelo esclavo para poder
conectarse con los buses de otros microprocesadores.
USB (Universal Serial Bus), el
conocido bus serie para los PC.
Bus I2C, que es un interfaz serie
de dos hilos desarrollado por Philips.
Interface SPI, un puerto serie
síncrono.
CAN (Controller Area Network), para
permitir la adaptación con redes de conexionado multiplexado desarrollado
conjuntamente por Bosch e Intel para el cableado de dispositivos en
automóviles. En EE.UU. se usa el J185O.
TCP/IP, ya existen
microcontroladores con un adaptador de comunicación para este protocolo.
Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron
diseñados para simplificar la circuitería que supone un bus paralelo de 8
líneas dentro de un televisor, así como para librar de la carga que supone una
cantidad ingente de cables en un vehículo.
Arquitectura von-Neumman
El diseño de una arquitectura Von Neumann es más simple que la
arquitectura Harvard más moderna, que también es un sistema de programa almacenado, pero tiene un conjunto dedicado de direcciones y buses de datos para leer datos desde memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de datos para ir a buscar instrucciones.
Un computador digital de programa almacenado es una que mantiene sus
instrucciones de programa, así como sus datos, en
memoria de acceso aleatorio (RAM) de
lectura-escritura. Las computadoras de programa almacenado representaron un avance sobre los ordenadores controlados por programas de la década de 1940, como la
Colossus y la
ENIAC, que fueron programadas por ajustando interruptores e insertando parches, conduciendo datos de la ruta y para controlar las señales entre las distintas unidades funcionales. En la gran mayoría de las computadoras modernas, se utiliza la misma memoria tanto para datos como para instrucciones de programa, y la distinción entre Von Neumann vs. Harvard se aplica a la arquitectura de memoria
caché, pero no a la memoria principal.