Anda di halaman 1dari 56

Introduccin

Desde la invencin del circuito integrado, el desarrollo


constante de la electrnica digital ha dado lugar a dispositivos
cada vez ms complejos. Entre ellos los microprocesadores y los
microcontroladores.

El objetivo principal de esta prctica es que el alumno logre


un entendimiento bsico de los microcontroladores y obtenga
los conocimientos necesarios para la programacin de estos
dispositivos y para el diseo de sistemas digitales y/o analgicos
basados en ellos.

Se pretende explicar conceptos cuya vigencia se mantendr


en un periodo mas o menos largo, centrndose en la familia de
microcontroladores PIC16, concretamente en el PIC16F84, por
que existe mucha informacin, es fcil de encontrar y barato.
Limitarse a un tipo de PIC no se considera importante, ya que si
se comprende bien un microcontrolador, los dems pueden
aprenderse con facilidad partiendo del primero. Adems, el
estudio de un microcontrolador particular elimina la posibilidad
de una presentacin superficial o confusa y permite enfrentarse
a problemas reales en la prctica.

Para estar al tanto de las innovaciones se recomienda que se


mantenga en contacto con la pagina web de Microchip
Technology, http://www.microchip.com, solo as se podr
obtener un conocimiento completo y actualizado, tanto de los
aspectos que aqu se tratan, como de los nuevos que vayan
surgiendo.

La forma de estructurar el tema responde a la experiencia de


que, para quien por primera vez estudia microcontroladores,
resulta ms sencillo aprender primero lo referente a la
construccin interna del dispositivo y la arquitectura general de
los microcontroladores y una vez entendido pasar entonces a los
detalles.

Que es un microcontrolador
Los microcontroladores estn conquistando el mundo. Estn
presentes en nuestro trabajo, en nuestra casa y en nuestra
vida, en general. Se pueden encontrar controlando el
funcionamiento de los ratones y teclados de los computadores,
en los telfonos, en los hornos microondas y los televisores de
nuestro hogar. Pero la invasin acaba de comenzar y el siglo
XXI ser testigo de la conquista masiva de estos diminutos
computadores, que gobernarn la mayor parte de los aparatos
que fabriquemos y usamos los humanos.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.3

Controlador y microcontrolador

Recibe el nombre de controlador el dispositivo que se emplea


para el gobierno de uno o varios procesos. Por ejemplo, el
controlador que regula el funcionamiento de un horno elctrico
dispone de un sensor que mide constantemente su temperatura
interna y acta sobre las resistencias para mantener la
temperatura dentro del rango establecido.

Aunque el concepto de controlador ha permanecido invariable


a travs del tiempo, su implementacin fsica ha variado
frecuentemente. Hace tres dcadas, los controladores
electrnicos se construan exclusivamente con componentes de
lgica discreta, posteriormente se emplearon los
microprocesadores, que se rodeaban con chips de memoria y
E/S sobre una tarjeta de circuito impreso. En la actualidad,
todos los elementos del controlador se han podido incluir en un
solo circuito integrado, el cual recibe el nombre de
microcontrolador. Realmente consiste en un sencillo pero
completo ordenador contenido en un circuito integrado.
Un microcontrolador es un circuito integrado de alta escala de
integracin que incorpora la mayor parte de los elementos que
configuran un controlador y que contiene todos los componentes
fundamentales de un ordenador, aunque de limitadas
prestaciones y que se suele destinar a gobernar una sola tarea.

En su memoria slo reside un programa que controla en


funcionamiento de una tarea determinada, sus lneas de
entrada/salida se conectan a los sensores y actuadores del
dispositivo a controlar y, debido a su pequeo tamao, suele ir
integrado en el propio dispositivo al que gobierna.

Un microcontrolador dispone normalmente de los siguientes


componentes:

Procesador o CPU (Unidad Central de Proceso).


Memoria RAM para contener los datos.
Memoria para el programa tipo
ROM/EPROM/EEPROM/Flash.
Lneas de E/S para comunicarse con el exterior.
Diversos mdulos para el control de perifricos
(temporizadores, puertos serie y paralelo, CAD:
Conversores Analgico/Digital, CDA: Conversores
Digital/Analgico, etc.).
Generador de impulsos de reloj que sincronizan el
funcionamiento de todo el sistema.

Los productos que para su regulacin incorporan un


microcontrolador disponen de las siguientes ventajas:

Aumento de prestaciones: un mayor control sobre un


determinado elemento representa una mejora considerable
en el mismo.
Aumento de la fiabilidad: al reemplazar el
microcontrolador por un elevado nmero de elementos
disminuye el riesgo de averas y se precisan menos
ajustes.
Reduccin del tamao en el producto acabado: La
integracin del microcontrolador en un circuito integrado
disminuye el volumen, la mano de obra y los stocks.
Mayor flexibilidad: las caractersticas de control estn
programadas por lo que su modificacin slo necesita
cambios en el programa de instrucciones.

Debido a su reducido tamao es posible montar el


controlador en el propio dispositivo al que gobierna. En este
caso el controlador recibe el nombre de controlador empotrado
(embedded controller).

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.4

Aplicaciones de los microcontroladores


Si slo se dispusiese de un modelo de microcontrolador, ste
debera tener muy potenciados todos sus recursos para poderse
adaptar a las exigencias de las diferentes aplicaciones. Esta
potenciacin supondra en muchos casos un despilfarro. En la
prctica cada fabricante de microcontroladores oferta un
elevado nmero de modelos diferentes, desde los ms sencillos
hasta los ms poderosos. Es posible seleccionar la capacidad de
las memorias, el nmero de lneas de E/S, la cantidad y
potencia de los elementos auxiliares, la velocidad de
funcionamiento, etc. Por todo ello, un aspecto muy destacado
del diseo es la seleccin del microcontrolador a utilizar.

Cada vez existen ms productos que incorporan un


microcontrolador con el fin de aumentar sustancialmente sus
prestaciones, reducir su tamao y coste, mejorar su fiabilidad y
disminuir el consumo.

Algunos fabricantes de microcontroladores superan el milln


de unidades de un modelo determinado producidas en una
semana. Este dato puede dar una idea de la masiva utilizacin
de estos componentes.

Los microcontroladores estn siendo empleados en multitud


de sistemas presentes en nuestra vida diaria, como pueden ser
juguetes, horno microondas, frigorficos, televisores,
ordenadores, impresoras, mdems, el sistema de arranque de
nuestro coche, etc. Y otras aplicaciones con las que
seguramente no estaremos tan familiarizados como
instrumentacin electrnica, control de sistemas en una nave
espacial, etc. Una aplicacin tpica podra emplear varios
microcontroladores para controlar pequeas partes del sistema.
Estos pequeos controladores podran comunicarse entre ellos y
con un procesador central, probablemente ms potente, para
compartir la informacin y coordinar sus acciones, como, de
hecho, ocurre ya habitualmente en cualquier PC.

Los microcontroladores se encuentran por todas partes:

Sistemas de comunicacin: en grandes automatismos


como centrales y en tlefonos fijos, mviles, fax, etc.
Electrodomsticos: lavadoras, hornos, frigorficos,
lavavajillas, batidoras, televisores, vdeos, reproductores
DVD, equipos de msica, mandos a distancia, consolas,
etc.
Industria informtica: Se encuentran en casi todos los
perifricos; ratones, teclados, impresoras, escner, etc.
Automocin: climatizacin, seguridad, ABS, etc.
Industria: Autmatas, control de procesos, etc
Sistemas de supervisin, vigilancia y alarma: ascensores,
calefaccin, aire acondicionado, alarmas de incendio, robo,
etc.
Otros: Instrumentacin, electromedicina, tarjetas
(smartcard), sistemas de navegacin, etc.

La distribucin de las ventas segn su aplicacin es la


siguiente:

Una tercera parte se absorbe en las aplicaciones


relacionadas con los ordenadores y sus perifricos.
La cuarta parte se utiliza en las aplicaciones de consumo
(electrodomsticos, juegos, TV, vdeo, etc.)
El 16% de las ventas mundiales se destin al rea de las
comunicaciones.
Otro 16% fue empleado en aplicaciones industriales.
El resto de los microcontroladores vendidos en el mundo,
aproximadamente un 10% fueron adquiridos por las
industrias de automocin.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.5

Tambin los modernos microcontroladores de 32 bits van


afianzando sus posiciones en el mercado, siendo las reas de
ms inters el procesamiento de imgenes, las comunicaciones,
las aplicaciones militares, los procesos industriales y el control
de los dispositivos de almacenamiento masivo de datos.

Ejemplo de aplicacin de un microcontrolador en el


automvil:
DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.6

El mercado de los microcontroladores


Aunque en el mercado de la microinformtica la mayor
atencin la acaparan los desarrollos de los microprocesadores,
lo cierto es que se venden cientos de microcontroladores por
cada uno de aqullos.

Produccin mundial de microcontroladores por ao:


Existe una gran diversidad de microcontroladores. Quiz la
clasificacin ms importante sea entre microcontroladores de 4,
8, 16 32 bits. Aunque las prestaciones de los
microcontroladores de 16 y 32 bits son superiores a los de 4 y 8
bits, la realidad es que los microcontroladores de 8 bits dominan
el mercado y los de 4 bits se resisten a desaparecer. La razn
de esta tendencia es que los microcontroladores de 4 y 8 bits
son apropiados para la gran mayora de las aplicaciones, lo que
hace absurdo emplear micros ms potentes y
consecuentemente ms caros. Uno de los sectores que ms tira
del mercado del microcontrolador es el mercado automovilstico.
De hecho, algunas de las familias de microcontroladores
actuales se desarrollaron pensando en este sector, siendo
modificadas posteriormente para adaptarse a sistemas ms
genricos. El mercado del automvil es adems uno de los ms
exigentes: los componentes electrnicos deben operar bajo
condiciones extremas de vibraciones, choques, ruido, etc. y
seguir siendo fiables. El fallo de cualquier componente en un
automvil puede ser el origen de un accidente.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.7

En cuanto a las tcnicas de fabricacin, cabe decir que


prcticamente la totalidad de los microcontroladores actuales se
fabrican con tecnologa CMOS (Complementary Metal Oxide
Semiconductor). Esta tecnologa supera a las tcnicas anteriores
por su bajo consumo y alta inmunidad al ruido.

Ms adelante, en el apartado Qu microcontrolador


emplear? se mostrar una tabla con las distintas familias de
algunos fabricantes con su direccin en Internet y algunos
datos.

Recursos comunes
Al estar todos los microcontroladores en un solo circuito
integrado, su estructura fundamental y sus caractersticas
bsicas son muy parecidas. Todos deben disponer de los
bloques esenciales Procesador, memoria de datos y de
instrucciones, lneas de E/S, oscilador de reloj y mdulos
controladores de perifricos. Sin embargo, cada fabricante
intenta enfatizar los recursos ms idneos para las aplicaciones
a las que se destinan preferentemente.

En este apartado se hace un recorrido de todos los recursos


que se hallan en todos los microcontroladores describiendo las
diversas alternativas y opciones que pueden encontrarse segn
el modelo seleccionado.

Arquitectura bsica
Aunque inicialmente todos los microcontroladores adoptaron
la arquitectura clsica de von Neumann, en el momento
presente se impone la arquitectura Harvard.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.9

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
travs de un sistema de buses nico (direcciones, datos y
control) mientras que la arquitectura Harvard dispone de dos
memorias independientes, una que contiene slo instrucciones y
otra slo datos. Ambas disponen de sus respectivos sistemas de
buses de acceso y es posible realizar operaciones de acceso
(lectura o escritura) simultneamente en ambas memorias.

Los microcontroladores PIC responden a la arquitectura


Harvard.

El procesador o CPU

Es el elemento ms importante del microcontrolador y


determina sus principales caractersticas, tanto a nivel hardware
como software.

Se encarga de direccionar la memoria de instrucciones,


recibir el cdigo OP de la instruccin en curso, su decodificacin
y la ejecucin de la operacin que implica la instruccin, as
como la bsqueda 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 nmero de procesadores usados en los


microcontroladores estn basados en la filosofa CISC
(Computadores de Juego de Instrucciones Complejo).
Disponen de ms de 80 instrucciones mquina en su
repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecucin. Una
ventaja de los procesadores CISC es que ofrecen al
programador instrucciones complejas que actan como
macros.

RISC: Tanto la industria de los computadores comerciales


como la de los microcontroladores estn decantndose
hacia la filosofa RISC (Computadores de Juego de
Instrucciones Reducido). En estos procesadores el
repertorio de instrucciones mquina 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, adems de ser
reducido, es "especfico", o sea, las instrucciones se
adaptan a las necesidades de la aplicacin prevista. Esta
filosofa se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Especfico).

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.10

Memoria

En los microcontroladores la memoria de instrucciones y


datos est integrada en el propio circuito integrado. Una parte
debe ser no voltil, tipo ROM, y se destina a contener el
programa de instrucciones que gobierna la aplicacin. Otra parte
de memoria ser tipo RAM, voltil, y se destina a guardar las
variables y los datos.

Hay dos peculiaridades que diferencian a los


microcontroladores de los PC's:

1. No existen sistemas de almacenamiento masivo como


disco duro o disquetes.
2. Como el microcontrolador slo se destina a una tarea en la
memoria de programa, slo hay que almacenar un nico
programa de trabajo.

La memoria de datos (RAM) en estos dispositivos es de poca


capacidad pues slo debe contener las variables y los cambios
de informacin que se produzcan en el transcurso del programa.
Por otra parte, como slo 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 diseadores 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).

Segn el tipo de memoria de programa que dispongan los


microcontroladores, la aplicacin y utilizacin de los mismos es
diferente. Se describen las cinco versiones de memoria no
voltil que se pueden encontrar en los microcontroladores del
mercado:

1. ROM con mscara

Es una memoria no voltil de slo lectura cuyo contenido se


graba durante la fabricacin del chip.

Mscara viene de la forma cmo se fabrican los circuitos


integrados. Estos se fabrican en obleas que contienen varias
decenas de chips. Estas obleas se obtienen a partir de procesos
fotoqumicos, donde se impregnan capas de silicio y oxido de
silicio, y segn convenga, se erosionan al exponerlos a la luz.
Como no todos los puntos han de ser erosionados, se sita
entre la luz y la oblea una mscara con agujeros, de manera
que donde deba incidir la luz, esta pasar. Con varios procesos
similares pero ms complicados se consigue fabricar los
transistores y diodos que componen un circuito integrado.

El elevado coste del diseo de la mscara slo 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 voltil de slo


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 versin OTP es recomendable
cuando es muy corto el ciclo de diseo del producto, o bien, en
la construccin de prototipos y series muy pequeas.

Tanto en este tipo de memoria como en la EPROM, se suele


usar la encriptacin mediante fusibles para proteger el cdigo
contenido.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.11

3 EPROM

Los microcontroladores que disponen de memoria EPROM


(Erasable Programmable Read OnIy Memory) pueden borrarse y
grabarse muchas veces. La grabacin 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 cpsulas
son de material cermico y son ms caros que los
microcontroladores con memoria OTP que estn hechos con
material plstico. Hoy da se utilizan poco, siendo sustituidas por
memorias EEPROM o Flash.

4 EEPROM

Se trata de memorias de slo lectura, programables y


borrables elctricamente EEPROM (Electrical Erasable
Programmable Read OnIy Memory). Tanto la programacin
como el borrado, se realizan elctricamente desde el propio
grabador y bajo el control programado de un PC. Es muy
cmoda y rpida la operacin 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 nmero de veces que puede grabarse y borrarse una


memoria EEPROM es finito, por lo que no es recomendable una
reprogramacin continua. Hoy da estn siendo sustituidas por
memorias de tipo Flash.

Se va extendiendo en los fabricantes la tendencia de incluir


una pequea zona de memoria EEPROM en los circuitos
programables para guardar y modificar cmodamente una serie
de parmetros que adecuan el dispositivo a las condiciones del
entorno.

Este tipo de memoria es relativamente lenta.

5 FLASH

Se trata de una memoria no voltil, de bajo consumo, que se


puede escribir y borrar. Funciona como una ROM y una RAM
pero consume menos y es ms pequea.
A diferencia de la ROM, la memoria FLASH es programable en
el circuito. Es ms rpida 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
voltil. Es ms veloz y tolera ms ciclos de escritura/borrado.
Son idneas para la enseanza y la Ingeniera de diseo.

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 automvil
permite que pueda modificarse el programa durante la rutina de
mantenimiento peridico, compensando los desgastes y otros
factores tales como la compresin, la instalacin de nuevas
piezas, etc. La reprogramacin del microcontrolador puede
convertirse en una labor rutinaria dentro de la puesta a punto.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.12

Puertos de Entrada y Salida

La principal utilidad de las patillas que posee la cpsula que


contiene un microcontrolador es soportar las lneas de E/S que
comunican al computador interno con los perifricos exteriores y
segn los controladores de perifricos que posea cada modelo
de microcontrolador, se destinan a proporcionar el soporte a las
seales de entrada, salida y control.

Todos los microcontroladores destinan algunas de sus patillas


a soportar lneas de E/S de tipo digital, esto es, todo o nada. Por
lo general, estas lneas se agrupan de ocho en ocho formando
Puertos. Las lneas 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 configuracin.

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 sincronizacin de
todas las operaciones del sistema. Esta seal 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 slo 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 cermico 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 energa y de calor generado.

Recursos especiales
Cada fabricante oferta numerosas versiones de una
arquitectura bsica de microcontrolador. En algunas ampla las
capacidades de las memorias, en otras incorpora nuevos
recursos, en otras reduce las prestaciones al mnimo para
aplicaciones muy simples, etc. La labor del diseador es
encontrar el modelo mnimo que satisfaga todos los
requerimientos de su aplicacin. De esta forma, minimizar el
coste, el hardware y el software.

Los principales recursos especficos que incorporan los


microcontroladores son:

Temporizadores o "Timers".
Perro guardin o "Watchdog".
Proteccin ante fallo de alimentacin o "Brownout".
Estado de reposo o de bajo consumo.
Conversor A/D.
Conversor D/A.
Comparador analgico.
Modulador de anchura de impulsos o PWM.
Puertos de comunicacin.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.13

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 continuacin dicho valor se va incrementando o
decrementando al ritmo de los impulsos de reloj o algn
mltiplo 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 guardin o "Watchdog"

Cuando un ordenador personal se bloquea por un fallo del


software u otra causa, se pulsa el botn del reset y se
reinicializa el sistema.

En la mayora 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 da y 365 das
al ao. El Perro guardin consiste en un temporizador que,
cuando se desborda y pasa por 0, provoca un reset
automticamente en el sistema.

Se debe disear el programa de trabajo que controla la tarea


de forma que refresque o inicialice al Perro guardin antes de
que provoque el reset. Si falla el programa o se bloquea, el
programa no refrescar al Perro guardin y, al completar su
temporizacin, provocar el reset del sistema.
Proteccin ante fallo de alimentacin o "Brownout"

Se trata de un circuito que resetea al microcontrolador


cuando el voltaje de alimentacin (VDD) es inferior a un voltaje
mnimo ("brownout"). Mientras el voltaje de alimentacin 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 errneos por
transiciones y ruidos en la lnea de alimentacin.

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 algn acontecimiento externo que le ponga de nuevo
en funcionamiento. Para ahorrar energa, (factor clave en los
aparatos porttiles), los microcontroladores disponen de una
instruccin especial (SLEEP en los PIC), que les pasa al estado
de reposo o de bajo consumo, en el cual los requerimientos de
potencia son mnimos. En dicho estado se detiene el reloj
principal y se "congelan" sus circuitos asociados, quedando
sumido en un profundo "sueo" el microcontrolador. Al activarse
una interrupcin ocasionada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo. Para
hacernos una idea, esta funcin es parecida a la opcin de
Suspender en el men para apagar el equipo (en aquellos PCs
con administracin avanzada de energa).

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.14

Conversor A/D (CAD)

Los microcontroladores que incorporan un Conversor A/D


(Analgico/Digital) pueden procesar seales analgicas, tan
abundantes en las aplicaciones. Suelen disponer de un
multiplexor que permite aplicar a la entrada del CAD diversas
seales analgicas desde las patillas del circuito integrado.

Conversor D/A (CDA)


Transforma los datos digitales obtenidos del procesamiento
del computador en su correspondiente seal analgica que saca
al exterior por una de las patillas de la cpsula. Existen muchos
dispositivos de salida que trabajan con seales analgicas.

Comparador analgico

Algunos modelos de microcontroladores disponen


internamente de un Amplificador Operacional que acta como
comparador entre una seal fija de referencia y otra variable
que se aplica por una de las patillas de la cpsula. La salida del
comparador proporciona un nivel lgico 1 0 segn una seal
sea mayor o menor que la otra.

Tambin hay modelos de microcontroladores con un mdulo


de tensin 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 travs de las
patillas del encapsulado. Resulta util para sistemas de control de
potencia, como por ejemplo motores.

Puertos de comunicacin

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 comunicacin serie asncrona.


USART, adaptador de comunicacin serie sncrona y
asncrona
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 sncrono.
CAN (Controller Area Network), para permitir la adaptacin
con redes de conexionado multiplexado desarrollado
conjuntamente por Bosch e Intel para el cableado de
dispositivos en automviles. En EE.UU. se usa el J185O.
TCP/IP, ya existen microcontroladores con un adaptador de
comunicacin para este protocolo.

Tanto el I2C en televisores, como el Bus CAN en automviles,


fueron diseados para simplificar la circuitera que supone un
bus paralelo de 8 lneas dentro de un televisor, as como para
librar de la carga que supone una cantidad ingente de cables en
un vehculo.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.15

Herramientas de desarrollo
Las herramientas de desarrollo estn formadas por un
conjunto de programas e interfaces que permiten realizar los
proyectos de la forma ms eficiente posible.

Las principales herramientas de ayuda al desarrollo de


sistemas basados en microcontroladores se describen a
continuacin

Ensamblador. La programacin en lenguaje ensamblador


puede resultar un tanto ardua para el principiante, pero permite
desarrollar programas muy eficientes, ya que otorga al
programador el dominio absoluto del sistema. Los fabricantes
suelen proporcionar el programa ensamblador de forma gratuita
y en cualquier caso siempre se puede encontrar una versin
gratuita para los microcontroladores ms populares.
Compilador. La programacin en un lenguaje de alto nivel
(como C o Basic) permite disminuir el tiempo de desarrollo de
un producto y si adems est familiarizado con C o Basic es una
buena opcin. No obstante, cuando el compilador convierta el
cdigo del programa a un lenguaje ensamblado, cada lnea de
cdigo del programa en lenguaje de alto nivel habr generado
bastantes ms lneas de cdigo en lenguaje ensamblador,
normalmente en una relacin de uno a tres. Esto significa que
para utilizar un lenguaje de alto nivel necesitaremos un
microcontrolador con una capacidad de memoria relativamente
grande.

Si el programa que estamos desarrollando necesita utilizar


nmeros con decimales, o con notacin cientfica o se utilizan
operaciones complejas, como pueden ser las trigonomtricas, es
casi obligado utilizar un lenguaje de alto nivel. Pero si lo que se
va a hacer es manipular bits en registros, entradas, salidas y
clculos sencillos, el lenguaje ensamblado es la mejor opcin.

Las versiones ms potentes de compiladores suelen ser muy


caras, aunque para los microcontroladores ms populares
pueden encontrarse versiones demo limitadas e incluso
compiladores gratuitos.

Como compilador gratuito puede utilizarse el compilador C


GNU, que es un compilador C de cdigo abierto tan bueno como
los compiladores C comerciales pero que sin embargo tiene un
proceso de instalacin que no es sencillo. Adems hay que
comprobar que arquitecturas de microcontrolador soporta.
Algunas de las cuales son MSP430 de TI, AVR de Atmel y HC11
de Motorola, (ver www.gnu.org y www.fsf.org). Tambin puede
conseguirse un compilador C GNU en binario ya construido. Por
ejemplo para la arquitectura ARM puede conseguirse un
compilador C GNU binario para win32 desde www.gnuarm.com,
que trabaja con lnea de comandos e incluye un depurador de
cdigo. Para obtener un entorno de desarrollo (IDE) para
windows que pueda utilizarse con el conjunto de herramientas
GNU puede utilizarse la aplicacin VIDE, que puede conseguirse
en www.objectcentral.com/vide.htm.
Simulador. Se trata de software que es capaz de ejecutar en
un PC programas realizados para el microcontrolador. Los
simuladores permiten tener un control absoluto sobre la
ejecucin de un programa, siendo ideales para la depuracin de
los mismos. Su gran inconveniente es que es difcil simular la
entrada y salida de datos del microcontrolador. Tampoco
cuentan con los posibles ruidos en las entradas, pero, al menos,
permiten el paso fsico de la implementacin de un modo ms
seguro y menos costoso, puesto que ahorraremos en
grabaciones de chips para la prueba in-situ.

Placas de evaluacin. Se trata de pequeos sistemas con


un microcontrolador ya montado y que suelen conectarse a un
PC desde el que se cargan los programas que se ejecutan en el
microcontrolador. Las placas suelen incluir visualizadores LCD,
teclados, LEDs, fcil acceso a los pines de E/S, etc. Pueden
incluir un programa de control o sistema operativo que recibe el
nombre de programa monitor. El programa monitor de algunas
placas de evaluacin, aparte de permitir cargar programas y
datos en la memoria del microcontrolador, puede permitir en
cualquier momento realizar ejecucin paso a paso, monitorizar
el estado del microcontrolador o modificar los valores
almacenados los registros o en la memoria.

Emuladores en circuito. Se trata de un instrumento que se


coloca entre el PC anfitrin y el zcalo de la tarjeta de circuito
impreso donde se alojar el microcontrolador definitivo. El
programa es ejecutado desde el PC, pero para la placa de la
aplicacin es como si lo hiciese el mismo microcontrolador que
luego ir en el zcalo. Presenta en pantalla toda la informacin
tal y como luego suceder cuando se coloque la cpsula.

Programador. Es un dispositivo que conectado a un PC


permite grabar en el microcontrolador el programa desarrollado.
Algunos puede fabricarlos uno mismo (verProgramador PIC y
EEPROM JDM y Programador JDMD) y resultan muy econmicos.
Tambin existe software gratuito para programar no ya solo
microcontroladores sino tambin otros dispositivos, como
memorias (ver Programacin de PIC con ic-prog). Actualmente
se tiende a realizar la programacin en la propia placa de
utilizacin mediante ISP, In System Programmation o ICSP, In
Circuit Serial Programation. De esta manera se puede
programar al microcontrolador una vez est montado en la placa
del circuito utilizando una conexin de dos, tres o cuatro
terminales. Para utilizar esta tcnica se utiliza un programador
que suele ser muy sencillo y que en algunos casos puede
construir uno mismo.

Otra posibilidad es utilizar un "cargador de arranque", muy


util en la etapa de desarrollo de un programa. Un cargador de
arranque es un pequeo programa en el microcontrolador que
est montado en la placa del circuito que se est desarrollando
y que puede comunicarse con las herramientas de desarrollo
(que se van a utilizar para escribir el cdigo del programa de la
aplicacin) a travs de un enlace serie, como puede ser RS232,
USB, I2C o un bus CAN.

El programa cargador de arranque debe interpretar


comandos para leer, grabar y borrar la parte de memoria
reservada para el programa de la aplicacin. Cuando se desea
verificar el programa que se est desarrollando se inicia la
comunicacin con el programa cargador de arranque, que carga
el cdigo de programa en la memoria de programa del
microcontrolador. Despus el programa cargador de arranque
transfiere el control al programa cargado y entonces se puede
ejecutar y verificar el programa cargado. Esta operacin de
carga y prueba puede realizarse tantas veces como sea
necesario.

Los requerimientos que tiene que cumplir el microcontrolador


a utilizar son:

Suficiente memoria de programa para alojar tanto el


cargador de arranque como el programa en desarrollo.
Que el microcontrolador permita que pueda modificarse la
memoria de programa por si mismo.
Un puerto serie para la comunicacin.

Por ejemplo, el microcontrolador LPC210x de la casa Philips


incluye un cargador de arranque serie integrado que est
ubicado en los 8 K primeros de su memoria Flash. Estndo el
terminal P0.14 a masa y generndo un reset el LPC210x ejecuta
el programa cargador de arranque. Utilizndo un programa para
PC gratuito de la casa Philips y un cable serie conectado entre el
PC y la UART del microcontrolador LPC210x (a travs de un
conversor TTL/RS232 como el c.i. MAX232) se puede realizar la
programacin del microcontrolador.

Tambin resulta interesante el interface JTAG (que por


ejemplo posee el microcontrolador LPC210x), que puede
utilizarse para programar el dispositivo y para depurar un
programa durante su ejecucin en el microcontrolador. Para
utilizar el interface JTAG se necesita un mdulo interfaz de
depuracin JTAG que se conecta con entre el sistema de
desarrollo del microcontrolador y el PC que lo aloja. En el
mercado existen distintos mdulos interfaces JTAG comerciales
pero tambi se pueden encontrar otros en Internet.

Paquetes IDE

Actualmente existen paquetes de software denominados


"Entornos de Desarrollo Integrado", IDE, que suelen funcionar
bajo Windows y que incluyen editores de texto para el
ensamblador o el compilador, permiten la simulacin del
programa y tambin pueden integrar el control de emuladores y
programadores de dispositivos. Ejemplos de estos entornos de
desarrollo son MPLAB de Microchip (ver MPLAB-IDE v6.60) que
permite programar en lenguaje ensamblado y PCWH de la casa
CCS que incluye un compilador C para los microcontroladores
PIC de Microchip. MPLAB es gratuito y muy bueno, incluye un
editor, un ensamblador y un simulador y tambin puede
trabajar con compiladores y emuladores de otros fabricantes.

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.16

Qu microcontrolador emplear?
Elegir un tipo o familia de microcontroladores
A la hora de decidirse en terminos generales sobre que tipo o
familia de microcontroladores emplear hay que tener en cuenta
varios factores, como por ejemplo:

Experiencia previa
Documentacin existente
Herramientas de desarrollo disponibles y su precio
Precio del microcontrolador

Experiencia previa: Si ya se ha trabajado con algn


microcontrolador en particular, lo mejor es ver que nuevas
posibilidades ofrecen los diversos fabricantes que trabajen con
ese microcontolador como ncleo. Por ejemplo, el 8051 fu muy
popular hace algun tiempo, y hay muchos microcontroladores
actuales que derivan de este, como pueden ser los AT89 de
Atmel, MCS251 de Intel, DS8 de Maxim (Dallas), P8 de Philips y
MSC12 de Texas Instruments. Lo bueno es que salvo en
determinados detalles se mantiene el conjunto de instrucciones,
modos de direccionamiento, nombres de registros, y en
definitiva la filosofa de trabajo del 8051. Con pequeos cambios
podran recuperarse programas diseados para el 8051 con
estos microcontroladores.

Documentacin existente: Este es un factor importante si


se quiere conocer bien el tipo de microcontrolador elegido y su
entorno de desarrollo. Adems, si existe una amplia literatura
de aplicaciones podrn utilizarse programas y diseos ya
realizados para adaptarlos a nuestras necesidades. Mediante
libros especializados, revistas de electrnica y sobre todo
Internet, puede encontrarse la informacin necesaria sobre
cualquier microcontrolador, si bien parace que la mayor
cantidad de informacin disponible corresponde a los
microcontroladores PIC de Microchip.

Herramientas de desarrollo disponibles y su precio: Uno


de los factores que ms importancia tiene a la hora de
seleccionar un microcontrolador entre todos los dems es el
soporte tanto software como hardware de que dispone. Un buen
conjunto de herramientas de desarrollo puede ser decisivo en la
eleccin, ya que pueden suponer una ayuda inestimable en el
desarrollo del proyecto. Algunos fabricantes de
microcontroladores ofrecen paquetes IDE de calidad de forma
completamente gratuita, como poltica para inclinarse por el uso
de sus microcontroladores. Ejemplos de ello son AVR studio de
Atmel, Code Warrior de Freescale (Motorola), MPLAB de
Microchip o Eclipse de Texas Instruments. Estos paquetes IDE
gratuitos permiten programar en cdigo ensamblado, puesto
que los compiladores de lenguaje de alto nivel (BASIC y C) no
suelen ser gratis.

Una forma de reducir costes en una produccin de


dispositivos con microcontroladores es utilizar una nica familia
de microcontroladores para optimizar el uso de las herramientas
de apoyo que se van a necesitar, tales como emuladores,
simuladores, ensambladores, compiladores, etc.

Precio del microcontrolador: Como es lgico, los


fabricantes de microcontroladores compiten duramente para
vender sus productos. Para que nos hagamos una idea, para
una produccin a gran o mediana escala de dispositivos que
utilizan un microcontrolador, una diferencia de precio en el
mismo de algunos cntimos es importante (el consumidor
deber pagar adems el coste del empaquetado, el de los otros
componentes, el diseo del hardware y el desarrollo del
software).

Elegir un modelo concreto de microcontrolador

Una vez se decida que tipo o familia de microcontroladores se


van a emplear hay que elegir el modelo de microcontrolador
concreto para la aplicacin y resulta imprescindible analizar los
requisitos de la aplicacin:

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.8

Entradas, salidas y recursos internos: Uno de los


aspectos ms atractivos de los microcontroladores es que
la circuitera externa puede reducirse al mnimo. Para
determinar las necesidades de entradas y salidas as como
los recursos del sistema es conveniente dibujar un
diagrama de bloques del mismo, de tal forma que sea
sencillo identificar la cantidad y tipo de seales a controlar.
Habr que tener en cuenta:
o Nmero de entradas y salidas necesarias.
o Nmero y tamao (8, 16 32 bits) de los
temporizadores necesarios.
o Necesidad de un CAD o CDA, incluyendo la resolucin
y nmero de entradas.
o Necesidad de puertos de comunicaciones (I2C, RS232,
USB, bus CAN, SPI u otros).
o Necesidad de una o ms salidas PWM.
o Necesidad de interfaces especficas como la de control
LCD.

Una vez realizado este anlisis puede ser necesario aadir


perifricos hardware externos. Esto puede ser una mejor
opcin que utilizar un microcontrolador de altas
prestaciones pero caro. Si por ejemplo necesitamos un
conversor A/D (CAD) de unas determinadas caractersticas
y no est disponible con la familia de microcontroladores
deseada es posible utilizar un conversor externo con una
interfaz I2C. Esto sirve tambin para conseguir memoria
programable no volatil extra (con una EEPROM externa). Si
necesitamos un puerto USB, el lugar de vernos limitados a
elegir entre alguno de los modelos aparecidos mas
recientemente en el mercado, podemos elegir un
controlador USB externo. Por ltimo no olvidemos que
tambin pueden implementarse algunos recursos por
software, como una comunicacin I2C o RS232 o una salida
PWM.

Velocidad y consumo: Actualmente pueden encontrarse


modelos de microcontroladores que pueden utilizar
velocidades de reloj de hasta 100 MHz, pero adems de
eso, en la velocidad de ejecucin del programa repercute
la arquitectura del microcontrolador, siendo ms rpido
uno con arquitectura RISC que otro con CISC. Las
velocidades altas incrementan las interferencias
electromagnticas radiadas y el consumo de los
microcontroladores al estar la mayora realizados con
tecnologas CMOS, por lo que habr que tener en cuenta la
velocidad si el consumo es importante en la aplicacin. Por
todo esto el uso de velocidades altas debe reservarse para
cuando sea necesario que el microcontrolador realice
clculos crticos en un tiempo limitado. En ese caso
debemos asegurarnos de seleccionar un dispositivo
suficientemente rpido para ello.
Hay que tener en cuenta que algunos productos que
incorporan microcontroladores estn alimentados con
bateras y su funcionamiento puede ser tan vital como
activar una alarma antirrobo. Lo ms conveniente en un
caso como ste puede ser que el microcontrolador est en
estado de bajo consumo pero que despierte ante la
activacin de una seal (una interrupcin) y ejecute el
programa adecuado para procesarla. En las situaciones
donde un dispositivo se relaciona con el entorno humano
suele utilizarse el modo de bajo consumo, como por
ejemplo en un mando a distancia de un televisor, que la
mayor parte del tiempo no est haciendo nada, de manera
que cuando el usuario pulsa una tecla el microcontrolador
pasa al modo normal y ejecuta las operaciones necesarias.
De esta manera la duracin de la batera puede llegar casi
a la vida de la misma puesto que en modo de bajo
consumo un microcontrolador puede reducir 1000 veces
sus necesidades de corriente comparndolo con el modo
normal.

Memoria: Para determinar las necesidades de memoria de


nuestra aplicacin debemos separarla en memoria voltil
(RAM), memoria no voltil (ROM, Flash, etc.) y memoria
no voltil modificable (EEPROM). Este ltimo tipo de
memoria puede ser til para incluir informacin especfica
de la aplicacin como un nmero de serie o parmetros de
calibracin.
El tipo de memoria a emplear vendr determinado por el
volumen de ventas previsto del producto: de menor a
mayor volumen ser conveniente emplear Flash, EEPROM,
OTP y ROM. Los dos primeros tipos han sido pensados y
diseados para ser utilizados en etapas de desarrollo o en
pequeas series, para una produccin en masa a pequea
escala es preferible utilizar el tipo OTP (que puede
programarse como los dos tipos anteriores pero no se
puede borrar y es normalmente ms barato). El ltimo
tipo, ROM, necesita ser programado mediante una mscara
por el frabicante de manera que slo es prctico para
cuando se necesiten varios miles de dispositivos idnticos.
Tambin debemos tener en cuenta que no siempre hay
versiones con diferentes tipos de memoria para un modelo
de microcontrolador en particular.
En cuanto a la cantidad de memoria necesaria puede ser
necesario realizar una versin preliminar de la aplicacin y
a partir de ella hacer una estimacin de cunta memoria
voltil y no voltil es necesaria y si es conveniente
disponer de memoria no voltil modificable.

Ancho de palabra: El criterio de diseo debe ser


seleccionar el microcontrolador de menor ancho de palabra
que satisfaga los requerimientos de la aplicacin. Los
modelos de 4 bits han desaparecido prcticamente del
mercado de manera que utilizar un microcontrolador de 8
bits supone la mejor eleccin si el programa a desarrollar
slo controla unas pocas entradas y salidas y no utiliza
clculos complejos ni accede a grandes bases de datos.
Tambin resultan perfectos si el ancho de los datos es de
un byte. Los microcontroladores de 16 y 32 bits, debern
utilizarse si se realizan clculos matemticos o cientficos,
una gestin de Entrada/Salida potente o si se necesita un
espacio de direccionamiento muy elevado. Si una
aplicacin necesita un microcontrolador con ms de 8 bits,
es recomendable utilizar microcontroladores de 32 bits
frente a los de 16 bits dada la poca diferencia de precio
que actualmente existe entre ellos. Si la velocidad no es
crtica tambin puede acudirse a la utilizacin de libreras
para manejar los datos de alta precisin, que resulta una
alternativa ms barata y quiz suficiente.
Disponibilidad: Hay pocas cosas ms frustrantes que
elegir para el desarrollo de un diseo un componente
electrnico y despus de haberlo terminado comprobar que
no est disponible en las tiendas de electrnica de tu
ciudad. No obstante hoy es muy fcil realizar compras por
medio de catlogos por correo o a travs de Internet,
incluso pueden solicitarse componentes directamente al
fabricante. El problema est en el nmero de dispositivos
que se deben pedir. El fabricante slo nos atender si se
solicitan cantidades realmente grandes, aparte de los
problemas sobre licencias, permisos o aduanas que puedan
surgir. La venta por catlogo mediante correo o por
Internet dentro del pas resulta muy interesante apenas se
compre el suficiente material como para amortizar los
gastos de transporte. Las compras desde Espaa (mi caso)
con otros paises de la Unin Europea como Alemania, Italia
o Reino Unido no representan ningn problema. Ms
problemtico resulta comprar en Estados Unidos o en otros
paises que estn fuera de la Unin. (Recuerdo los
problemas que tuvimos con la aduana al comprar hace
unos aos una placa de desarrollo para el 8051 por correo
en Israel). Teniendo en cuenta todo lo dicho resulta
fundamental comprobar si existe un distribuidor que
disponga de los componentes necesarios en su almacen (y
en el encapsulado correcto) antes de comenzar el diseo.
Tambin debemos considerar que cuanto ms popular sea
el microcontrolador que elijamos menos problemas vamos
a tener en este aspecto.

Diseo del circuito y de la PCB: La seleccin de un


microcontrolador concreto condicionar el diseo del
circuito de manera que debe tenerse en cuenta que quiz
usar un microcontrolador barato encarezca el resto de
componentes del diseo. Tampoco debemos olvidarnos del
encapsulado, podramos elegir un determinado modelo de
microcontrolador y luego encontrarnos que en lugar de
venir con el tradicional encapsulado DIL slo est
disponible en encapsulados PLCC o PGA, si bien siempre
podremos utilizar un zcalo adecuado. Tampoco se podra
trabajar manualmente con encapsulados BGA.
Afortunadamente, de momento, estos problemas se dn
slo con los ltimos modelos de microcontroladores con
muchas patillas.
En cuanto al diseo de la placa de circuito impreso (PCB) a
no ser que el esquema sea simple o se afine mucho en el
mismo ser necesario el uso de puentes (su uso est mal
visto) o de placas de c.i. de doble cara. Si se utilizan
componentes SMD conviene saber que la primera
generacin de componentes SMD tiene una separacin de
terminales de 1,27 milmetros que todava pueden soldarse
manualmente con paciencia y una punta fina pero los
ltimos circuitos SMD tienen una separacin de 0,64
milmetros paro lo cual es necesario utilizar mquinas de
soldadura.

Fabricantes y modelos de microcontroladores

A continuacin se muestra una relacin de algunos


fabricantes y modelos de microcontroladores incluyendo su
direccin en Internet, si es CISC o RISC, el nmero de bits del
bus de datos y el ncleo del que deriva (8051, ARM, etc) as
como si est disponible un IDE gratuito:

ARQUITECTU
FABRICANTE FAMILIA IDE
RA
CISC 8 bits
ADUC8xx -
8051
Analog Device www.analog.com
RISC 32 bits
ADUC7xx -
ARM7
prog.
CISC 8 bits
AT89xxx independient
8051
es
prog.
Atmel www.atmel.com TS87xxx CISC 8 bits independient
es
AVR RISC 8 bits AVR studio
RISC 16 bits
AT91xxx -
ARM7/9
RISC 32 bits
EP73xxx -
ARM7
Cirrus Logic www.cirrus.com
RISC 32 bits
EP93xxx -
ARM9
CISC 8 bits
Cygnal www.silabs.com C8051F -
8051
CISC 8 bits
HC05 -
6800
CISC 8 bits Code
HC08
6809 Warrior
CISC 8 bits
HC11 -
6809
HC12 CISC 16 bits -

Freescale Code
HCS12 CISC 16 bits
(Motorola) www.freescale.com Warrior
HC16 CISC 16 bits -
56800 CISC 16 bits -
CISC 32 bits
68K -
68000
ColdFire CISC 32 bits -
RISC 32 bits
MAC7100 -
ARM7
F2MC-8 CISC 8 bits -
Fujitsu www.fujitsu.com F2MC-16 CISC 16 bits -
FR RISC 32 bits -
CISC 8 bits
C5xxx -
8051
CISC 8 bits
C8xxx -
8051
Infineon www.infineon.com
C16xxx CISC 16 bits -
XC16xxx CISC 16 bits -
TCxxx CISC 32 bits -
CISC 8 bits
Intel www.intel.com MCS251 -
8051
MCS96/296 CISC 16 bits -
CISC 8 bits
DS80Cxxx -
8051
CISC 8 bits
DS83Cxxx -
Maxim (Dallas) www.maxim-ic.com 8051
CISC 8 bits
DS89Cxxx -
8051
MAXQ RISC 16 bits -
PIC
10,12,14,16,17, RISC 8 bits MPLAB
Microchip www.microchip.com 18
dsPIC RISC 16 bits MPLAB
COP8xxx CISC 8 bits Webench
NS (NATIONAL
SEMICONDUCTOR) www.national.co CR16Cxxx CISC 16 bits -
m
CP3000 RISC 16 bits -
CISC 8 bits
P8xxx -
8051
Philips www.semiconductors.philips.co
Xaxxx CISC 16 bits -
m
RISC 32 bits
LPC2xxx -
ARM7
Rabbit Rabbit2000 CISC 8 bits -
Semiconductor www.rabbitsemiconduct
or.com Rabbit3000 CISC 8 bits -

740 CISC 8 bits -


H8 CISC 16 bits HEW
H8S CISC 16 bits HEW
Renesas www.renesas.com M16C CISC 16 bits -
7700 CISC 16 bits -
H8SX CISC 32 bits -
Super H CISC 32 bits HEW
ST5 CISC 8 bits Visual FIVE
ST (SGS-THOMSON) www.stm.com ST6 CISC 8 bits -
ST7 CISC 8 bits STVD 7
ST9 CISC 8 bits STVD 9
ST9 CISC 16 bits STVD 9
ST10 CISC 16 bits -
RISC 32 bits
ARM7 -
ARM7
CISC 8 bits
MSC12xxx -
8051
Texas Instruments www.ti.com MSP430 CISC 16 bits Eclipse
RISC 32 bits
TMS470 -
ARM7
870 CISC 8 bits -
Toshiba chips.toshiba.com 900/900H CISC 16 bits -
900/900H CISC 32 bits -
Ubicom (Scenix) www.ubicom.com SXxx RISC 8 bits -
Z8xxx CISC 8 bits Z80 -
Zilog www.zilog.com Z8Encore! CISC 8 bits Z80 -
eZ80Aclaim CISC 8 bits Z80 -

Los microcontroladores PIC


Hace un tiempo, para introducirse en el mundo de los
microcontroladores, se empleaba principalmente el 8051 de
Intel.

Aspecto del 8051 en un montaje:


Arquitectura bsica de un 8051:
DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.17

Esquema mnimo de montaje para el 8051:

Sin embargo, despus de todo lo dicho, dedicaremos el resto


de la documentacin a los microcontroladores PIC de Microchip,
no porque esta familia sea mejor que otras, sino porque
presentan diversas caractersticas que los hacen especialmente
interesantes:

Facilidad de uso.
Gran cantidad de informacin disponible en libros, revistas
e Internet.
Herramientas de desarrollo muy asequibles.
Bajo precio y fcil disponibilidad.

En muchos casos la eleccin de una versin adecuada de PIC


es la mejor solucin para resolver un problema. Otras familias
de microcontroladores son ms eficaces en aplicaciones
concretas, especialmente si predomina una caracterstica
especial.
Dentro de los PIC, quiz el modelo con mayor disponibilidad
(en el ao 2005) para utilizarlo en montajes y prcticas y del
que existe mayor informacin es el PIC16F84A. Si bien es cierto
que hoy puede sustituirse por otros modelos con mas
prestaciones (recursos por hardware como puertos serie RS232
o salidas PWM) siendo incluso ms baratos (como el PIC....) no
por ello deja de ser ideal para comenzar:

DISPOSITIVOS LGICOS MICROPROGRAMABLES Microcontroladores 2.18

Esquemas mnimos de montaje para el PIC16F84:


Oscilador RC
C1 de 20pF como mnimo
5K R1 100K

Resea histrica sobre los PIC


En 1965, la empresa GI cre una divisin de
microelectrnica, GI Microelectronics Divisin. En 1975 dise
un chip destinado a controlar E/S: el PIC (Peripheral Interface
Controller) con una arquitectura en la que se basan los modelos
actuales. GI Microelectronics Divisin se convirti en la empresa
subsidiaria GI Microelectronics Inc. y en 1985 en una empresa
independiente, la Arizona Microchip Technology.

Microchip cuenta con factoras principal en Chandler y Tempe,


Arizona. Tambin cuenta con centros de ensamblaje y ensayos
en Taiwan y Tailandia. Para tener una idea de su alta
produccin, hay que tener en cuenta que produce millnes de
unidades por semana.

CISC - RISC

Los procesadores se agrupan hoy en dos familias, la ms antigua y comn de las cuales es la "CISC"
o "Complex Instruction Set Computer": computador de set complejo de instrucciones. Esto
corresponde a procesadores que son capaces de ejecutar un gran nmero de instrucciones pre-
definidas en lenguaje de mquina (del orden del centenar).

Desde hace unos aos se fabrican y utilizan en algunas mquinas procesadores "RISC" o "Reduced
Instruction Set Computer", es decir con un nmero reducido de instrucciones. Esto permite una
ejecucin ms rpida de las instrucciones pero requiere compiladores (o sea traductores
automticos de programas) ms complejos ya que las instrucciones que un "CISC" podra admitir
pero no un "RISC", deben ser escritas como combinaciones de varias instruciones admisibles del
"RISC". Se obtiene una ganancia en velocidad por el hecho que el RISC domina instrucciones muy
frecuentes mientras son operaciones menos frecuentes las que deben descomponerse.

Procesadores CISC

Las caractersticas principales de los procesadores CISC son:

CISC = Complex Instruction Set Computer

Muchas instrucciones potentes

Muchos modos de direccionamiento

Varios formatos de instrucciones

Normalmente microprogramados (no microprogramables)

La ejecucin de las instrucciones lleva varios ciclos de mquina.

Aparece 60s ? Compiladores en su infancia


CISC pretenda disminuir el salto entre los lenguajes de alto nivel (LAN) y el lenguaje mquina (LM)

60s...IBM 360;

70s...DEC VAX, Intel x86, Motorola 680x0

Mdelo ejecucin: reg/men-reg/mem

? tiempo acceso memoria ms lento que ? clk

Registros pocos y especializados

Instrucciones complejas ? ?CPI

Repertorio completo VAX ?+400Kb de uCdigo

20% inst. ? 60% ?C y slo 0.2% de utilizacin

Arquitectura de mucho xito ? Intel x86

nica CISC en expansin hasta hoy en da

memoria segmentada ? ? trabajo a programadores bajo nivel y compiladores

Procesadores RISC
RISC = Reduced Instruction Set Computer

Pocas instrucciones y sencillas

Pocos modos de direccionamiento

En los 80s los uP eran muy complejos

Las instrucciones complejas se utilizaban poco

... y hacan al uP ms lento

Idea ? Optimizar el caso comn

... buscando las operaciones ms utilizadas y diseando la mquina entorno a ellas

Aadir nuevas slo si no ralentizan la mquina

? accesos a memoria ? Load/Store

modelo de ejecucin reg-reg

? registros general purpose (p.e. 32)

? instrucciones ? simples y regulares

ejecucin directa por el hardware (uCdigo=0)

? formatos instruccin ? decodif. ms rpida

objetivo de 1 instruccin/ciclo

? NI ? ? trabajo de los compiladores


? distancia entre LAN y LM

80s.. tecnologa de compiladores madura

CISC vs. RISC

Ejemplos

CSIC RISC

IBM370 VAX 11/780 8086 SPARC I MIPS I

Ao 1973 1978 1978 1981 1983

Instrucciones 208 303 100 39 55

Microcdigo 54Kb 400Kb 11Kb 0 0

Inst. (bytes) 2-6 2-57 1-17 4 4

Balance ? gana RISC


Aunque actualmente la divisin no est clara .... Pentium, Pentium II y IA-64 son CSIC, pero por
debajo existe una mquina RISC. RISC por rendimiento, CISC por compatibilidad software ...
ltimos SPARC instruccin producto de matrices

Una computadora CISC gasta el 80% de su tiempo ejecutando solamente el 20% de


suinstrucciones.

La ejecucin en RISC es ms rpida que en CISC.

Los programas en RISC ocupan menos espacio de memoria.

Procesadores RISC, multiproceso y cach

Introduccin:

A lo largo de la historia de la industria de los ordenadores, la tendencia mayormente adoptada


para conseguir un aumento de prestaciones, ha sido el incremento de la complejidad de las
instrucciones. Es lo que se ha denominado "computacin con conjuntos de instrucciones
complejas" o CISC (Complex Instruction Set Computing).

Sin embargo, la tendencia actual, se esfuerza en conseguir procesadores con conjuntos de


instrucciones de complejidad reducida o RISC (Reduced Instruction Set Computing). La idea es que
un conjunto de instrucciones poco complejas son simples, y por tanto de ms rpida ejecucin, lo
que permite crear un cdigo ms "aerodinmico".
Tanto la tecnologa CISC como la RISC son acreditadas a IBM, aunque sus antecesores bien pueden
ser John vonNeumman (inventor del primer programa de ordenador almacenado, y que promova
la velocidad inherente a conjuntos de instrucciones reducidas), Maurice Wilkes (padre de la
microprogramacin y de muchos conceptos de los diseos RISC), y Seymour Cray (primeros
supercomputadores, empleando principios RISC).

En 1975, IBM inici el desarrollo de un controlador para un sistema de conmutacin telefnica,


que aunque fue abandonado, sirvi como punto de partida para el desarrollo de una CPU con
tecnologa ECL, corazn del sistema 801, precursor del IBM PC RT.

Los inicios de la tecnologa RISC tambin surgen en el ambiente acadmico, ya que en 1980, la
Universidad de Berkeley (California), el Dr. David A. Patterson inici un proyecto denominado RISC
I, que obtuvo resultados en tan solo 19 meses, seguido por RISC II, SOAR (Smalltalk on a RISC) y
SPUR (Symbolic Processing on a RISC). El resultado directo, adems de la educacin en la
ingeniera y los fundamentos del diseo de microprocesadores, fue la creacin de una mquina
que fuese capaz de mayores velocidades de ejecucin a menores velocidades de reloj y que
requiriese menores esfuerzos de diseo.

Casi simultneamente, en la Universidad de Stanford, el Dr. John Hennesy inici tambin un


proyecto de implementacin RISC, denominado MIPS, seguido por el sistema MIPS-XMP,
enfocados hacia el proceso simblico, demostrando las capacidades de velocidad de la
arquitectura RISC.

Ambos profesores se vieron envueltos rpidamente, en proyectos de productos comerciales, y en


concreto, Hennesy fue uno de los fundadores de MIPS Computer Systems, mientras Patterson
actuaba de asesor durante el desarrollo del primer SPARC.

Por otro lado, durante las pasadas dcadas, el multiproceso, como medida de incrementar
drsticamente las prestaciones de los sistemas a un coste razonable, se ha visto reducido al
mbito de los computadores de "alto nivel", en parte debido a los bajos niveles de integracin del
silicio, y a la falta de software que facilitase la ejecucin paralela de las aplicaciones.
Las ventajas de los procesadores RISC, especialmente las ligadas a los sistemas abiertos (lase
UNIX), los hacen plataformas ideales para explorar los puntos fuertes de los sistemas
multiprocesadores.

Tecnologa RISC:

La comparacin que antes hemos realizado entre CISC y RISC es algo simple, ya que no es slo una
cuestin de diferencias en el conjunto de instrucciones, puesto que es fundamental resaltar el
mejor uso y aprovechamiento de los recursos del silicio, es decir, menor tiempo de diseo y
empleo de menor nmero de transistores, lo que redunda en menor nmero de errores de diseo
y menor tiempo de ejecucin para instrucciones individuales.

Las caractersticas comunes a todos los procesadores RISC, fuente de sus capacidades de altas
prestaciones, son:

1. Modelo de conjunto de instrucciones Load/Store (Cargar/Almacenar). Slo las instrucciones


Load/Store acceden a memoria; las dems operaciones en un RISC, tienen lugar en su gran
conjunto de registros. Ello simplifica el direccionamiento y acorta los tiempos de los ciclos de la
CPU, y adems facilita la gestin de los fallos de paginas (page faults) en entornos de memoria
virtual. Adems, permite un elevado nivel de concurrencia a consecuencia de la independencia de
las operaciones de Load/Store de la ejecucin del resto de las instrucciones.

2. Arquitectura no destructiva de tres direcciones. Los procesadores CISC destruyen la


informacin que existe en alguno de los registros, como consecuencia de la ejecucin normal de
instrucciones; esto es debido a su arquitectura de dos direcciones, por la cual el resultado de una
operacin sobrescribe uno de los registros que contena a los operandos. Por contra, las
instrucciones RISC, con tres direcciones, contienen los campos de los dos operandos y de su
resultado. Por lo tanto, tanto los operandos origen como el destino, son mantenidos en los
registros tras haber sido completada la operacin. Esta arquitectura "no destructiva" permite a los
compiladores organizar las instrucciones de modo que mantengan llenos los conductos (pipelines)
del chip, y por tanto reutilizar los operandos optimizando la concurrencia.

3. Instrucciones simples, de formato fijo, con pocos modos de direccionamiento. Las


instrucciones simples reducen de manera muy significativa el esfuerzo para su descodificacin, y
favorecen su ejecucin en pipelines. Las instrucciones de longitud fija, con formatos fijos, implican
que los campos de cdigos de operacin (opcodes) y de los operandos estn siempre codificados
en las mismas posiciones, permitiendo el acceso a los registros al mismo tiempo que se est
descodificando el cdigo de operacin. Todas las instrucciones tienen una longitud equivalente a
una palabra y estn alineadas en la memoria en lmites de palabra (word boundaries), ya que no
pueden ser repartidas en pedazos que puedan estar en diferentes pginas.

4. Ausencia de microcdigo. El microcdigo no se presta a la ejecucin en ciclos nicos, ya que


requiere que el hardware sea dedicado a su interpretacin dinmica. La programacin en
microcdigo no hace que el software sea ms rpido que el programado con un conjunto de
instrucciones simples. Todas las funciones y el control, en los procesadores RISC, estn
"cableados" (hardwired), para lograr una mxima velocidad y eficiencia.

5. Ejecucin en conductos (pipelined). Las instrucciones simples, de formato fijo y ciclo nico
permiten que las diferentes etapas de los ciclos de ejecucin (bsqueda o fetch, descodificacin,
ejecucin, y escritura del resultado o result write-back) para instrucciones mltiples, se puedan
realizar simultneamente, de un modo ms simple y eficaz.

6. Ejecucin en ciclos nicos (single-cycle). El resultado directo de los conjuntos de instrucciones


que ofrecen los procesadores RISC, es que cada instruccin puede ser ejecutada en un nico ciclo
de la CPU. Esto invalida la creencia de que las microinstrucciones en microcdigo, creadas para ser
ejecutadas en un solo ciclo de procesador, son ms rpidas que las instrucciones del lenguaje
ensamblador. Ya que el cach esta construido partiendo de la misma tecnologa que el
almacenamiento de control del microprograma, una nica instruccin puede ser ejecutada a la
misma velocidad que una microinstruccin. La ejecucin en ciclos nicos tambin simplifica la
gestin de las interrupciones y los conductos (pipelines).

Conceptos de multiproceso:

La industria informtica, ha tenido siempre un objetivo primordial, repetido a lo largo de toda su


cadena (fabricantes de semiconductores, fabricantes de sistemas y usuarios): la bsqueda de la
velocidad. Para alcanzar este objetivo se han invertido ingentes cantidades de recursos, hasta
alcanzar los lmites fsicos del silicio.
Obviamente, la velocidad va ligada a las prestaciones, y por lo general, la primera ha sido la
principal medida para decidirse por un sistema u otro. Sin embargo, por muy evidente que
parezca, y dados los lmites fsicos de los semiconductores, las prestaciones pueden no estar
forzosamente ligadas a la velocidad. Hoy es posible construir sistemas, que an teniendo
procesadores ms "lentos" que otros, ofrezcan unas prestaciones significativamente superiores.
Son los sistemas multiprocesador, que como su denominacin indica, incorporan varios
procesadores para llevar a cabo las mismas funciones.

No es un concepto nuevo, ya que los "minicomputadores" construidos por compaas como NCR,
Sequent y Stratus, ya empleaban varios nodos de proceso como alternativas econmicas a otros
productos de otras compaas. Sin embargo, aquellos sistemas an duplicaban recursos caros del
sistema, como memoria y dispositivos de entrada/salida, y por tanto, confinaban a los sistemas
multiprocesador al mundo de los sistemas de alto nivel.

Ahora, y en gran medida gracias a los procesadores de arquitectura RISC, el soporte


multiprocesador es una solucin integrada y fcilmente disponible en estaciones de trabajo de
sobremesa, que resuelve, a travs de hardware VLSI, los complejos problemas de comparticin de
recursos (memoria compartida) de aquellas primeras mquinas.

Evidentemente, estas mejoras en el hardware, para ser funcionales, requieren importantes


desarrollos en el software, y de hecho, muchos sistemas operativos admiten extensiones
multiproceso (Match, SCO, Solaris, System V, etc.), que proporcionan paralelismo "en bruto"
(asignando mltiples tareas a mltiples procesadores) a nivel del sistema operativo.

Las aplicaciones escritas para facilitar el paralelismo en su ejecucin, incrementan


significativamente las prestaciones globales del sistema; esto es lo que se denomina multi-
enhebrado (multithreading), que implica dividir una sola aplicacin entre varios procesadores. Sin
embargo, los desarrolladores de software y programadores de aplicaciones slo han comenzado a
explorar las vastas posibilidades de incremento de prestaciones que ofrecen los sistemas con
capacidades reales de proceso en paralelo.

El multiproceso no es algo difcil de entender: ms procesadores significa mas potencia


computacional. Un conjunto de tareas puede ser completado ms rpidamente si hay varias
unidades de proceso ejecutndolas en paralelo. Esa es la teora, pero otra historia es la prctica,
como hacer funcionar el multiproceso, lo que requiere unos profundos conocimientos tanto del
hardware como del software. Es necesario conocer ampliamente como estn interconectados
dichos procesadores, y la forma en que el cdigo que se ejecuta en los mismos ha sido escrito para
escribir aplicaciones y software que aproveche al mximo sus prestaciones.

Para lograrlo, es necesario modificar varias facetas del sistema operativo, la organizacin del
cdigo de las propias aplicaciones, as como los lenguajes de programacin.

Es difcil dar una definicin exacta de un sistema multiprocesador, aunque podemos establecer
una clasificacin de los sistemas de procesadores en:

SISD o secuencia nica de instrucciones y datos (Single Instruction, Single Data): una sola
secuencia de instrucciones opera sobre una sola secuencia de datos (caso tpico de los
ordenadores personales).

SIMD o secuencia nica de instrucciones y mltiple de datos (Single Instruction, Multiple Data):
una sola secuencia de instrucciones opera, simultneamente, sobre mltiples secuencias de datos
(array processors).

MISD o mltiples secuencias de instrucciones y nica de datos (Multiple Instruction, Single Data):
mltiples secuencias de instrucciones operan, simultneamente, sobre una sola secuencia de
datos (sin implementaciones tiles actualmente).

MIMD o mltiples secuencias de instrucciones y datos (Multiple Instruction, Multiple Data):


mltiples secuencias de instrucciones operan, simultneamente, sobre mltiples secuencias de
datos.
Los sistemas multiprocesadores pueden ser clasificados con mayor propiedad como sistemas
MIMD. Ello implica que son mquinas con mltiples y autnomos nodos de proceso, cada uno de
los cuales opera sobre su propio conjunto de datos. Todos los nodos son idnticos en funciones,
por lo que cada uno puede operar en cualquier tarea o porcin de la misma.

El sistema en que la memoria est conectada a los nodos de proceso establece el primer nivel de
distincin entre diferentes sistemas multiprocesador:

1. Multiprocesadores de memoria distribuida (distributed-memory multiprocessors), tambin


denominados multiprocesadores vagamente acoplados (loosely coupled multiprocessors). Se
caracterizan porque cada procesador slo puede acceder a su propia memoria. Se requiere la
comunicacin entre los nodos de proceso para coordinar las operaciones y mover los datos. Los
datos pueden ser intercambiados, pero no compartidos. Dado que los procesadores no comparten
un espacio de direcciones comn, no hay problemas asociados con tener mltiples copias de los
datos, y por tanto los procesadores no tienen que competir entre ellos para obtener sus datos. Ya
que cada nodo es un sistema completo, por si mismo (incluso sus propios dispositivos de
entrada/salida si son necesarios), el nico lmite prctico para incrementar las prestaciones
aadiendo nuevos nodos, esta dictado por la topologa empleado para su interconexin. De
hecho, el esquema de interconexin (anillos, matrices, cubos, ...), tiene un fuerte impacto en las
prestaciones de estos sistemas. Adems de la complejidad de las interconexiones, una de las
principales desventajas de estos sistemas, como es evidente, es la duplicacin de recursos caros
como memoria, dispositivos de entrada/salida, que adems estn desocupados en gran parte del
tiempo.

2. Multiprocesadores de memoria compartida (shared-memory multiprocessors), tambin


llamados multiprocesadores estrechamente acoplados (tightly coupled multiprocessors). Son
sistemas con mltiples procesadores que comparten un nico espacio de direcciones de memoria.
Cualquier procesador puede acceder a los mismos datos, al igual que puede acceder a ellos
cualquier dispositivo de entrada/salida. El sistema de interconexin ms empleado para estos
casos, es el de bus compartido (shared-bus). Tener muchos procesadores en un nico bus tiene el
inconveniente de limitar las prestaciones del sistema a medida que se aaden nuevos
procesadores. La razn es la saturacin del bus, es decir, su sobre utilizacin; en un sistema de bus
compartido, se deriva por la contienda entre los diferentes dispositivos y procesadores para
obtener el control del bus, para obtener su utilizacin.
Es evidente, que los sistemas actuales tienden al uso de arquitecturas de memoria compartida,
fundamentalmente por razones de costes, a pesar del problema de la contienda por el bus. Los
tres fuentes fundamentalmente responsables de dicha disputa son la memoria (cada CPU debe
usar el bus para acceder a la memoria principal), la comunicacin (el bus es usado por los "bus
masters" para la comunicacin y coordinacin), y la latencia de la memoria (el subsistema de
memoria mantiene al bus durante las transferencias de datos, y en funcin de la velocidad a la que
la memoria puede responder a las peticiones, puede llegar a ser un factor muy significativo).

Los sistemas de memoria cach y el multiproceso:

Los sistemas de memoria multinivel (cach) son un esfuerzo para evitar el nmero de peticiones
realizadas por cada CPU al bus. Los caches son pequeas y rpidas (y por tanto caras) memorias,
que hacen de tampn (buffer) entre la CPU y la memoria externa, para mantener los datos y/o
instrucciones. Se basan en el principio de la "localidad", lo que significa que, dada la fundamental
naturaleza secuencial de los programas, los siguientes datos o instrucciones requeridas, estarn
localizadas inmediatamente a continuacin de las actuales.

Los datos contenidos en la memoria cach se organizan en bloques denominados lneas. Las lneas
son cargadas en el cach como copias exactas de los datos situados en la memoria externa. Para
referenciar a los datos de la memoria cach, se emplean marcas (tags) que identifican a cada lnea.
Las marcas o tags emplean una porcin de la direccin fsica de los datos, para compararla con la
direccin fsica solicitada por la CPU. Cuando existe una coincidencia exacta de la direccin y de
otros cualificadores (estado, privilegio, contexto, etc.), se dice que ha tenido lugar un acierto (hit)
de cach; en caso contrario, tiene lugar un fallo (miss) del cach, y en ese caso, los datos han de
ser recuperados desde la memoria.

El empleo de memoria cach se ha popularizado, como medida para acelerar el tiempo de acceso
a la memoria principal, incluso en los sistemas monoprocesador, evitando as, segn se
incrementa la velocidad de los propios procesadores, aumentar la velocidad de dicha memoria, y
por tanto encarecer el sistema.

La forma en que la memoria es actualizada por los caches locales puede tener un gran impacto en
las prestaciones de un sistema multiprocesador. Bsicamente hay dos mtodos:
1. Escritura continua (write-through). Requiere que todas las escrituras realizadas en el cach
actualicen asimismo los datos de la memoria principal. De esta forma, la memoria principal
siempre tiene la ltima copia de los datos, y por tanto no hay nunca ninguna incoherencia con el
cach. El inconveniente es que se producen frecuentes accesos a memoria, especialmente
superfluos cuando el software est modificando las mismas secciones de datos repetidamente
(por ejemplo ejecutando bucles).

2. Copia posterior (copy-back). Es un sistema mucho ms eficiente, aunque tambin ms


complejo de implementar. En este caso, la CPU puede modificar la lnea de cach sin necesidad de
actualizar inmediatamente la memoria principal. Los datos slo son copiados a la memoria
principal cuando la lnea de cach va a ser reemplazada con una nueva. Ello no solo minimiza el
trfico del bus, de vital importancia para el resto de los procesadores, sino que tambin libera al
procesador de la tarea de escribir en la memoria principal. Sin embargo, este sistema, en una
arquitectura de bus compartido, implica un nuevo nivel de dificultad, denominado coherencia o
consistencia (coherency o consistency); dado que cada cach puede tener una copia de los datos
existentes en la memoria principal, el desafo es asegurar que los datos permanecen iguales entre
todos los caches. Hay dos mtodos para mantener cada lnea de cach idntica a las dems:

a. Escritura radiada (write-broadcast), que requiere que la CPU que modifica los datos
compartidos actualice los otros caches, para lo cual escribe en el bus la direccin de los datos, y los
datos mismos, de modo que todos los dispositivos interesados (otras CPUs) los capturen. Esto
asegura que cada lnea de cach en el sistema es una copia exacta de las dems.

b. Escritura invalidada (write-invalidate), impide a una CPU modificar los datos compartidos en su
cach hasta que otros caches han invalidado sus copias. En cuanto otros caches invalidan sus
lneas, el cach modificado tiene la nica copia; de este modo, se garantiza que un slo cach
escribe una lnea compartida en un momento dado. Tiene la ventaja de conservar el ancho de
banda del bus ya que los datos modificados no tienen que ser enviados a otros caches.

Ambos sistemas requieren que los caches sean capaces de identificar peticiones en el bus que
afecten a sus datos, lo que se realiza con una tcnica conocida como "sondeo del bus" (bus
snooping). Cada cach compara las direcciones de las peticiones en el bus compartido con los
datos en su propio cache, usando las marcas (tags).

Este sistema requiere un acceso concurrente a las marcas (tags) del cach por parte del bus del
sistema y del bus del procesador. Sin dicho acceso concurrente, el procesador no podra acceder al
cach durante las operaciones de sondeo del bus (que tienen que tener prioridad de acceso a las
marcas, para poder mantener la coherencia del cach). El resultado son frecuentes atascos del
procesador y consecuentemente, bajo rendimiento.

A su vez, hay varios protocolos asociados con el sondeo del bus para el movimiento de los datos y
los mensajes entre los caches:

1. Intervencin indirecta de los datos (indirect data intervention). Es el mtodo ms simple de


intercambio de datos entre procesadores, aunque tambin el menos eficiente. La 1 CPU hace una
peticin de datos, que es sondeada por la 2; tiene lugar un acierto de sondeo (snoop hit) si dichos
datos estn en el cach de la 2 CPU, entonces esta obtiene el control del bus e indica a la 1 que
lo reintente ms tarde. La 2 CPU escribe los datos de su cach a la memoria, y la 1 CPU obtiene
el control del bus de nuevo, reiniciando la peticin. Los datos son ahora suministrados por la
memoria.

2. Intervencin directa de los datos (direct data intervention). Los datos son suministrados
directamente por la 2 CPU a la 1. Este mecanismo es aplicable fundamentalmente a los sistemas
con sistemas de cache de copia posterior (copy-back). Aunque pueden evitar muchos ciclos
comparados con la intervencin indirecta, la memoria principal permanece inconsistente con el
cach, y debe de ser actualizada cuando la lnea de cach es vaciada.

3. Reflexin a memoria (memory reflection) con intervencin directa. La memoria captura los
datos que han sido depositados en el bus, mientras son enviados a la CPU solicitante. Si la lnea de
cach no ha sido modificada antes de que tenga lugar la ltima transaccin de intervencin de
datos, no es necesario escribir a la memoria, con lo que se conserva el ancho de banda. Esta
actualizacin del cache solicitante y la memoria puede tener lugar en un mismo y nico ciclo de
reloj.
PRINCIPALES FABRICANTES Y SUS PROCESADORES

FABRICANTE

PROCESADOR

TENDENCIA

SUN

SPARC

RISC

SILICON GRAPHICS

MIPS

RISC

MOTOROLA

POWER

RISC
HEWLETT PACKARD

PA

RISC

DEC

ALPHA

RISC

INTEL

PENTIUM

CISC ~ RISC

RISC frente a CISC:


Existen varios mitos que contraponen las ventajas de la tecnologa RISC frente a la CISC, que es
importante descalificar:

Los procesadores RISC ofrecen peor soporte para los lenguajes de alto nivel o HLL (High Level
Language) que lo CISC. Esta creencia se argumenta en que un conjunto de instrucciones de "alto
nivel" (CISC) es mejor soporte para lenguajes de alto nivel. Sin embargo, la caracterstica
fundamental de los lenguajes de alto nivel, implica que el programador slo interacciona con el
ordenador a travs del propio lenguaje de alto nivel (programacin, depuracin, mensajes del
sistema, etc.), por lo que todos los problemas a "bajo nivel", deben de ser transparentes y
desconocidos para el. Por ello, son de nulas consecuencias para el programador y los lenguajes de
alto nivel, como se implementan las funciones, en funcin del tipo de CPU.

Es ms complicado escribir compiladores RISC que CISC. Dado que los procesadores CISC tienen un
mayor nmero de instrucciones y modos de direccionamiento, existen por tanto ms formas de
hacer la misma tarea, lo que puede confundir tanto al compilador como al que lo escribe. Por ello,
subjetivamente es posible escoger una forma de hacerlo poco adecuada, por el tipo de
instrucciones o por el tiempo de ejecucin que requieren. En cambio, en un procesador RISC, hay
menos opciones, por lo que el compilador es ms simple, aunque se genere, habitualmente, un
20-30% ms cdigo; a cambio, se consigue un incremento de la velocidad de hasta un 500%.

Un programa es ms rpido cuanto ms pequeo. La velocidad a la que un programa puede ser


ejecutado no depende en absoluto de su tamao, sino del tiempo de ejecucin de cada una de sus
instrucciones. Dado que las instrucciones RISC son ms rpidas, y admiten mejor los pipelines,
puede haber mayor paralelismo y simultaneidad en la ejecucin de pequeas secciones de cdigo.
Dichas secciones de cdigo pueden ser ejecutadas en una fraccin del tiempo que requiere una
sola instruccin CISC.

Resumiendo:

No es un hecho meramente acadmico, sino puramente comercial y econmico. La "era RISC" ha


alcanzado a todos los fabricantes de semiconductores: AMD, Intel, MIPS, Motorola, ROSS, ...; y
todos ellos son productos usados por fabricantes de ordenadores y estaciones de trabajo: Apple,
DEC, HP, IBM, SUN, etc. y sus correspondientes clnicos.

El tiempo de diseo de estos productos se reduce sensiblemente, lo que disminuye su coste final,
y por tanto, se incrementan sus expectativas, al poder llegar al mercado en un tiempo ms
adecuado, y con menos posibilidades de errores.
Adems, son globalmente ms eficaces, de menores dimensiones y ms bajo consumo, ofreciendo
siempre claras ventajas tcnicas frente a los ms avanzados CISC.

Actualmente, las estaciones de trabajo RISC multiprocesadoras de mayor xito, se basan en


diferentes versiones de la tecnologa SPARC: superSPARC e HyperSPARC.

Esta claro que el futuro pertenece a los RISC y a los sistemas multiprocesador, a no ser que la fsica
y la electrnica logren superar las barreras tecnolgicas para incrementar muy por encima de las
cotas actuales, las velocidades y prestaciones de una nica CPU.

Tambin cabe esperar, y por que no, la pronta aparicin de otras tecnologas que compitan con
CISC y RISC.

Anda mungkin juga menyukai