Page 1
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
1
PRIMERA UNIDAD. INTRODUCCION A LOS SISTEMAS
EMBEBIDOS.
1.1 ¿Qué es un sistema embebido y aplicaciones?
Un sistema embebido (SE) o sistema empotrado lo vamos a definir como un sistema
electrónico diseñado específicamente para realizar unas determinadas funciones,
habitualmente formando parte de un sistema de mayor entidad. La característica principal
es que emplea para ello uno o varios procesadores digitales (CPUs) en formato
microprocesador, microcontrolador o DSP lo que le permite aportar ‘inteligencia’ al
sistema anfitrión al que ayuda a gobernar y del que forma parte.
En el diseño de un sistema embebido se suelen implicar ingenieros y técnicos
especializados tanto en el diseño electrónico hardware como el diseño del software. A su
vez también se requerirá la colaboración de los especialistas en el segmento de usuarios de
tales dispositivos.
Hardware
Normalmente un sistema embebido se trata de un módulo electrónico alojado dentro de
un sistema de mayor entidad (‘host’ o anfitrión) al que ayuda en la realización tareas tales
como el procesamiento de información generada por sensores, el control de actuadores, etc.
El núcleo de dicho módulo lo forma al menos una CPU en cualquiera de los formatos
conocidos:
Microprocesador.
Microcontrolador de 4, 8, 16 o 32 bits.
DSP de punto fijo o punto flotante.
DSC de punto fijo o punto flotante.
Diseño a medida ‘custom’ tales como los dispositivos FPGA.
Requisitos específicos de la aplicación a la que está dirigida:
Tamaño.
Margen de temperatura especifico del ámbito de aplicación.
Consumo de energía.
Robustez mecánica.
Costo.
Software
En general para el diseño de un SE no se dispone de recursos ilimitados sino que la
cantidad de memoria será escasa, la capacidad de cálculo y dispositivos externos será
limitada, etc. Podemos hablar de las siguientes necesidades:
Trabajo en tiempo real.
Optimizar al máximo los recursos disponibles.
Disponer de un sistema de desarrollo específico para cada familia de
microprocesadores empleados.
Page 2
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
2
Programación en ensamblador, aunque en los últimos años, los fabricantes o
empresas externas han mejorado la oferta de compiladores que nos permiten
trabajar en lenguajes de alto nivel, tales como C.
El empleo de un sistema operativo determinado o el no empleo de éste dependerá del
sistema a desarrollar y es una de las principales decisiones que habrá que tomar en la fase
de diseño del SE. Así, en el caso de decidirse por el empleo de microcontroladores y DSP,
por lo general no se usará sistema operativo mientras que si se emplea algún micro del tipo
ARM, PowerPC, Intel x86, etc. sí que lo llevará. La decisión dependerá de los requisitos
del sistema, tanto técnicos como económicos.
Las aplicaciones más numerosas y habituales de los SE suelen ser del tipo industrial y
gran consumo. Existen en el mercado de semiconductores una amplia variedad de familias
de microprocesadores, microcontroladores y DSPs dirigidos a este sector.
En la práctica totalidad de las áreas de nuestra vida nos encontramos con sistemas
embebidos que prácticamente nos pasan desapercibidos. Sirva como ejemplo el sector del
automóvil, que en pocos años ha introducido notables avances en lo referente a la
seguridad, confort, infomovilidad, etc. Pero, en general, podemos enumerar los siguientes
campos de aplicación:
Equipos industriales de instrumentación, automatización, producción, etc.
Equipos de comunicaciones.
En vehículos para transporte terrestre, marítimo y aéreo
En dispositivos dedicados al sector de consumo tales como electrodomésticos,
equipamiento multimedia, juguetes, etc.
En bioingeniería y electromedicina.
Sector aerospacial y de defensa.
Equipos para domótica.
A continuación se muestra la clasificación más común de los fabricantes de
semiconductores en el rango de aplicaciones:
Audio
Automotive
Broadband
Communications & Telecom
Computers & Peripherals
Consumer Electronics
Industrial
Medical
Security
Space, Avionics, & Defense
Video and Imaging
Wireless
Page 3
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
3
1.2 Arquitectura de un sistema embebido.
En el diseño de SE basados en microcontroladores, en general no se requiere una gran
potencia de procesado, ni dispositivos de presentación con gran resolución gráfica ni
sistema operativo y si en cambio el trabajo en tiempo real. Tampoco se suelen contemplar
las posibilidades de ampliación hardware con nuevos módulos ya que el sistema anfitrión
se diseña en su totalidad para unos requisitos específicos, de forma tal que si el sistema
anfitrión se queda obsoleto lo será no sólo por la CPU embebida sino también por el resto
de los elementos que lo integran, con lo que la única alternativa consistirá en el rediseño del
sistema completo, en la mayoría de los casos. Requisitos tales como tamaño, margen de
temperatura, consumo e inmunidad ante interferencias electromagnéticas suelen ser de gran
importancia.
En la figura 1.1 se muestra un diagrama de bloques de lo que puede ser un modelo
general de un sistema embebido, de los aquí considerados.
Figura 1.1.- Diagrama de bloques simplificado de un módulo típico de un SE.
Page 4
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
4
1.3 Sistemas concurrentes y distribuidos.
Los sistemas concurrentes son la simultaneidad en la ejecución de múltiples tareas
interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados
por un único programa. Las tareas se pueden ejecutar en una sola unidad central de proceso,
en varios procesadores o en una red de computadores distribuidos. La programación
concurrente está relacionada con la programación paralela, pero enfatiza más la interacción
entre tareas. Así, la correcta secuencia de interacciones o comunicaciones entre los
procesos y el acceso coordinado de recursos que se comparten por todos los procesos o
tareas son las claves de esta disciplina.
Figura 1.2 a) La supercomputadora Cray-2. b) La supercomputadora paralela Blue Gene de IBM.
Un sistema distribuido se define como una colección de computadoras separadas
físicamente y conectadas entre sí por una red de comunicaciones distribuida; cada máquina
posee sus componentes de hardware y software que el usuario percibe como un solo
sistema. El usuario accede a los recursos remotos (RPC) de la misma manera en que accede
a recursos locales, o un grupo de computadoras que usan un software para conseguir un
objetivo en común. Los sistemas distribuidos deben ser muy confiables, ya que si un
componente del sistema se descompone otro componente debe ser capaz de reemplazarlo.
Esto se denomina tolerancia a fallos. El tamaño de un sistema distribuido puede ser muy
variado, ya sean decenas de hosts (red de área local), centenas de hosts (red de área
metropolitana), o miles, o millones de hosts (Internet); esto se denomina escalabilidad.
1.4 Sistemas continuos, discretos e híbridos.
Los sistemas continuos operan con señales analógicas y su principal característica es
presentar continuidad tanto en magnitud como en tiempo. Con los avances tecnológicos,
tanto en electrónica como en computadoras, la mayoría de los sistemas de adquisición de
datos y de control automático han evolucionado a procesadores digitales y sistemas que
operan con computadoras, a los cuales se les conoce como sistemas discretos, cuya
principal característica es operar con señales discontinuas que presentan su discontinuidad
tanto en magnitud como en tiempo.
Page 5
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
5
Conocer las características, ventajas y desventajas de los sistemas continuos como de
los discretos es fundamental para tener claridad en las especificaciones y limitaciones de
diseño que aseguren que, en la implementación de uno de estos tipos de sistemas,
cumplamos con los objetivos de rendimiento global esperado.
Sistemas Continuos.
Los primeros sistemas de adquisición de datos (así como sistemas automáticos de
control) operaron como sistemas continuos. A estos sistemas actualmente se les conoce
como sistemas o controles convencionales y su principal característica es que registran y
manipulan la información mediante señales analógicas, tales como voltaje, corriente,
presión, temperatura, posición o alguna otra variable física.
Estas señales tienen la característica de presentar continuidad tanto en magnitud como
en tiempo. Así definiremos a los sistemas continuos como aquellos que operan o manipulan
información en forma continua. La continuidad en magnitud se puede definir bajo la
característica de que ante un rango definido de la variable o señal se tienen un número
infinito de valores intermedios.
Sistemas Discretos.
Las computadoras, microprocesadores y procesadores digitales operan como sistemas
discretos y como ya se mencionó, tienen la característica de operar con información o
señales que presentan discontinuidad tanto en magnitud como en tiempo.
Las computadoras operan y manipulan información en forma de códigos digitales, es decir,
en grupos de bits (el bit es la unidad básica de operación y puede tener solo 2 posibles
valores: “0” ó “1”). Cuando varios bits se agrupan de alguna manera, se forma un código
digital, lo que permite representar la información con un mayor número de estados.
Por una parte, en una señal continua tenemos que en cualquier intervalo definido se
tiene un número infinito de valores intermedios y por otra parte en la señal discreta se tiene
un número finito de combinaciones. Así, en el proceso de conversión se tendrá que
“aproximar” la magnitud de la señal continua a la combinación digital que mejor represente
su magnitud (esto produce un error de redondeo o truncamiento conocido como error de
“cuantización”).
1.5 Sistemas operativos en tiempo real.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia
el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la
finalidad de prestar atención a los procesos en el momento que lo requieran y se utilizan en
entornos donde son procesados un gran número de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy
específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de
laminadores. También en el ramo automovilístico y de la electrónica de consumo, las
aplicaciones de tiempo real están creciendo muy rápidamente.
Page 6
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
6
Otros campos de aplicación de los Sistemas Operativos de tiempo real son los
siguientes:
1. Control de trenes.
2. Telecomunicaciones.
3. Sistemas de fabricación integrada.
4. Producción y distribución de energía eléctrica.
5. Control de edificios.
6. Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns
OS y Spectra.
Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:
1. Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de
sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de
ciertos plazos.
2. Se utilizan en control industrial, conmutación telefónica, control de vuelo,
simulaciones en tiempo real., aplicaciones militares, etc.
3. Objetivo es proporcionar rápidos tiempos de respuesta.
4. Procesa miles de interrupciones por segundo sin perder un solo suceso.
5. Proceso se activa tras ocurrencia de suceso, mediante interrupción.
6. Proceso de mayor prioridad expropia recursos.
7. Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.
8. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos
son residentes permanentes en memoria.
9. Población de procesos estática en gran medida.
10. Poco movimiento de programas entre almacenamiento secundario y memoria.
11. Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente
del recurso.
1.6 Fases de diseño de un sistema embebido.
Una vez tomada la decisión de proceder a la fabricación del SE, vamos a describir
brevemente las fases típicas de diseño en cualquier sistema electrónico, sea éste embebido o
no lo sea. Desde la primera fase, conocida como diseño previo del sistema, hasta la última,
que consiste en la decisión del producto final, se debe de cuidar el orden de ejecución de las
tareas y solapar todas las que sea posible de modo que se obtenga un producto fiable en el
menor tiempo posible de puesta en el mercado (time-to-market).
En la figura 1.3 se muestra un diagrama simplificado con las fases a seguir y que
comentamos a continuación:
1. Diseño inicial del sistema que incluye toda una serie de tareas que acabarán en la
elaboración de un esquema eléctrico del mismo y en un diseño de necesidades
software.
Page 7
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
7
2. A partir del esquemático y de la forma física de cada uno de los componentes que
intervienen, elaborar un diseño hardware del mismo. Esta tarea incluye el
posicionamiento de cada uno de los componentes y el ruteado de las pistas de cobre
que realizarán las necesarias interconexiones entre los pines de los componentes,
generando un prototipo de PCB, sobre el que se realiza el montaje o ensamblado de
todos y cada uno de los dispositivos mediante el procedimiento de soldadura más
adecuado. Termina en un prototipo hardware.
3. Desarrollo del prototipo de software con la programación inicial del micro o de los
micros que formen parte del SE.
4. Integración hardware/software mediante el volcado o programación en el circuito de
los micros. Se dispondrá así del primer prototipo listo para proceder a su testeo y
depuración.
5. Pruebas y depuración del software y hardware mediante el empleo de prototipos
hasta llegar a la versión final. Si se detectan errores en el hardware será necesario
proceder a rediseñar la placa y volver a comenzar el proceso. Si los errores son de
software, el proceso es similar, solo que menos costoso en cuanto a materiales que
no en cuanto a horas de ingeniería.
6. Producto Final. Tras el resultado satisfactorio en todas las pruebas se conseguirá el
producto final. En el caso de previsiones de fabricación masiva será necesario
fabricar pre-series y probarlas para así minimizar los imprevistos de cara a la
fabricación en serie de altas cantidades.
Figura 1.3. Fases típicas de diseño de un SE.
Page 8
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
8
SEGUNDA UNIDAD. ORGANIZACIÓN COMPUTACIONAL.
2.1 Definición de procesador, controlador, computadora, DSP,
DSC.
Microprocesador: El microprocesador o procesador es el circuito integrado más
importante. Está formado por millones de transistores integrados. Incorpora en su interior
una unidad central de proceso (CPU) permitiendo enlazar otros dispositivos. Para realizar
su trabajo debe ejecutar paso a paso un programa que consiste en una secuencia de números
binarios o instrucciones, almacenándolas en uno o más elementos de memoria,
generalmente externos al mismo.
Microcontrolador: Es un dispositivo que alberga el sistema mínimo dentro de un único
chip, esto es, incluye CPU, buses, reloj, memoria ROM, memoria RAM, E/S, otros
periféricos tales como conversores A/D, temporizadores, contadores, moduladores de ancho
de pulso, etc.
Computadora: Es una máquina electrónica que recibe y procesa datos para convertirlos en
información útil. Una computadora es una colección de circuitos integrados y otros
componentes relacionados que pueden ejecutar con exactitud, rapidez y de acuerdo a lo
indicado por un usuario o automáticamente por otro programa, una gran variedad de
secuencias o rutinas de instrucciones que son ordenadas, organizadas y sistematizadas en
función a una amplia gama de aplicaciones prácticas y precisamente determinadas, proceso
al cual se le ha denominado con el nombre de programación y al que lo realiza se le llama
programador.
Procesador Digital de Señal (DSP): Es un sistema basado en un procesador o
microprocesador que posee un conjunto de instrucciones, un hardware y un software
optimizados para aplicaciones que requieran operaciones numéricas a muy alta velocidad.
Debido a esto es especialmente útil para el procesado y representación de señales
analógicas en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben
muestras, normalmente provenientes de un conversor analógico/digital (ADC), para realizar
tareas típicas de procesamiento digital de señales en tiempo real.
DSC: Dispositivos mixtos microcontrolador/DSP que algunos fabricante ofrecen dentro de
su catálogo de productos. Por ejemplo, Microchip ha unido la potencia y posibilidades de
sus microcontroladores de 16bits (MCU) con las prestaciones más interesantes de los DSP
para fabricar un circuito integrado denominado DSC. Dada las similitudes del DSC con los
MCU en cuanto arquitectura y repertorio de instrucciones, los usuarios de las familias de
microcontroladores PCI no encuentra dificultades para introducirse en el campo del
procesamiento digital de señales. Estos dispositivos se caracterizan por alcanzar un
rendimiento de 40 MIPS e integrar memoria FLASH de alta calidad junto a novedosos
recurso hardware, apoyándose en herramientas de desarrollo muy fáciles de manejar.
Page 9
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
9
2.2 Arquitectura general de una computadora y un sistema
mínimo.
La tecnología de los microprocesadores está evolucionando en dos direcciones:
i) Desempeño
ii) Integración.
Por un lado, el Desempeño hace énfasis en incrementar la velocidad y capacidad de
cómputo, junto con la habilidad de almacenar más datos. Las computadoras personales usan
estos microprocesadores como CPU.
Por otro lado, muchas aplicaciones de control se están beneficiando con la
reducción en el número de circuitos integrados y no necesitan incrementar el poder de
cómputo. Existe un gran deseo por mejorar la integración, aquí es cuando se desarrolla un
CPU con memoria y periféricos integrados al chip.
La siguiente figura muestra el diagrama de bloques de una computadora, y también
puede ser el diagrama a bloques de un microcontrolador.
Figura 2.1 Diagrama a bloques de una micro-computadora.
2.3 Definición y tipos de buses y memorias.
BUSES.
Los diferentes elementos que componen una computadora se tienen que comunicar de
alguna manera, y esta comunicación se realiza por los llamados buses. Los buses son un
conjunto de hilos o conexiones que llevan información de todo tipo de un elemento a otro,
transportando la información en paralelo. Hay 3 tipos de buses:
Bus de datos: Lleva los datos que es necesario enviar de un elemento a otro, puede ser
bidireccional. Existe un bus de datos interno: (ejemplo: entre el microprocesador y la
memoria) y uno externo, entre la computadora y sus periféricos (ejemplo: Computadora
e impresora).
Page 10
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
10
Bus de direcciones: Muchos de los elementos de una computadora así como las
posiciones de memoria tienen una dirección única dentro del sistema. De esta dirección
se puede leer un dato o en esta dirección podemos escribir un dato. En el bus de
direcciones se coloca la dirección del elemento a accesar y con ayuda del bus de datos
movemos la información de un elemento a otro.
Bus de control: Son hilos que transportan señales de control, dan la información del
estado de ciertos componentes, la dirección del flujo de la información, controlan el
momento (temporización) en que suceden ciertos eventos de manera que no haya
choques de datos, transmiten señales de interrupción, etc.
MEMORIA.
Parte de la computadora que almacena los programas y datos para que el programa que
esté en funcionamiento cumpla su tarea. Es por este motivo que esta memoria es de gran
velocidad. Existen dos tipos de memoria (memoria RAM y ROM):
MEMORIA RAM:
Memoria RAM (Random Acces Memory): Memoria de acceso aleatorio. En este
tipo de memoria se puede escribir y leer, pero los datos almacenados en ella
desaparecerán si se desconecta la energía. Hay diferentes tipos de memoria RAM, la
estática SRAM (retiene los datos mientras haya energía) y la dinámica DRAM (va
perdiendo el dato que tiene almacenado y hay que refrescarlos frecuentemente), por
este motivo las SRAM son más rápidas pero tienen menos capacidad que una
DRAM para un mismo dispositivo de memoria.
VRAM (Video RAM): Es un tipo especial de memoria RAM, que se utiliza en
adaptadores de video. Su principal diferencia es que puede ser accesada por dos
diferentes dispositivos en forma simultánea. Esto permite que un monitor pueda
acceder a la VRAM para actualizar la pantalla mientras que el procesador gráfico
suministra nuevos datos. Permite mejores rendimientos, pero es más cara.
RAMBUS: Esta memoria es exclusiva de las Pentium 4, y trabaja a una velocidad
de 400 a 800 Mhz del bus de datos
MEMORIA ROM:
Memoria ROM: (Read Only Memory) Memoria de sólo lectura. Este dispositivo
sólo permite leer la información que en el está grabada. Y no pierde la información
cuando se quita la energía. Normalmente vienen grabadas de fábrica.
Memoria PROM: Cuando se compra está en blanco (vacía) y mediante un proceso
el usuario graba la información en ella, pero sólo una vez.
Page 11
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
11
Memoria EPROM: (Erasable PROM) Igual a la anterior pero que mediante la
exposición de una ventana, en la parte superior del integrado, a la luz ultravioleta,
por un periodo definido de tiempo, se puede borrar.
Memoria EEPROM: (Electrical Erasable PROM) Igual a la anterior pero el borrado
se realiza eléctricamente.
Memoria Flash: Tipo especial de EEPROM que puede ser borrada y reprogramada
dentro de una computadora. Los EEPROM necesitan un dispositivo especial
llamado lector de PROM.
2.4 Arquitecturas internas: Von Neumann y Harvard.
Von Neumann John Von Neumann fue un matemático que propuso la arquitectura que es
considerada como tradicional en una computadora, dicha arquitectura se refiere
simplemente a que el CPU o el procesador se conecta a la memoria que guarda las
instrucciones y datos de los programas. Hay aspectos positivos en esta configuración como
son los accesos a tablas almacenadas en ROM y un set de instrucciones más ortogonal o
paralelo. El bus de direcciones es usado para identificar qué localidad de memoria está
siendo accesada, mientras que el bus de datos es utilizado para trasladar información entre
el CPU y alguna localidad de memoria o viceversa. En las primeras computadoras el
almacenamiento del programa era completamente diferente al almacenamiento de los datos.
Con un solo bus, la arquitectura Von Neumann es usada secuencialmente para acceder
instrucciones de la memoria de programa y ejecutarlas regresando desde/hacia la memoria
de datos. Esto significa que el ciclo de instrucción no puede traslaparse con algún acceso a
la memoria de datos.
Ventajas:
Tiene un bus de direcciones y de datos uniendo la memoria con el CPU.
Desventajas:
La longitud de las instrucciones se encuentra limitada por la longitud de los datos,
lo que ocasiona que el procesador se vea obligado a hacer varios accesos a memoria
al momento de buscar instrucciones complejas.
La velocidad de operación se encuentra limitada por el efecto “cuello de botella”, el
cual se refiere a que existe un sólo BUS para datos e instrucciones, lo que impide
superponer a ambos en el mismo tiempo de acceso. Esto provocaría que el
apuntador de programa o algún otro registro se corrompieran y apuntara a la
memoria de datos y se tomara ésta momentáneamente como memoria de programa.
Consecuentemente se ejecutaría una instrucción no deseada o un error en la
decodificación de la instrucción.
Page 12
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
12
La siguiente figura se refiere a la arquitectura básica de Von Neumann, de acuerdo a
su definición anterior:
Figura 2.2 Arquitectura básica de Von Neumann.
Harvard La arquitectura Harvard fue diseñada en Harvard por Howard Aiken, para
contrarrestar las debilidades de la arquitectura Von Neumann, donde la más importante es
la referente a el bus por donde se transportan los datos e instrucciones, el procesador se une
a dos tipos de memoria diferentes entre sí por medio de buses independientes, y se termina
con el problema de “cuello de botella”, ya que tanto los datos como las instrucciones viajan
por buses diferentes y no importa si el procesador los toma en el mismo tiempo de acceso.
Las dos memorias diferentes son la memoria de datos, donde se almacenan los datos de
programa, y la memoria de instrucciones, en las cuales se almacena el programa en sí.
Ventajas:
La velocidad de operación, o también llamada ancho de banda de operación, se
encuentra limitada por el efecto de “cuello de botella”, que como ya vimos, se
refiere a un bus único para datos e instrucciones lo que impide superponer ambos
tiempos de acceso.
La operación del Microcontrolador puede ser controlada más fácilmente si se
presentara una anomalía en el apuntador de programa.
Existe además la Arquitectura Harvard Modificada que permite accesos a tablas de
datos desde la memoria de programa. Esta última arquitectura es la dominante en
los microcontroladores actuales ya que la memoria de programa es usualmente
ROM, OTP, EPROM o FLASH mientras que la memoria de datos es usualmente
RAM. Consecuentemente, las tablas de datos pueden estar en la memoria de
programa sin que sean perdidas cada vez que el sistema es apagado.
Page 13
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
13
Otra ventaja importante en la arquitectura Harvard Modificada es que las
transferencias de datos pueden ser traslapadas con los ciclos de decodificación de
instrucciones. Esto quiere decir que la siguiente instrucción puede ser cargada de la
memoria de programa mientras se está ejecutando una instrucción interviniendo la
memoria de datos.
Desventajas:
Los procesadores con este tipo de arquitectura deben poseer instrucciones especiales
para acceder a tablas de valores constantes necesarios a incluir en los programas, ya
que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo
en la EPROM de un microprocesador).
La desventaja de la arquitectura Harvard Modificada podría ser que se requieren
instrucciones especiales para accesar valores en RAM y ROM haciendo la
programación un poco complicada.
La siguiente figura se refiere a la arquitectura básica Harvard, de acuerdo a su
definición anterior:
Figura 2.3 Arquitectura básica Harvard.
2.5 Organización del procesador.
ALU (Unidad Aritmética y Lógica)
Las instrucciones de programa y los datos que se van a procesar se almacenan en la
memoria, la ALU se considera como el corazón o elemento principal del CPU debido a que
todas las instrucciones se refieren al procesado de los datos por medio del ALU. La primera
ALU era del tipo BCD, después se implementó un ALU de complemento a 2, actualmente
las ALU´s trabajan en ambos modos.
Page 14
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
14
Los siguientes son ejemplos de operaciones que realiza la ALU: Limpiar,
Complementar, Incrementar, Decrementar, Negar, Transferir, Sumar, Restar, Dividir,
Multiplicar, Corrimiento, AND, OR, XOR.
La siguiente figura muestra el símbolo de la ALU.
Figura 2.4 Símbolo de la ALU.
Decodificador de Instrucciones.
Se encarga de traducir las instrucciones en señales de control. Normalmente se
implementa utilizando máquinas de estado donde su tamaño y velocidad dependen del
diseño en particular, aunque actualmente ésta es la parte principal de control y hace la
diferencia entre procesadores RISC y CISC.
Secuenciadores.
Esta es otra de las partes principales de control y cuya función principal es que se
encarga del direccionamiento de la memoria de programa, no sólo se puede incrementar de
uno en uno, sino que puede cargar un valor arbitrario debido a un brinco, llamado
subrutina, interrupción, etc. Podemos decir que la salida de los secuenciadores es el
Program Counter que es el registro que apunta directamente a la memoria de programa. Los
secuenciadores normalmente actúan a la par con la pila, la pila se encarga de proporcionar
al secuenciador la dirección a la cual debe retornar después de una interrupción o subrutina.
Registro de Banderas.
Es un registro especial donde el CPU indica algún cambio en la última operación
realizada, los brincos (instrucciones) condicionales siempre van a leer este registro antes de
brincar. Esta bandera siempre es leída entonces por el decodificador de instrucciones.
El registro de banderas normalmente es de 8 bits en los microcontroladores, aunque
Intel tiene procesadores con registros de banderas de 32 bits. Algunas de las principales
banderas son:
C (Acarreo): Indica un acarreo después de una suma o un préstamo después de una resta.
La bandera de acarreo también indica condiciones de error en ciertos programas y
procedimientos. También se utiliza en algunas instrucciones de rotación y desplazamiento.
A (Acarreo Auxiliar): Indica un acarreo después de una suma o un préstamo después de una
resta entre las posiciones de los bits 3 y 4 en el resultado.
Z (Zero): Indica que el resultado de una operación aritmética o lógica es cero. Si Z=1, el
resultado es cero, si Z=0 entonces el resultado no es cero.
Page 15
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
15
S (Signo): Indica el signo aritmético del resultado después de una suma o resta. Si S=1 la
bandera de signo se activa y el resultado es negativo. Si S=0 la bandera de signo se
desactiva y el resultado es positivo. Se debe tener en cuenta que el valor de la posición del
bit más significativo se coloca en el bit de signo para cualquier instrucción que afecte las
banderas.
O (Sobreflujo): Es una condición que ocurre cuando se suman o restan números con signo.
Un sobreflujo indica que el resultado ha excedido de la capacidad de la maquina. Por
ejemplo, si se suma un 7FH (+127) a 01H (+1) el resultado es 80H (-128). Este resultado
representa una situación de sobreflujo señalado por la bandera para la suma con signo. Para
operaciones sin signo no se toma en cuenta esta bandera.
Registro de Interrupciones, Mascaras y Control.
Este registro es la salida principal del secuenciador, y es el que guarda la dirección
de la memoria de programa en la cual se encuentra la siguiente instrucción.
2.6 Organización de la memoria.
La tabla 2.1 muestra el mapa de registro del dispositivo después del Reset.
Tabla 2.1 Mapa de Registro del Dispositivo.
Page 16
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
16
La siguiente figura ilustra el mapa de memoria completo del dispositivo.
Figura 2.5 Mapa de memoria completo del Microcontrolador MC9S12C32.
2.7 Arquitecturas del procesador: CISC, RISC y SISC.
Una de las primeras decisiones a la hora de diseñar un microprocesador es decidir cuál
será su juego de instrucciones. La decisión es trascendente por dos razones; primero, el
juego de instrucciones decide el diseño físico del conjunto; segundo, cualquier operación
que deba ejecutarse en el microprocesador deberá poder ser descrita en términos de un
lenguaje de estas instrucciones. Frente a esta cuestión caben dos filosofías de diseño;
máquinas denominadas CISC y máquinas denominadas RISC.
Cuando hablamos de microprocesadores CISC, computadoras con un conjunto de
instrucciones complejo, del inglés complex instruction set computer, y procesadores RISC,
computadoras con un conjunto de instrucciones reducido, del inglés reduced instruction set
computer, se piensa que los atributos complejo y reducido describen las diferencias entre
los dos modelos de arquitectura para microprocesadores.
Page 17
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
17
ARQUITECTURA CISC
La tecnología CISC (Complex Instruction Set Computer) nació de la mano de Intel,
creador en 1971 del primer microchip que permitiría el nacimiento de la informática
personal. Más concretamente, sería en 1972 cuando aparecería el 8080, primer chip capaz
de procesar 8 bits, suficiente para representar números y letras. Con la posibilidad de
colocar todos los circuitos en un solo chip y la capacidad de manejar número y letras
nacería la cuarta generación de ordenadores, la de los conocidos como PC u ordenadores
personales.
Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza
por ser muy amplio y permitir operaciones complejas entre operandos situados en la
memoria o en los registros internos. Este tipo de arquitectura dificulta el paralelismo entre
instrucciones, por lo que en la actualidad la mayoría de los sistemas CISC de alto
rendimiento implementan un sistema que convierte dichas instrucciones complejas en
varias instrucciones simples, llamadas generalmente microinstrucciones.
La microprogramación es una característica importante y esencial de casi todas las
arquitecturas CISC. La microprogramación significa que cada instrucción de máquina es
interpretada por un microprograma localizado en una memoria en el circuito integrado del
procesador. Las instrucciones compuestas son decodificadas internamente y ejecutadas con
una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren
de varios ciclos de reloj, al menos uno por microinstrucción. Es así entonces como los chips
CISC utilizan comandos que incorporan una gran diversidad de pequeñas instrucciones
para realizar una única operación.
Entre las bondades de CISC destacan las siguientes:
Reduce la dificultad de crear compiladores.
Permite reducir el costo total del sistema.
Reduce los costos de creación de software.
Mejora la compactación de código.
Facilita la depuración de errores.
Ejemplo de microprocesadores basados en la tecnología CISC:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.
Page 18
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
18
ARQUITECTURA RISC
Buscando aumentar la velocidad del procesamiento se descubrió en base a
experimentos que, con una determinada arquitectura de base, la ejecución de programas
compilados directamente con microinstrucciones y residentes en memoria externa al
circuito integrado resultaban ser más eficientes, gracias a que el tiempo de acceso de las
memorias se fue decrementando conforme se mejoraba su tecnología de encapsulado.
La arquitectura RISC funciona de modo muy diferente a la CISC, su objetivo no es
ahorrar esfuerzos externos por parte del software con sus accesos a la RAM, sino facilitar
que las instrucciones sean ejecutadas lo más rápidamente posible. La forma de conseguirlo
es simplificando el tipo de instrucciones que ejecuta el procesador. Así, las instrucciones
más breves y sencillas de un procesador RISC son capaces de ejecutarse mucho más aprisa
que las instrucciones más largas y complejas de un chip CISC. Sin embargo, este diseño
requiere de mucha más RAM y de una tecnología de compilador más avanzada.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de
diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la
aplicación de las más recientes tecnologías de semiconductores. Además, los comandos de
RISC son todos del mismo tamaño y se cargan y almacenan del mismo modo. Al ser estas
instrucciones pequeñas y sencillas, no necesitan ser descodificadas en instrucciones
menores como en el caso de los chips CISC, pues ya constituyen en sí unidades
descodificadas. Por ello, el procesador RISC no gasta tiempo verificando el tamaño del
comando, en descodificarlo ni en averiguar cómo cargarlo y guardarlo.
Entre las ventajas de RISC tenemos las siguientes:
La CPU trabaja más rápido al utilizar menos ciclos de reloj para ejecutar
instrucciones.
Utiliza un sistema de direcciones no destructivas en RAM. Eso significa que a
diferencia de CISC, RISC conserva después de realizar sus operaciones en memoria
los dos operandos y su resultado, reduciendo la ejecución de nuevas operaciones.
Cada instrucción puede ser ejecutada en un solo ciclo del CPU
Ejemplo de microprocesadores basados en la tecnología CISC:
PA-RISC, Hewlett Packard.
SPARC, Scalable Processor Architecture, Sun Microsystems.
POWER PC, Apple, Motorola e IBM.
Page 19
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
19
2.8 Arquitecturas DSP, DSC.
DSP
A lo largo de los últimos años, la aparición y posterior desarrollo de los dispositivos
especializados en el procesado digital de señales o DSPs ha supuesto la apertura de una
nueva vía de evolución hacia niveles superiores en el tratamiento de datos. En este corto
espacio de tiempo, debido a su bajo coste y gran rendimiento, los DSPs han reemplazado
casi por completo a la tecnología analógica tradicional en campos como
telecomunicaciones, procesado de audio y vídeo y control industrial. Se ha generalizado el
diseño de soluciones en este campo por parte de empresas de primer nivel, desarrolladores
independientes y universidades.
Figura 2.6. Diagrma de un SE que incorpora un nuclo DSP y modulos adicionales .
Es necesario un conocimiento de la teoría de tratamiento digital de señales, en la
que se basan estos procesadores, para poder comprender el porqué de las arquitecturas que
emplean estos procesadores así como disponer de criterios ante la posible la elección del
procesador idóneo para un proceso determinado.
DSC
El fabricante Microchip lanzó la familia dsPIC con el objetivo de cubrir el nicho de
mercado existente entre las aplicaciones que les basta con un microcontrolador y aquellas
específicas donde los DSP de altas prestaciones son la solución idónea. La idea era
conseguir, dentro de un mismo chip, las funciones MCU+DSP=DSC aunque con
prestaciones mas limitadas, serían útiles a muchas aplicaciones industriales que emplean
procesamiento de señales no muy complejo.
Se tratara de una CPU de altas prestaciones con arquitectura Harvard modificada,
que emplea 24 bits para codificar cada instrucción.Hay que tener en cuenta, que aunque se
disponga de 144 Kb de memoria de programa, solo podemos direccionar 48K instrucciones.
Page 20
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
20
Consigue hasta 30 millones de instrucciones por segundo e incorpora 41 fuentes de
interrupción. Incorpora hasta 4 Kbytes de memoria de datos tipo EEPROM. El fabricante
separa las prestaciones como microcontrolador y como DSP.
2.9 Ejecución de instrucciones y pipeline.
El ciclo de instrucción podemos dividirlo en tres partes:
1. Tomar la siguiente instrucción (fetch).
2. Decodificar la instrucción.
3. Ejecutar la instrucción.
Tomar la siguiente instrucción (fetch).
El procesador siempre tiene su registro PC (Contador de Programa) apuntando a la
dirección de memoria de la siguiente instrucción a ejecutar. Durante esta fase el procesador
extrae la instrucción de la memoria apuntada por el PC volcando el contenido de este
registro al bus de direcciones y pidiendo una operación de lectura a la memoria.
Simultáneamente a esta petición, el PC se incrementará en una unidad para apuntar a la
siguiente instrucción o bien al primer operando de la instrucción extraída si esta lo tuviera.
Cuando la memoria está preparada para atender la petición, vuelca el contenido de la
dirección pedida al bus de datos de donde el procesador recoge el código de operación y lo
coloca en un registro especial llamado Registro de Instrucción (IR).
Decodificar la instrucción.
Una vez tiene el código de operación alojado en el IR, el procesador decodifica éste
para saber de qué instrucción se trata y obtiene los parámetros de la memoria (si los
tuviera), incrementando el PC en una unidad por cada parámetro extraído.
Ejecutar la instrucción.
Llegado a este paso, el procesador ya sabe de qué instrucción se trata y los parámetros
que necesita, luego simplemente la ejecuta de la forma apropiada.
Al finalizar este paso finaliza una iteración del ciclo de instrucción, volveremos al fetch de
la siguiente instrucción y así sucesivamente.
Pipeline
Es una técnica empleada en el diseño de procesadores, basada en la división de la
ejecución de las instrucciones en etapas, consiguiendo así que una instrucción empiece a
ejecutarse antes de que hayan terminado las anteriores y, por tanto, que haya varias
instrucciones procesándose simultáneamente. Cada una de las etapas debe completar sus
acciones en un ciclo de reloj, pasando sus resultados a la etapa siguiente y recibiéndolos de
la anterior. Para eso es necesario almacenar los datos en registros intermedios. Cualquier
valor que pueda ser necesario en una etapa posterior debe irse propagando a través de esos
registros intermedios hasta que ya no sea necesario. Para conseguir la segmentación es
necesario que una instrucción utilice solamente una etapa en cada ciclo de ejecución.
Page 21
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
21
Ya que todas las etapas deben de tardar lo mismo en su ejecución, el tiempo de ciclo
será el de la etapa más lenta, más el del retardo provocado por la utilización de los registros
intermedios. Comparando este esquema con el multiciclo, el tiempo de ciclo será más lento,
pero el CPI (Ciclos Por Instrucción) será menor, lo que provoca un aumento del
rendimiento. Ya que si no tenemos en cuenta los riesgos estructurales (que pueden provocar
paradas en el pipeline), tendríamos que en cada ciclo de reloj, termina de ejecutarse una
instrucción (CPI=1).
2.10 Recursos internos de los microcontroladores.
Al estar todos los microcontroladores integrados en un chip, su estructura fundamental
y sus características básicas son muy parecidas. Todos deben disponer de los bloques
esenciales Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de
reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar
los recursos más idóneos para las aplicaciones a las que se destinan preferentemente.
A continuación se describen todos los recursos que se hallan en todos los
microcontroladores describiendo las diversas alternativas y opciones que pueden
encontrarse según el modelo seleccionado.
Recursos Especiales.
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 costo, 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 E/S digitales.
• 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).
Page 22
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
22
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 alguno de los pines del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos.
Perro guardián o "Watchdog".
Cuando el computador personal se bloquea por un fallo del software u otra causa, se
pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin
el control de un supervisor y de forma continuada las 24 horas del día. 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, no se refrescará al Perro guardián y, al completar su temporización, "ladrará y
ladrará" hasta provocar el reset.
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.
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 o WAIT), 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.
Convertidor A/D (ADC).
Los microcontroladores que incorporan un Convertidor 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 ADC diversas señales analógicas desde
los pines del circuito integrado.
Convertidor D/A (DAC).
Transforma los datos digitales obtenidos del procesamiento de la computadora en su
correspondiente señal analógica que saca al exterior por uno de los pines del encapsulado.
Existen muchos efectores que trabajan con señales analógicas.
Page 23
M.C Abel Díaz Olivares Sistemas Embebidos para el Automóvil
23
Comparador analógico.
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 uno de los pines del encapsulado. 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 los pines del encapsulado.
Puertos de E/S digitales.
Todos los microcontroladores destinan algunos de sus pines a soportar líneas de E/S
digitales. 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.
Puertos de comunicación.
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), que es un moderno bus serie para los PC.
Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), para permitir la adaptación con redes de
conexión multiplexado, desarrollado conjuntamente por Bosch e Intel para el
cableado de dispositivos en automóviles. En EE.UU. se usa el J185O.
2.11 Selección de los microcontroladores.
Cuando se desea armar un sistema de cómputo la primera decisión es cual
microprocesador usar, para ello vamos a utilizar la clasificación en cuanto a lo siguiente:
Tamaño del bus (datos, dirección
y control).
Compatibilidad.
Condiciones Ambientales.
Duración (Tiempo).
Tamaño físico.
Velocidad del procesador (clock).
Arquitectura.
Material de fabricación.
Costo.
Desempeño.
Fabricante.
Page 24
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
24
TERCERA UNIDAD. MICROCONTROLADOR HC12.
3.1 Introducción al Microcontrolador HC12
La tecnología de los microprocesadores está evolucionando en dos direcciones:
i) Desempeño
ii) Integración.
Por un lado, el Desempeño hace énfasis en incrementar la velocidad y capacidad de
cómputo, junto con la habilidad de almacenar más datos. Las computadoras personales usan
estos microprocesadores como CPU.
Por otro lado, muchas aplicaciones de control se están beneficiando con la
reducción en el número de circuitos integrados y no necesitan incrementar el poder de
cómputo. Existe un gran deseo por mejorar la integración, aquí es cuando se desarrolla un
CPU con memoria y periféricos integrados al chip. La siguiente figura muestra el diagrama
de bloques de una computadora, y también puede ser el diagrama a bloques de un
microcontrolador.
Figura 1.1 Diagrama a bloques de una micro-computadora.
El primer microprocesador de Motorola, una compañía de Phoenix, AZ, fue el 6800.
Le siguieron los microprocesadores 6808, 6809 y 6802. Usando éstos diseños construyeron
el microcontrolador 6801 que incluyó algunos circuitos de memoria y periféricos, este
dispositivo llegó a ser popular en sistemas de control de autos. Luego, se desarrolló otro
microcontrolador muy popular, el 6805, al cual todavía se le encuentra en aplicaciones de
baja velocidad, o como esclavo de otros micros.
Posteriormente, en 1985 Motorola desarrolló el 68HC11, un microcontrolador
compatible con el 6800. En 1991. Motorola desarrolló el 68HC16, que es compatible con el
68HC11. Una primera distinción entre el 68HC11 y los procesadores anteriores está en el
método de fabricación, el 68HC11 utiliza tecnología CMOS de alta densidad (HCMOS).
Page 25
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
25
Cuando un microcontrolador se fabrica usando este proceso, se vuelve más pequeño
y más rápido, además utiliza menos potencia y tiene una alta tolerancia al ruido, factores
muy importantes en aplicaciones de control.
Con el afán de competir con fabricantes de micros baratos, Motorola desarrollo el
68HC08. Incluía 32K de RAM, 8 (4) canales del ADC y 2 canales de PWM además de
Temporizadores y 2 puertos seriales. Después se desarrolla el 68HC12 que es un micro de
16 bits, compatible con 68HC11 y que reúne una gran cantidad de ventajas.
3.2 Características principales de la familia HCS12.
Compatible con 68HC11
25 MHz de velocidad en el bus
Ruta de Datos de 16 bits
32 KB de memoria Flash EEPROM
2 KB de RAM
1 Puerto Serial Asíncrono (SCI)
1 Puerto Serial Síncrono (SPI)
1 Puerto Serial CAN 2.0 de 1M bit por segundo
8 Canales del Temporizador Programable
6 Canales del Modulador de Ancho de Pulsos (PWM)
8 Canales del Convertidor Análogo-Digital (ADC) de 10 bits
52 terminales para puertos de Entrada/Salida (I/O)
Cola de instrucciones de 3 bytes
Direccionamiento Indexado muy versátil
Soporte para Lógica Difusa
Voltaje de entrada de 2.97 a 5.5 Volts
Figura 3.1 Codificado del Número de Parte
Page 26
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
26
3.3 Arquitectura y registros del HC12.
Figura 3.2 Diagrama de Bloques de la Familia HC12
Page 27
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
27
Registros del HCS12.
Se denomina CPU al Core del microcontrolador. Existen varias versiones del HC12,
pero el Core es el mismo.
Figura 3.3 Modelo de Programación del CPU12
Acumuladores (A , B y D).
Los acumuladores A (ACCA) y B (ACCB) son registros acumuladores de propósito
general de 8 bits. Se utilizan para retener operandos y resultados de operaciones aritméticas
y movimiento de datos. Algunas instrucciones los tratan como un acumulador de 16 bits
(acumulador doble ACCD). La mayoría de las instrucciones usan A o B indistintamente,
pero existen algunas excepciones: La instrucción ABX y ABY suman el contenido de B a
los registros IX o IY pero no existe instrucción equivalente para A. Las instrucciones TAP
y TPA se usan para intercambiar los datos entre el acumulador A y el registro de códigos de
condición, y no hay equivalente para el acumulador B. La instrucción de ajuste decimal al
acumulador (DAA) solo existe para A. Finalmente, la suma, resta y comparación entre
acumuladores operan solo en una dirección; por lo tanto es importante planear
adecuadamente en cual acumulador poner el operando.
Registros Índices (X y Y)
Son usados en el modo de direccionamiento indexado. En este modo, los contenidos
de estos índices de 16 bits, son sumados a un desplazamiento (offset) de 8 bits para obtener
la dirección efectiva del operando que se usará en la instrucción.
Page 28
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
28
Apuntador de la Pila (SP).
La pila puede estar en cualquier ubicación de los 64 Kb de memoria y puede tener
cualquier tamaño, mientras el espacio lo permita. Cada vez que una instrucción mete un
dato al stack, el SP se decrementa automáticamente. Cuando se saca un dato de la pila, el
SP se incrementa automáticamente. En cualquier momento, el SP retiene la siguiente
localidad de 16 bits libre del stack. La pila es usada para llamadas a subrutinas,
interrupciones y como almacenamiento temporal de datos.
Contador de Programa (PC)
Es un registro de 16 bits que aloja la dirección de la siguiente localidad a ser
ejecutada.
Registro de Código de Condición (CCR).
Contiene cinco indicadores de estado, dos bits de mascara de interrupción y un bit
de deshabilitación de STOP.
La bandera C se usa para indicar Acarreo (Carry) en sumas, y préstamo (Borrow) en
restas. También es un indicador de error en multiplicaciones y divisiones. Las
instrucciones de corrimiento y rotación a través del carry se usan para facilitar
operaciones de múltiples bytes.
La bandera V (Overflow) indica que una operación de complementos a dos ha
producido un desbordamiento.
La bandera Z (Zero) se enciende cuando todos los bits de un resultado son cero.
La bandera N (Negative) refleja el bit más significativo (MSB) del resultado. En
complemento a dos este bit es uno para números negativos y cero para números
positivos.
La bandera H indica un acarreo del bit 3 durante una suma, se usa para ajustar
números que están en formato BCD
La máscara de interrupción (bit I) es un deshabilitador de todas las interrupciones
enmascarables. Mientras este bit este encendido, el procesador deja pendientes las
interrupciones, no las atiende, pero las memoriza, las atenderá cuando este bit se
apague Se enciende automáticamente al meter a la pila los registros pero antes de ir
por el vector de interrupciones.
El bit X (XIRQ mask) se usa para deshabilitar las interrupciones del pin /XIRQ.
Este pin es una versión moderna del /NMI (Non-Maskable Interrupts) de los
primeros micros.
Después del reset, el bit X se activa y mientras permanezca en UNO, las
interrupciones hechas en pin XIRQ serán ignoradas. Una instrucción debe apagar el bit X
para habilitar interrupciones en el pin XIRQ.
Page 29
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
29
Después de que bit ha sido apagado, no se podrá regresar a UNO mediante una
instrucción de software. Esto la hará la instrucción RTI al final de la interrupción. Aunque
al entrar a la interrupción, la bandera X e I serán puestas en UNO para evitar interferir la
interrupción.
3.4 Modos de direccionamiento.
Todos los modos de direccionamiento del HC11 los soporta el HC12 y además se
incluyen nuevos modos de direccionamiento indexado
Existen seis modos básicos de direccionamiento para acceder a los datos:
Inmediato
Directo
Extendido
Indexado
Inherente
Relativo
Inmediato. El argumento se encuentra inmediatamente después de la instrucción. Por
ejemplo:
LDAA #$AC ; Carga el acumulador A con el numero AC hexadecimal
LDD #1492 ; Carga el acumulador doble con el numero 1492 decimal
Directo. Permite acceder de las localidades $0000 a $00FF, indicando el ultimo byte de la
localidad. Por ejemplo:
LDAA $AC ; Carga A con el contenido de la localidad AC hexadecimal
STAB $7 ; Guarda el contenido de B en la localidad 7.
Extendido. La dirección efectiva se expresa usando dos bytes. Permite acceder los 64KB
de memoria. Por ejemplo:
LDAA $AA03 ; Carga A con el contenido de la localidad AA03
ADDB $01F5 ; Suma el acumulador B y el contenido de 01F5
Indexado. Es el modo más versátil de todos. Se dispone de las siguientes variantes:
Indexado con offset de 5, 9 o 16 bits. El offset se suma al registro base (X, Y, SP o PC)
para formar la dirección de memoria que será afectada por la instrucción. Por ejemplo,
asuma que X contiene un $1000 y Y un $2000,
LDAA 0,X ;Carga el acumulador con el contenido de la localidad
;$1000 ($1000 + 0)
STAB -8,Y ;Guarda el contenido del acumulador B en la
; localidad $1FF8 ($2000 - 8)
LDAA $FF,X ;Carga el acumulador con el contenido de la localidad
;$10FF ($1000 + $FF)
STAB -20,Y ;Guarda el contenido del acumulador B en la
; localidad $1FEC ($2000 - 20)
Page 30
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
30
Indexado Indirecto de 16 bits. La dirección efectiva se obtiene del contenido de la dirección
que resulte de sumar un registro base a un número. Por ejemplo, asuma que X contiene un
$1000 y que en la localidad $100A y $100B se tiene un $2000,
LDAA [10,X] ;Carga el acumulador con el contenido de la localidad
;que resulte de sumar $1000 y $A
Indexado con Auto Pre/Post Decremento/Incremento. Este direccionamiento provee cuatro
formas de cambiar automáticamente un Registro Índice Base al ejecutar una instrucción.
Los registros base pueden ser X, Y o SP.
El pre-decremento y pre-incremento modifican el registro base antes de acceder a la
memoria. El post-decremento y post-incremento usan el valor inicial del registro y después
de acceder la memoria lo modifican. Por ejemplo:
STAA 1,–SP ;equivalente a PSHA
STX 2,–SP ;equivalente a PSHX
LDX 2,SP+ ;equivalente a PULX
LDAA 1,SP+ ;equivalente a PULA
Indexado con un offset en un acumulador. Ejemplo
LDAA B,X ;Carga el acumulador A con el contenido de la
; localidad que resulte de sumar B y X
Indexado Indirecto con el acumulador D. Usa un cálculo indirecto donde primero suma el
acumulador D a un número y de allí obtiene una dirección, el contenido de esta es el valor
que se usa. Por Ejemplo:
JMP [D, PC] ; Salta a la localidad que se encuentre en la dirección
; de resulte de sumar D + PC
Inherente. El operando esta implícito en la instrucción, es decir, no requiere ir por ningún
argumento. Por ejemplo:
ABA ; Suma acumuladores
INCB ; Incrementa B
Relativo. Se utiliza únicamente para saltos. Estas instrucciones consumen dos bytes, el
segundo byte se suma al contenido actual del PC, pudiendo ser un salto hacia atrás o hacia
adelante. Ejemplo:
BRA INICIO ; Salta a la etiqueta Inicio
BCC LBCC ; Salto largo si el carry esta apagado
BEQ $ ; Salta aquí mismo
LBCC: JMP MAS_ALLA
Page 31
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
31
3.5 Modos de operación.
Modos de Operación Normal y Emulación
Normal Single-Chip Mode
Normal Expanded Wide Mode
Normal Expanded Narrow Mode
Emulation Expanded Wide Mode
Emulation Expanded Narrow Mode
Modos de Operación Especiales
Special Single-Chip Mode with active Background Debug Mode
Special Test Mode (Motorola use only)
Special Peripheral Mode (Motorola use only)
3.6 Organización de la memoria.
Figura 3.4 Resumen del Mapa de Memoria
Page 32
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
32
Figura 3.5 Mapa de Memoria del MC9S12C32
3.7 Conjunto de Instrucciones.
Se considera que el HC12 tiene un superjuego de instrucciones del juego de
instrucciones del HC11. El código escrito para el HC11 puede ser ensamblado y ejecutado
en el HC12. Para una descripción completa vea el manual del microcontrolador.
Instrucciones de Carga y Almacenamiento.
Las instrucciones de carga copian contenidos de localidades de memoria en algún
registro del microcontrolador. Las banderas del CCR se afectan automáticamente, excepto
en las instrucciones LEA…
Page 33
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
33
Figura 3.6 Instrucciones de Carga
Las instrucciones de Almacenamiento copian el contenido de registros a memoria.
Automáticamente se afectan las banderas correspondientes.
Figura 3.7 Instrucciones de Almacenamiento
Instrucciones de Transferencia e Intercambio.
Las instrucciones de Transferencia copian contenidos de un registro a otro. La
instrucción TFR es universal para cualquier registro como fuente o destino. Se conservan
las transferencias entre acumuladores TAB y TBA para compatibilidad con el HC11. Estas
dos últimas instrucciones afectan las banderas, pero TFR no las afecta. Las instrucciones
de Intercambio pasan datos entre registros.
Figura 3.8 Instrucciones de Transferencia e Intercambio
Page 34
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
34
Instrucciones de Movimiento de Datos.
Permiten copiar contenidos entre localidades de memoria, sin afectar registros. Se
tienen seis combinaciones: IMM → EXT, IMM → IDX, EXT → EXT, EXT → IDX, IDX → EXT, IDX → IDX.
Figura 3.9 Instrucciones de Movimiento de Datos
Instrucciones de Adición y Substracción.
Se dispone de sumas y restas con y sin signo en 8 y 16 bits
Figura 3.10 Instrucciones de Suma y Resta
Instrucciones con números BCD.
Cuando se sumen números BCD, se afectara la bandera Half-carry (H), enseguida
hacer ajustes DAA.
Figura 3.11 Instrucciones con números BCD
Page 35
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
35
Instrucciones de Decremento e Incremento.
Son operaciones restas y sumas optimizadas en 8 y 16 bits. No afectan la bandera
Carry.
Figura 3.12 Instrucciones de Decremento e Incremento
Instrucciones de Comparación y Prueba.
Estas instrucciones realizan restas, pero el resultado no se almacena, solo se afectan
las banderas correspondientes.
Figura 3.13 Instrucciones de Comparación y Prueba
Page 36
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
36
Instrucciones Lógicas.
Realizan operaciones lógicas entre el acumulador o el CCR y la memoria.
Figura 3.14 Instrucciones Lógicas
Instrucciones de Borrado, Complemento y Negación.
La instrucción Clear llena de ceros el Acumulador o la Memoria. El complemento a
1 niega cada bit y la Negación realiza el complemento a dos.
Figura 3.15 Instrucciones de Borrado, Complemento y Negación
Instrucciones de Prueba y Manipulación de Bits.
Se utiliza una máscara para probar y manipular los bits en el acumulador o
memoria.
Figura 3.16 Instrucciones de Prueba y Manipulación de Bits
Page 37
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
37
Instrucciones de Multiplicación y División.
Se tiene multiplicación con signo y sin signo en 8 y 16 bits. El producto es de 16 y
32 bits respectivamente. La División entera y fraccional usa divisor, dividendo, cociente y
residuo de 16 bits. La división extendida usa un dividendo de 32 bits con divisor, cociente y
residuo de 16 bits.
Figura 3.17 Instrucciones de Multiplicación y División
Instrucciones de Corrimiento y Rotación.
Se tienen corrimientos y rotaciones para todos los acumuladores y la memoria. En
todos los casos, el bit que sale, se pasa al Carry para facilitar las operaciones de múltiples
bytes.
Figura 3.18 Instrucciones de Corrimiento y Rotación.
Page 38
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
38
Instrucciones de Saltos.
Producen que una secuencia se altere si se satisface una condición. Existen tres tipos
de saltos: saltos cortos, saltos largos y saltos causados por bits. Los saltos cortos permiten
saltar en un rango de -128 a 127 bytes. Los saltos largos permiten saltar a cualquier lugar de
los 64KB de memoria. Los saltos causados por bits tienen un rango de -128 a 127 bytes.
Figura 3.19 Instrucciones de Saltos Cortos
Figura 3.20 Instrucciones de Saltos Largos
Page 39
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
39
Figura 3.21 Instrucciones de Saltos causados por bits
Instrucciones de Subrutinas.
Para llamar a una subrutina, normalmente se utilizan BSR o JSR. Si la subrutina
esta en memoria expandida se usa CALL. La subrutina debe terminar con RTS para las dos
primeras llamadas. Para terminar una CALL utilice RTC.
Figura 3.22 Instrucciones para Subrutinas
Instrucciones para Manipular los Índices
Permiten manipular los índices, los acumuladores y la memoria.
Figura 3.23 Instrucciones para Manipular Índices
Page 40
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
40
Instrucciones para Manejar el Stack
Figura 3.24 Instrucciones para Manipular el Stack.
Instrucciones para Manejar el Código de Condición.
Figura 3.25 Instrucciones para Manipular el Código de Condición.
Page 41
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
41
3.8 Modelo de Programación.
3.8.1 Programas en línea recta.
Ejemplo 1 Desempacado de dígitos
Separe el contenido de la localidad $0800 en dos secciones de 4 bits (nibbles) y
guárdelos en $0801 y $0802. Coloque los cuatro bits más significativos de la localidad
$0800 en los cuatro bits menos significativos de la localidad $0801; coloque los cuatro bits
menos significativos de la localidad $0800 en los cuatro bits menos significativos de la
localidad $0802.
Problema Ejemplo:
($0800) = AE
Resultado ($0801) = 0A
($0802) = 0E
Programa Fuente:
ORG $4000 ;Inicio del bloque Flash ROM
LDAA $800 ;Trae dato a desempacar
TAB ;Respalda dato
ANDA #$0F ;Mata nibble alto
STAA $802 ;Guarda nibble bajo en DATO2
ANDB #$F0 ;Mata nibble bajo
LSRB ;Pasa nibble alto a nibble bajo
LSRB
LSRB
LSRB
STAB $801 ;Guarda nibble alto en DATO3
WAI
ORG $0800
FCB $AE,00,00
Ejemplo 2
Encontrar el mayor de dos números
Coloque al mayor de los contenidos de las localidades 0800 y 0801 en la localidad
0802. Asuma que los contenidos de 0800 y 0801 son números de 8 bits sin signo.
Problema Ejemplo:
a. (0800) = 3F
(0801) = 2B
Resultado (0802) = 3F
b. (0800) = 75
Page 42
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
42
(0801) = A8
Resultado (0802) = A8
Diagrama de flujo
Programa Fuente:
ORG $4000
LDD $0800 ;Carga dato en A y B
CBA ;Compara
BCS GUARDA ;Salta si B mayor
TAB ;Pasa dato en A a B
GUARDA STAB $802 ;Guarda resultado
WAI
ORG $0800
FCB $3F,$A5,00
END
Ejemplo 3
Raíz Cuadrada
Calcule la raíz cuadrada del número que esta en la localidad 0801 a partir de una
tabla y coloque el resultado en la localidad 0800. Asuma que el número en la localidad
Inicio
Dato1 = (0800)
Dato2 = (0801)
Es
Dato1>Dato2
?
Dato1 = Dato2
(0802) = Dato1
Fin
SI
NO
Page 43
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
43
0801 es un entero sin signo entre 0 y 99. La tabla inicia a partir de la localidad 0810, el
primer dígito es la parte entera y el segundo es la fracción, expresados en BCD.
Problema Ejemplo:
a. (0801) = 02
Resultado (0800) = 14 Porque la raíz de 2 es 1.4142
b. (00801) = 0C
Resultado (0800) = 35 Por que la raíz de 12 es 3.4641
Programa Fuente:
ORG $4000
INICIO LDAB $801 ;Trae dato a B
CLRA ;Limpia para definir dir. de 16 bits
XGDX ;Pasa dir. de 16 bits a X
LDAA $810,X ;Trae valor de la tabla
GUARDA STAA $800 ;Guarda raíz en localidad $800
BRA INICIO
ORG $810 ;Aquí va la tabla
FCB 00,$10,$14,$17,$20,$22,$25,$26,$28,$30
END
3.18.2 Programas con lazos.
Los lazos son la estructura mas utilizada en programación, permiten realizar tareas
repetitivas a muy alta velocidad y con gran precisión. Se componen de cuatro secciones:
1. Sección Inicializadora. Aquí se preparan las variables que usará el lazo.
2. Sección de Procesamiento. Es la parte que realmente hace el trabajo, debe ser
óptima en tiempo.
3. Sección de Control del Lazo. Aquí se actualizan las variables y se revisa si se
continúa en el ciclo.
4. Sección Finalizadora. Es para recuperar los resultados del proceso repetitivo.
La siguiente figura muestra el diagrama de bloques de un lazo:
Page 44
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
44
Figura. 3.21 Diagrama de flujo de un lazo
Ejemplo 4
Cuenta de bits uno.
Cuente los bits uno de la localidad 0800, deje el resultado en la localidad 0801.
Problema Ejemplo.
a. (0800) = 3A = 0011 1010
Resultado (0801) = 04 El número 3A tiene cuatro unos
b. (0800) = 1C = 0001 1100
Resultado (0801) = 03 El número 1C tiene tres unos
Diagrama de Flujo
In ic io
S e c c io n
In ic ia liz a d o ra
S e c c io n d e
P ro c e s a m ie n to
S e c c io n d e
C o n tro l d e l
la z o
Y a T e rm in ó
la ta re a ?
S e c c io n
F in a liz a d o ra
F in
N O
S i
Page 45
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
45
Programa Fuente:
ORG $4000
INICIO: LDAA $800
;Trae dato a A
LDX #8
;Cuenta en X
CLRB
;Limpia total
OTRO: LSRA
;Corre un bit a la derecha
BCC NO_HUBO
;Es Carry = 1
INCB
;Si. Incrementa
NO_HUBO: DEX
;No. Decrementa cuenta
BNE OTRO
;Todos los bits?
STAB $801
;Si. Salva total
WAI
Ejemplo 5
Suma de datos
Calcule la suma de una serie de números. La longitud de la serie esta en la localidad
0801, y la serie en sí inicia en la localidad 0802. Guarde la suma en la localidad 0800.
Asuma que el resultado cabe en 8 bits de tal manera que los acarreos puedan ser ignorados
Problema Ejemplo:
(0801) = 03
(0802) = 28
(0803) = 55
(0804) = 26
Resultado (0800) = (0042) + (0043) + (0044)
= 28 + 55 + 26
= A3
Inicio
Dato = (0800)
Cuenta = 8
Total = 0
Es
Carry = 1
?
Total = Total + 1
Dato = Dato / 2
Fin
SI
NO
(0801) = Total
Es
Cuenta = 0
?
Cuenta = Cuenta -1
SI
NO
Page 46
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
46
Existen tres entradas para la suma, debido a que (0801) = 03
Diagrama de flujo:
Programa Fuente:
ORG $4000
INICIO
LDAA #0 ;Suma = cero
STAA $800 ;Parte alta de la
cuenta
LDX #0 ;Indice = cero
OTRO:
ADDA $802,X ;Suma =
Suma + dato
INX ;Apunta a sig. dato
CPX $800 ;Se sumo todo?
BNE OTRO ;Si no, va por otro
STAA $800 ;Guarda suma
END
Nota. Observe que fue necesario escribir
un cero en la localidad $800, esto debido
a que el Registro Índice es de 16 bits.
Además, la comparación se hace con la
localidad $800 y no con la $801.
Ejemplo 6
Valor Máximo.
Inicio
Suma = 0
Indice = 0
Suma = Suma +
(0802 + Indice)
Indice = Indice + 1
Es
Indice = (0801) ?
(0800) = Suma
Fin
No
Si
Page 47
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
47
Encuentre el mayor elemento de un bloque de datos. La longitud del bloque esta en
la localidad 0801 y el bloque en si inicia en la localidad 0802. Guarde el elemento máximo
en la localidad 0800. Asuma que los números en el bloque son todos de 8 bits sin signo.
Problema Ejemplo:
(0801) = 05
(0802) = 67
(0803) = 79
(0804) = 15
(0805) = E3
(0806) = 72
Resultado (0800) = E3 Debido a que es el mayor de los cinco números
Page 48
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
48
Diagrama de Flujo
Programa Fuente
ORG $4000
INICIO:
LDAB $801 ;Cuenta en B
CLRA ;Limpia A
XGDX ;Cuenta en X
CLRA ;Borra para máx
OTRO:
CMPA $801,X ;Compara Máximo en
;A con memoria
BCC NOCAMB ;Salta si Máximo es
;mayor
LDAA $801,X ;El dato en memoria
; fue mayor, cambiar
Inicio
Base = 0801
Indice =(0801)
Max = 0
Es
Max =>
(Base+Indice)
?
Max = (Base +
Indice)
Indice = Indice -1
Es
Indice = 0
?
(0800) = Max
Fin
Si
No
Si
No
Page 49
M.C. Abel Díaz Olivares Sistemas Embebidos para el Automóvil
49
NOCAMB:
DEX ;Decrementa cuenta
BNE OTRO ;Revisados todos?
STAA $800 ;Salva máximo en $800
BRA INICIO
ORG $0801
FCB 5,23,5,27,8,9 ;5 valores para probar
END