Sistemas Embebidos Para El Automovil

49
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.

Transcript of Sistemas Embebidos Para El Automovil

Page 1: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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: Sistemas Embebidos Para El Automovil

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