• No se han encontrado resultados

208006 Sistemas Embebidos I-2010

N/A
N/A
Protected

Academic year: 2021

Share "208006 Sistemas Embebidos I-2010"

Copied!
195
0
0

Texto completo

(1)

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA PROGRAMA DE INGENIERIA ELECTRONICA

208006 – SISTEMAS EMBEBIDOS OSCAR IVAN VALDERRAMA ARIAS

(Director Nacional)

JUAN CARLOS VESGA FERREIRA Acreditador

SOGAMOSO Diciembre de 2009

(2)

ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO

El presente módulo fue diseñado en el año 2008 por el Ing. Armando Portela Duarte, docente de la UNAD, y ubicado en el CEAD de Barranquilla, el Ing. Portela es Ingeniero Electrónico.

El presente módulo ha tenido una actualización, echa en el año 2009 por el Ing. OSCAR IVAN VALDERRAMA ARIAS, quien ha sido tutor de la UNAD en el CEAD SOGAMOSO, desde año 2005 y que se desempeña actualmente como director del cuso a nivel nacional.

Este mismo año el Ing. JUAN CARLOS VESGA FERREIRA, tutor del CEAD Bucaramanga, Coordinador Nacional Tecnología e Ingeniería en Telecomunicaciones, apoyó el proceso de revisión de estilo del módulo y dio aportes disciplinares, didácticos y pedagógicos en el proceso de acreditación de material didáctico desarrollado en el mes de ENERO de 2010.

(3)

INTRODUCCIÓN

El presente curso sobre sistemas embebidos se trata de un curso metodológico al cual le han sido asignados 3 créditos que de acuerdo al sistema de créditos académicos, consistente en 144 horas de trabajo académico: 96 horas promedio de estudio independiente y 48 horas promedio de acompañamiento tutorial enmarcadas en un campo de formación disciplinario en áreas de la ingeniería básica.

Con el curso se pretende que los estudiantes se adentren en el mundo de los sistemas embebidos analizando sus características y capacidades, concentrando el estudio en las herramientas de desarrollo tanto software como hardware inherentes a este tipo de sistemas de manera que se familiaricen con los procesos de diseño, programación y desarrollo de sistemas autónomos.

Los sistemas embebidos conforman un área de la electrónica en continuo crecimiento y desarrollo, debido a la creciente demanda de sistemas autónomos y aplicaciones “inteligentes”. Cada día son fabricados millones de circuitos integrados, microprocesadores, microcontroladores etc. que a su vez serán empleados en la fabricación de productos y equipos en una variedad de sectores como por ejemplo aplicaciones militares, electrodomésticos, juguetes, en la industria, el transporte, etc. La importancia de este curso radica en que se brindan las herramientas al estudiante para que maneje de manera suficiente el diseño y desarrollo de aplicaciones empleando estos dispositivos teniendo en cuenta que día a día se requiere cada vez más de nuevas aplicaciones autónomas específicas o la mejora continua de las existentes.

El curso de divide en tres unidades didácticas; 1ª Unidad: Conceptos Generales sobre Sistemas Embebidos, en esta se realizará una introducción general sobre los sistemas embebidos y sus principales características enfocando el estudio a los microcontroladores 68HC08 de FreeScale (Motorola); 2ª Unidad: Desarrollo de Software para Sistemas Embebidos, en esta unidad se sentarán las bases para la programación de sistemas embebidos empleando tanto lenguajes de programación de bajo (assembler) como de alto nivel enfocando el estudio al lenguaje de programación C; 3ª Unidad: Sistemas Operativos Orientados a Sistemas Embebidos, en esta unidad final se analizan los conceptos referentes a sistemas operativos y su aplicación en sistemas embebidos enfocándose en el sistema operativo embebed Linux.

Para el desarrollo del curso se procederá a introducir, a través de la plataforma, los conceptos y problemáticas que se plantean al trabajar con sistemas embebidos, el estudiante se encargará de analizar y ampliar estos contenidos con una visión crítica durante su tiempo de estudio independiente de manera que

(4)

cualquier duda que resulte de este ejercicio pueda ser disipada por el tutor a través de foros y cesiones de Chat previamente definidas. Debido a la naturaleza de los contenidos se realizarán una serie de actividades y talleres tanto individuales como en grupo, en los que se plantean problemáticas que sean susceptibles de ser resueltas con el empleo de los sistemas embebidos en conjunción con la aplicación práctica de los contenidos vistos, obteniendo así una aplicación funcional. La evaluación de los contenidos dependerá de la activa participación de los estudiantes en las diferentes actividades planteadas sumada a las calificaciones automáticas de revisión de conceptos realizadas en línea.

Las temáticas planteadas en el presente curso a manera introductoria son de gran relevancia puesto que los desarrollos que incluyen sistemas embebidos se encuentran a la orden del día en cualquier tipo de aplicación por lo tanto conforman un área de la electrónica muy interesante para enfocar estudios más profundos.

(5)

INDICE DE CONTENIDO

Unidad Capítulos Lecciones

1. Conceptos generales sobre sistemas embebidos 1. Introducción a los sistemas embebidos 1. Definición e Historia 2. Importancia y áreas de aplicación 3. Características 4. Preconceptos 5. Fases de diseño 2. Componentes principales de un sistema embebido 6. Diagrama de bloques de un sistema embebido. 7. Entradas: Sensores, muestreadores y conversores A/D. 8. Comunicación 9. Unidades de Procesamiento y Memoria 10. Salidas y conversores D/A 3. Unidades centrales de procesamiento 11. Componentes de una CPU 12. Arquitecturas más comunes 13. Comparación de los dispositivos más comunes 14. Microcontroladores HC08 15. Microprocesadores ColdFire y tarjetas de desarrollo 2. Desarrollo de software para sistemas embebidos 4. Introducción a la programación de sistemas embebidos 1. Diagramas de flujo 2. Programación en lenguaje Ensamblador (Assembler) 3. Notaciones y sintaxis 4. Tipos de instrucciones 5. Escribiendo un pequeño programa 5. Prácticas básicas y aplicaciones 6. Programación y puesta en marcha 7. Modo de ejecución

(6)

8. Desarrollo de tarjeta de programación universal 9. Software

10. Software Code Warrior

6. Introducción a la programación en C y microcontrolador HC08 11.Generalidades de C 12. Fases de procesamiento de un programa en C 13. Ejemplos de manejo de módulos del HC08 14. Programación en Assembler del HC08 15. Programación en C del HC08 3. Sistemas operativos orientados a sistemas embebidos 7. Visión general 1. Consideraciones sobre el hardware 2. Conceptos generales sobre sistemas operativos 3. Componentes del sistema operativo 4. Arranque de un programa 5. Memoria virtual 8. Sistema operativo embedded Linux 6. Visión general

7. Tipos de sistemas que utilizan Linux embebido 8. Arquitectura genérica de un sistema con Linux embebido

9. Características del kernel de Linux

10. Arranque del sistema

9. Implementación de embedded Linux

11. Metodología de diseño e implementación

12. uCLinux

13. Pasos básicos para comenzar con uCLinux 14. Términos relacionados 15. Primeros pasos con uCLinux

(7)
(8)
(9)

UNIDAD 1

Nombre de la Unidad Conceptos generales sobre sistemas embebidos Introducción Estudio y discusión de algunos temas y conceptos

relacionados con sistemas embebidos.

Justificación Al estudiante del curso de sistemas embebidos es necesario introducirlo en los conceptos básicos de los sistemas embebidos.

Intencionalidades Formativas

 Reconocer los conceptos básicos de los sistemas embebidos

 Reconocer los componentes básicos

 Reconocer los elementos básicos de la unidades centrales de procesamiento

Denominación de capítulos

1. Introducción a los sistemas embebidos

2. Componentes principales de un sistema embebido 3. Unidades centrales de procesamiento

CAPITULO 1: INTRODUCCIÓN A LOS SISTEMAS EMBEBIDOS Lección 1: Definición e Historia.

Los sistemas embebidos son sistemas computacionales aplicados, posiblemente compuestos también por otro tipo de elementos mecánicos i/o electromecánicos, aunque están constituidos por la unión hardware – software, se diferencian de otros sistemas como por ejemplo los computadores personales por el hecho de estar diseñados para cumplir funciones específicas. Es decir, un sistema embebido puede pensarse como: “Un sistema cuya función principal no es computacional, pero independientemente de esto es controlado por un computador embebido en su interior”1

se entiende por embebido o empotrado como “oculto” por tanto estos dispositivos de cómputo no son visibles ni programables por el usuario final. Otro autor define el término con simpleza: “un sistema embebido es un computador oculto en el interior de otro producto”2

.

A pesar de que se pueden tomar como ciertos los enunciados del párrafo anterior, es complicado sentar una definición definitiva para los sistemas embebidos, puesto que gracias al constante desarrollo tecnológico que ha influido en el aumento de las prestaciones de los diferentes circuitos integrados y a su vez en el incremento del nivel de integración y complejidad cada vez en espacios más reducidos, sumando esto a la disminución de los costos de implementación por economías de escala, se hace posible en la actualidad la existencia de pequeños computadores (PDA´s, celulares, etc) que pueden realizar una gran cantidad de aplicaciones y que por ser dispositivos integrados de tamaño reducido podrían

1

Wilmshurst Tim. Designing Embedded Systems with PIC Microcontrollers. Elsevier, 2007. p 3.

(10)

también ser clasificados como sistemas embebidos. Aunque existen discrepancias entre diferentes autores en incluir o no este tipo de dispositivos en la clasificación de sistemas embebidos.

Se observa que los microcontroladores de 8 bits dominan la mayoría de las aplicaciones. Un microcontrolador es el núcleo de un sistema electrónico versátil, de bajo coste y reducido tamaño que es capaz de detectar las señales de entrada y generar las salidas de un determinado equipo, sistema o instrumento. Los microcontroladores por su reducido tamaño y costo además del hecho de que son los dispositivos semiconductores más abundantes de todos en la actualidad, permiten la fácil implantación de sistemas con “inteligencia” distribuida a lo largo de sistemas más complejos.

Durante los años 30 y 40‟s los primeros computadores fueron dedicados a tareas muy definidas, además eran máquinas extremadamente grandes, costosas y complicadas, tanto en implementación como en funcionamiento en comparación de las prestaciones, tamaño y costo de los computadores actuales. Con el transcurrir de los tiempos conceptos como Computadoras, Controladores Lógicos Programables (PLC), etc. fueron evolucionando de los arreglos de dispositivos electromecánicos secuenciados tradicionales, pasando por máquinas basadas en tubos de vacío, llegando a sistemas más modernos y funcionales basados en tecnologías de cómputo desarrolladas a partir de los avances en dispositivos de estado sólido.

(11)

El desarrollo de los sistemas embebidos tiene sus raíces en la invención del circuito integrado, el desarrollo constante en el campo de la electrónica digital ha dado lugar a dispositivos cada vez más complejos. Entre ellos los microprocesadores y los microcontroladores, núcleos principales de cualquier sistema embebido.

La historia de los microcontroladores inicia en el año 1969, un equipo de ingenieros japoneses de la compañía BUSICOM llegó a Estados Unidos con una idea, ellos deseaban usar para sus proyectos menos circuitos integrados de los que se usaban en las calculadoras. La proposición se hizo a la compañía INTEL. La solución propuesta presumía el desarrollo de circuito integrado cuyo funcionamiento sería determinado por un programa almacenado en el mismo dispositivo. Eso significaba que la configuración sería más simple, pero que requeriría mucho más memoria de lo que requería el proyecto que propusieron los ingenieros japoneses.

Después de un tiempo, aunque los ingenieros japoneses probaron soluciones más sencillas, la idea propuesta por INTEL termino por ser implementada, entonces nace primer microprocesador. Para transformar esta idea en un producto ya fabricado, transcurrieron sólo 9 meses para lograr el éxito. INTEL obtuvo los derechos para vender este "bloque integrado" en 1971. Primero, compraron la licencia de la compañía BUSICOM, que no tenía idea del tesoro que poseían. Durante ese año, apareció en el mercado un microprocesador que se llamó 4004, este fue el primer microprocesador de 4 bits con velocidad de 6 000 operaciones por segundo.

No mucho tiempo después de eso, la compañía americana CTC pidió a INTEL y a la Texas Instruments que hiciera un microprocesador de 8 bits. Aunque después a CTC no le interesó mas la idea, Intel y Texas Instruments siguieron trabajando en el microprocesador logrando primero de abril de 1972 desarrollar el microprocesador de 8 bits apareciendo en el mercado con el nombre de 8008. Podía direccionar 16 Kb de memoria, con un set de 45 instrucciones y una velocidad de 300.000 operaciones por segundo. Este microprocesador es el predecesor de todos los microprocesadores de hoy. Intel mantuvo sus desarrollos y saco al mercado el procesador de 8 bits bajo el nombre 8080, el cual podía direccionar 64Kb de memoria, con 75 instrucciones, a un precio de 360 dlls por unidad.

En otra compañía americana, Motorola, comprendieron rápidamente lo que estaba sucediendo, así que ellos sacaron al mercado su microprocesador de 8 bits, el 6800 y junto con el procesador, Motorola fue la primera compañía en hacer otros periféricos como el 6820 y el 6850. En ese momento muchas compañías reconocieron importancia de los microprocesadores y empezaron sus propios desarrollos.

(12)

Un evento muy importante tuvo lugar en la historia de microprocesadores en una exhibición de WESCON en 1795 en Estados Unidos. La Tecnología MOS anunció que estaba comercializando los microprocesadores 6501 y 6502 a 25 dlls. cada uno, y que los compradores podrían adquirirlos inmediatamente. Esto era tan extraordinario, que algunas personas creyeron que era una estafa, considerando que los competidores estaban vendiendo el 8080 y el 6800 a 179 dlls. cada uno. Intel y Motorola bajaron sus precios en el primer día de la exhibición como una respuesta a su competidor, 69.95 por microprocesador.

Motorola reclama a la Tecnología de MOS el haberles copiado su 6800. La Tecnología MOS suspende la fabricación del 6501, pero siguen produciendo el 6502. Los 6502 eran microprocesadores de 8 bits, 56 instrucciones y la capacidad de direccionar 64Kb de memoria directamente. Para reducir el costo, el 6502 se vuelve muy popular, así que se instala en las computadoras tales como: KIM-1, Apple I, Apple II, Atari, Comodore, Acorn, Oric, Galeb, Orao, Ultra, y muchas otras. Y muy pronto aparecieron varios fabricantes del 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh, y Comodore quienes toman la Tecnología MOS) el cual estaba en su momento de apogeo y se vendía a una velocidad de 15 millones de procesadores por año. Otros, sin embargo, no se rindieron. Federico Faggin deja Intel, y empieza su propio Zilog Inc.

En 1976, Zilog anuncia el Z80. Durante la fabricación de este microprocesador, Faggin toma una decisión giratoria. Sabiendo que ya se han desarrollado muchos programas para 8080, Faggin sabia que muchos se quedarían fieles a ese microprocesador. Así que decide diseñar un nuevo procesador que pueda ser compatible con 8080, o que sea capaz de desarrollar todos los programas que ya se habían escrito para el 8080. Además de estas características, se agregaron muchas otras para que el Z80 fuera un microprocesador muy poderoso. Podía direccionar 64 Kb de memoria, tenía 176 instrucciones, un gran número de registros, una opción para refresco de memoria dinámica de la RAM, mayor velocidad de trabajo etc. El Z80 fue un gran éxito y todos cambiaron del 8080 al Z80. Puede decirse que el Z80 fue el microprocesador comercializado más exitoso de ese tiempo. Además de Zilog, también aparecieron otros nuevos fabricantes como Mostek, NEC, SHARP, y SGS. Z80 estaba en el corazón de muchas computadoras como en Spectrum, Partner, TRS703, Z-3 etc.

En 1976, INTEL propone una versión mejorada del microprocesador de 8 bits, al cual nombró 8085. Sin embargo, el Z80 era tan bueno que Intel perdió la batalla. Aunque más procesadores aparecían en el mercado (6809, 2650, SC/MP etc.), ya todo estaba decidido. Ya no había grandes mejoras departe de los fabricantes para hacer algo nuevo, así que el 6502 y el Z80 junto con el 6800 permanecieron como los representantes principales de los microprocesadores de 8 bits de ese tiempo.

Con los avances hechos en microprocesadores se logró desarrollar computadoras cada vez más poderosas versátiles y económicas lo cual además despertó el

(13)

interés en desarrollar sistemas computacionales aplicados a unas pocas tareas específicas que agregarían eficiencia y economía a multitud de aplicaciones específicas por ejemplo los controles por inyección electrónica para motores de gasolina que redujeron en gran medida las emisiones de contaminantes. Fue posible entonces construir equipos electrónicos que incluían además unos pocos circuitos accesorios y un software implementado.

Los diseños electrónicos comenzaron a ser mucho más pequeños y simplificados, los diseñadores de equipos electrónicos podían realizar mayor cantidad de tareas en menos tiempo y el tamaño de los equipos se redujo considerablemente; sin embargo, después de cierto tiempo apareció una nueva tecnología, llamada microcontrolador que simplifico aun mas el diseño electrónico, al incluir en un mismo encapsulado el núcleo microprocesador, la memoria y las entradas/salidas. Un microcontrolador cuesta mucho menos que un circuito equivalente construido a partir de circuitos integrados “comunes” y además es muy sencillo agregar o modificar las prestaciones de un dispositivo construido con base en un microcontrolador simplemente modificando su programa, sin tener que reconfigurar la electrónica del sistema.

El desarrollo de microcontroladores lo inició la Texas Instruments al realizar su modelo TMS1000 (1971) diseñado para propósitos de control y automatización, fue el primer “computador en un chip” puesto que combinaba la existencia de un MCU (Micro-computer Unit) con otro tipo de dispositivos de soporte como memorias RAM, ROM, contadores, temporizadores e interfaces de entrada/salida todos integrados en un solo chip de silicio.

(14)

En 1976 Intel introdujo la familia de microcontroladores MCS-48 de 8 bits que fueron los primeros microcontroladores que ganaron fama y un uso bastante extendido, fueron integrados en teclados de computadoras personales. Después de 4 años de continua investigación y desarrollo surge el Intel 8051, un microcontrolador de 8 bits con memoria EPROM integrada muy comercial, surgiendo también la familia de Motorola 68HCXX y una serie de fabricantes incursionaron en el mercado con diferentes familias de microcontroladores, entre las que se encentran: Hitachi 630x, Zilog Z8, Fairchild F8 (3850), Toshiba TLCS-47, NEC V25, MOS Technology 6500.

Por otro lado en los años 70‟s también surgen los denominado circuitos o arreglos de lógica programable que paralelamente son desarrollados como respuesta a la necesidad de implementación de circuitos de propósito especifico en aplicaciones de sistemas embebidos. Dado a los alcances del curso la investigación sobre este tipo de dispositivos se deja a criterio del estudiante.

Lección 2: Importancia y áreas de aplicación.

Los sistemas embebidos son considerados como el área de aplicación de mayor importancia de la tecnología de la información en el transcurso de los años venideros gracias a esta expectativa que ha venido creciendo alrededor de estos sistemas, surge un término conocido como la era post-PC, éste denota el hecho de que en el futuro los computadores personales estándares se convertirán en los sistemas hardware menos dominantes. Los desarrollos en software y hardware serán empleados cada vez en sistema más pequeños en muchos casos invisibles al usuario en el orden de facilitar al máximo el empleo de los diferentes productos. En la actualidad el número de microprocesadores embebidos en un producto determinado excede la cantidad de los que se pueden encontrar en computador personal, se espera que esta tendencia continúe en incremento a tal punto que se predice a manera de ley de Moore, que “para muchos productos en el área de electrónica de consumo la cantidad de código empleado será doblada cada dos años”. [Vaandrager, 1998]3

.

Este aumento vertiginoso tanto de aplicaciones como en complejidad para los sistemas embebidos resulta en necesidades de diseño de tecnologías que soporten el desarrollo de los mismos. Por ejemplo aun es necesaria la mejora continua tanto de los lenguajes de programación como de las diferentes herramientas de desarrollo, desarrollar técnicas de diseño e implementación más óptimas enfocadas en soportar las constantes variaciones y mejoras que se requieren en las diferentes aplicaciones.

3

(15)

La intencionalidad es entonces que el estudiante se empape de los conceptos y técnicas actuales que envuelven el desarrollo de sistemas embebidos para que entre a detectar las falencias y posibles mejoras que puedan ser aportadas en la optimización del diseño y desarrollo de estos sistemas.

Las aplicaciones de los sistemas embebidos se pueden clasificar básicamente en los siguientes sectores:

Audio, Automotor, comunicaciones (alambricas y móviles), computadores y periféricos, control de movimiento, edificios inteligentes, electrónica de consumo, Industrial, imagen y video, Medico, Militar y aero-espacial, procesamiento digital de señales, robótica, seguridad, sistemas de autenticación, sistemas de propósito general y misceláneo.

Se deja la tarea para los estudiantes la investigación de ejemplos de aplicaciones específicas para los diferentes sectores.

Lección 3: Características.

Los sistemas embebidos son en su mayoría sistemas reactivos es decir que su funcionamiento depende de la continua interacción con un determinado ambiente el cual determina las posibles respuestas del sistema, para tal efecto se emplean determinados sensores o transductores que miden variables físicas y son convertidas en señales estándar que puedan ser entendidas por el sistema ante las cuales realizan algún tipo de respuesta empleando distintos tipos de actuadores dependiendo de la aplicación. Entre las diferentes características que pueden poseer tenemos:

Confiabilidad:

Una de las principales características que deben cumplir los sistemas embebidos es la confiabilidad, la implementación de un sistema confiable debe ser considerada desde un comienzo, no puede dejarse en segundo plano, dependiendo de la aplicación este aspecto puede llegar a ser primordial, por ejemplo en aplicaciones aero-espaciales o médicas es imperante la necesidad de evitar el porcentaje de fallas al máximo. La confiabilidad de un sistema embebido se mide analizando los siguientes aspectos:

Confiabilidad en el tiempo (Reliability): mide la probabilidad de que el sistema trabaje correctamente en un instante dado que funciona en el instante t = 0.

Mantenibilidad, (Maintainability): probabilidad que el sistema vuelva a trabajar correctamente d unidades de tiempo después de una falla.

Disponibilidad (Availability): probabilidad que el sistema esté funcionando en el tiempo t, para que esto se dé la confiabilidad y mantenibilidad deben ser altas.

(16)

Seguridad personal: es la propiedad en la que dado el caso de una falla, el sistema no causará daño.

Seguridad informática: comunicación efectiva, confidencial y autenticada (encriptación).

Eficiencia:

Otra característica que deben cumplir los sistemas embebidos es la eficiencia en diferentes aspectos como en el manejo de la energía suministrada, tamaño reducido del dispositivo, tamaño reducido del código que gobierna el sistema, minimización del peso, y sobre todo reducir los costos para su producción masiva. Tiempo Real:

El término tiempo real se refiere a la reacción “inmediata” del sistema ante estímulos externos predefinidos ya sea que provengan del objeto de control o mediante interfaces de usuario. Donde se entiende por inmediato a un lapso de tiempo lo suficientemente corto como para que se dé el correcto funcionamiento del sistema, una reacción correcta pero tardía no es aceptable. Existen las llamadas restricciones de tiempo real “duras” (Hard restriction) en las que su incumplimiento puede resultar en catástrofe. Otro tipo de restricción de tiempo se puede considerar como blanda (Soft restriction).

Interfaces de usuario:

La mayoría de los sistemas embebidos poseen alguna manera de interactuar con el usuario como pantallas gráficas, botones, teclados alfanuméricos, sensores, etc. Lección 4: Preconceptos.

Para abordar la temática del presente curso el estudiante de ingeniería electrónica debe manejar previamente una serie de conceptos que ha aprendido durante el transcurso de su carrera, entre los cuales tenemos:

- Nociones Matemáticas y Físicas. - Electrónica Análoga.

- Sistemas Digitales.

- Informática y Nociones de Programación. Lección 5: Fases de diseño.

Existen diferentes formas de abordar el diseño y desarrollo de sistemas embebidos, es importante seguir ciertas pautas de trabajo y tener en cuenta factores muy diversos para que el diseño pueda terminarse a tiempo y funcione

(17)

correctamente, por razones prácticas se observará un enfoque general que puede ser aplicado en el desarrollo de cualquier sistema embebido. Para tal efecto se parte analizando la siguiente figura.

Figura 3. Diagrama de flujo general para el diseño de sistemas embebidos.

La metodología desplegada en la figura 3 se encuentra dividida en cuatro fases principales que van desde la concepción de la idea hasta el funcionamiento final del dispositivo diseñado y sientan las bases para:

 Diseñar un dispositivo libre de defectos de manufactura, que funciona de manera adecuada y se integra con el sistema.

 Diseñar el dispositivo de manera eficiente, sin malgastar recursos ni tiempo.

 Planificar el diseño de manera eficiente, crear un cronograma razonable y asignar los recursos necesarios para las diferentes tareas de manera ordenada.

Toda actividad de diseño comienza con la identificación y especificación de una problemática a resolver tomando en consideración los requerimientos software y

(18)

hardware, esta especificación es muy importante para definir bien los límites de lo que se quiere implementar. A partir de la especificación se puede definir una arquitectura con los diferentes componentes que implementan cada función del sistema. Para el diseño se debe definir el funcionamiento de cada uno de esos componentes.

Una especificación completa debería comprender los siguientes puntos:

 Diagrama en bloques del sistema externo, que muestra como y donde encaja el dispositivo dentro de un sistema completo.

 Diagrama de bloques interno que muestra los principales bloques funcionales del dispositivo a implementar.

 Descripción de las entradas/salidas, incluyendo, interfaces lógicas, eléctricas, de adquisición y protocolos de comunicación.

 Estimaciones de tiempos que se deben cumplir, incluyendo tiempos de "setup" y "hold" para las entradas/salidas y frecuencias de reloj.

 Estimación de la del dispositivo dependiendo del número de elementos electrónicos necesarios para su implementación.

 Especificación física del dispositivo. Tamaño, empaquetamiento, conectores, etc.

 Estimación del consumo de potencia del dispositivo.

 Precio estimado del dispositivo.

 Procedimientos definiendo el banco de pruebas para la verificación y validación para el dispositivo.

Después de escribir las especificaciones es importante hacer una revisión con todos los miembros del equipo. De esta revisión podrán surgir aspectos relevantes que no fueron tenidos en cuenta individualmente incorporándolos a las especificaciones. La especificación también incluye la metodología de verificación del dispositivo o banco de pruebas. Estas muchas veces se dejan para el final del proyecto y no se definen ni llevan a cabo de manera adecuada.

La especificación es un documento que se presta para ser modificado de acuerdo con los cambios de requerimientos y a medida que se tiene más información sobre el proyecto. Una vez que se escribe la especificación se puede utilizar para seleccionar componentes y tecnologías que se utilizarán para el proyecto.

El proceso de diseño es en general un ciclo, e incluye varios pasos intermedios como la verificación del diseño que engloba varios pasos menores, y al revisar pueden surgir detalles que obligan a volver a realizar pasos anteriores. Dependiendo del dispositivo y tecnología utilizada, pero en general se siguen los siguientes pasos:

Simulación: es en general un proceso continuo, ya que al simular se pueden encontrar problemas que hacen volver sobre el diseño y hacer cambios. Las simulaciones se hacen sobre pequeñas partes del sistema y sobre el sistema

(19)

completo. Se debe llevar a cabo una simulación funcional, pero también puede incluir simulaciones de temporizado, consumo de potencia y otros parámetros. Revisión: En este paso se revisan los resultados de la simulación y se analiza el comportamiento del dispositivo.

Una vez que se ha quedado satisfecho con el comportamiento del diseño en las simulaciones se lleva a cabo la implementación física final del dispositivo. En este punto se verifica la implementación física para asegurarse que su funcionamiento coincide con las simulaciones hechas anteriormente. En este paso se deben también evaluar los tiempos, consumo de potencia y cualquier otro parámetro de importancia.

Si todos los pasos se siguieron correctamente la revisión final debería ser solo una formalidad. Se verifica que el dispositivo está listo para ser entregado o integrado a un sistema dado.

La integración y verificación en el contexto del sistema general es muy importante. Si los pasos se siguieron correctamente, cualquier modificación que surja de esta integración será en general pequeña y no requerirá grandes cambios. Cualquier problema o falla que se encuentre debe documentarse y ser analizada así como los diseños en sí tanto del hardware como del software del dispositivo, para poder hacer mejoras y/o correcciones en una próxima versión del dispositivo a partir de esta completa documentación.

(20)

CAPITULO 2: COMPONENTES PRINCIPALES DE UN SISTEMA EMBEBIDO Lección 6: Diagrama de bloques de un sistema embebido.

Figura 4. Diagrama de bloques de un sistema embebido, Editado de (Designing Embedded HW)

Los sistemas embebidos más sencillos emplean microcontroladores como elemento de procesamiento con la ventaja de que el procesador incorpora muchas de las características y funcionalidades de un computador en un solo integrado, en la figura 4 se presenta un sistema embebido genérico. La diferencia radica en las capacidades de estos dispositivos puesto que su CPU (Unidad Central de Proceso) es mas reducida, poseen una cantidad menor de memoria tanto RAM como ROM y algunos elementos de Entrada Salida (E/S) que pueden ser observados en la figura como bloques o subsistemas, éstos le agregan las funcionalidades requeridas al procesador para diversidad de aplicaciones. Ver figura 4.

A continuación se analizan rápidamente los diferentes componentes de la figura 4, para luego entrar a describir de manera mas profunda cada uno de los bloques. Para comenzar tenemos los dispositivos de E/S (I/O Input-Output en Ingles), los más comunes son los puertos de E/S digital, normalmente llamados de propósito general o GPIO (General Purpose I/O), estos puertos se pueden configurar por software, pin por pin, como entradas o salidas digitales, como entradas se suelen emplear para leer el estado de interruptores, pulsadores o leer estados digitales de otro dispositivo. Como Salidas éstos pueden ser empleados para encender o apagar relés u otros dispositivos o para transportar un estado lógico a otros dispositivos. Usados conjuntamente tanto entradas como salidas se puede sintetizar e implementar un protocolo dado para comunicarse con otro integrado. La mayoría de los microcontroladores poseen otros subsistemas aparte del los puertos de E/S pero tienen la característica de poder ser convertidos al puertos

(21)

GPIO si las funcionalidades de estos subsistemas no son requeridas, este hecho añade gran versatilidad para el uso de microcontroladores en una aplicación dada. En la figura 4 se observan también un bloque con entradas análogas permitiendo recibir y muestrear señales provenientes de sensores que miden señales de diferentes tipos, para propósitos de grabación o simplemente se puede monitorear señales de voltaje para asegurar el correcto desempeño de un sistema.

Los puertos seriales habilitan al dispositivo para interconectarse con un computador personal, un módem, otro sistema embebido o de pronto con una red, existen formas especializadas de comunicación serial conocidas como SPI i I2C, que proveen una manera simple de expandir las capacidades y funcionalidades de los microcontroladores, a través de éstas se puede interconectar periféricos como relojes/calendarios, memorias externas, sensores con interfaces digitales entre otras.

Los contadores y temporizadores son utilizados para generar interrupciones internas, regular intervalos para diferentes tareas que se puedan estar ejecutando, generar señales de reloj para controlar la operación y sincronización de dispositivos externos, pulsos de control para motores, alternativamente también pueden ser utilizados para contar pulsos provinentes de otros dispositivos. Algunos dispositivos incluyen también interfaces de red como puertos USB, Ethernet o CAN.

Los microcontroladores más completos también incluyen buses de datos trayendo los buses de direcciones internas para el control y manejo de datos hacia el mundo exterior, esa funcionalidad le agrega al microcontrolador una gran versatilidad para la interconexión de una vasta variedad de posibles periféricos de manera muy similar a lo que lo haría un procesador convencional.

Existe una amplia variedad de microcontroladores (en el orden de los miles, provenientes de docenas de fabricantes), con capacidades y subsistemas que varían dependiendo de la aplicación para la cual serán empleados.

Lección 7: Entradas: Sensores, muestreadores y conversores A/D.

Los dispositivos de entrada de los sistemas embebidos juegan un papel primordial para agregar la funcionalidad requerida ya que gracias a estos el dispositivo de procesamiento puede entrar a interactuar con el mundo exterior mediante la obtención de las diferentes señales y datos empleados para su procesamiento y posterior respuesta o señal de salida.

1. Sensores:

Son dispositivos que al interactuar con alguna variable física normalmente generan una señal análoga continua proporcional a la magnitud de la variable

(22)

medida, aunque existen también sensores que entregan información digital. Los sensores pueden ser diseñados para medir virtualmente cualquier variable física, peso, aceleración, corriente eléctrica, diferencias de potencial, temperatura presión, proximidad, movimiento, sensores para medir variables en sustancias químicas, entre muchos otros.

El diseño y desarrollo de sensores de diversos tipos en las últimas décadas a posibilitado en gran medida el desarrollo de sistemas inteligentes en muchos infinidad campos.

2. Muestreadores:

El termino computador digital implica que éste trabaja en el dominio de tiempo discreto, esto quiere decir que solo puede procesar información discreta en instantes de tiempo definidos, por lo tanto para que un procesador pueda manipular señales provenientes de un sensor que entrega información continuamente (señales análogas) primero debe convertirse estas señales en el domino del tiempo continuo al dominio de tiempo discreto, éste es el propósito de los muestreadores, en la fig. 5 se presenta un ejemplo típico de un circuito para este propósito y la correspondiente señal muestreada.

Figura 5. Circuito de muestreo.

Como se aprecia en la figura el circuito consta esencialmente de un transistor en cuya base es aplicada una determinada señal de reloj y un condensador. El transistor básicamente actúa como un interruptor que permite que el condensador se cargue con el valor del voltaje de entrada Ve (señal análoga) en instantes definidos por la señal de reloj, el voltaje en el condensador permanecerá virtualmente sin cambio hasta que el interruptor sea serrado de nuevo. Los valores almacenados en el condensador se pueden considerar como un elemento discreto de valores Vx generados a partir de la señal de entrada Ve.

Para que esto sea posible se debe asegurar que el circuito tenga la característica de poder cambiar el valor de la carga del condensador casi de manera instantánea, en la práctica lo que ocurre es que el transistor demora un tiempo suficiente para que el condensador se cargue o descargue y la carga en el condensador corresponderá al voltaje promedio de entrada durante este periodo.

(23)

3. Conversores A/D:

Siguiendo con el esquema de trabajo digital se tiene que una vez se han tomado muestras de la señal de entrada en tiempos discretos, estas señales pueden tomar infinidad de valores en un determinado rango, es decir siguen siendo señales análogas, el paso a seguir es convertir los valores análogos de entrada a valores discretos, esta tarea es realizada por los conversores A/D (Análogo a Digital).

La conversión a digital se realiza en dos fases: cuantización y codificación. Durante la primera se toma la señal muestreada y a cada uno de los diferentes niveles o variaciones de voltajes que contiene la señal analógica original se asigna un valor o nivel de voltaje discreto que depende de la resolución (porción más pequeña de señal que produce un cambio apreciable en la salida) del conversor, en este punto la señal pasa a tomar valores discretos en un rango definido de valores, aproximados a los de la señal original, el valor cuantificado se codifica en binario en una palabra digital, cuyo número de bits depende de las líneas de salida del conversor A/D.

Existen diferentes métodos de conversión A/D que varían dependiendo de la velocidad y la resolución requerida a continuación se expondrá dos esquemas de conversión representativos para comprender los mecanismos de conversión. Una conversión A/D directa es realizada empleando un conversor A/D FLASH (FLASH A/D Converter), éste está conformado por un arreglo de comparadores, cada uno de los cuales tienen dos entradas (+ y -). Si el voltaje en la entrada positiva excede el voltaje de referencia en la entrada negativa, la salida de dicho comparador corresponderá con un valor lógico „1‟ en caso contrario o cualquier otro caso el valor a la salida del comparador será „0‟ Ver fig. 6.

(24)

Se observa de la figura 6 que el valor de referencia de cada una de las entradas (-) de los comparadores corresponde a un divisor de voltaje a partir de un valor de referencia estándar, éste enmarca el rango de los posibles valores de entrada que el conversor puede codificar. El codificador genera valores digitales correspondientes a la entrada Vx identificando la salida „1‟ más significativa, siendo el caso en que Vx > Vref, el máximo valor de salida posible independiente de que tanto excede Vx a Vref en magnitud.

En el caso de que Vx es menor que Vref pero mayor que

4

3 Vref, entonces el comparador mas significativo (el de mas arriba) genera un „0‟ a la salida y el siguiente si generará un „1‟ entonces el codificador entregará el valor digital para el segundo valor mas largo del conversor y así sucesivamente.

Otro esquema de conversión utilizado es el llamado conversor de aproximaciones sucesivas, el proceso de conversión para este tipo de convertidores se basa en la realización de comparaciones sucesivas de manera descendente, hasta que se encuentra la combinación que iguala la tensión entregada por el D/A y la de entrada, consiste como se puede apreciar en la figura 7 en un comparador en cuya terminal positiva se encuentra la señal de entrada Vx, en esencia el funcionamiento de este conversor es la de generar valores binarios en el bloque lógico de control almacenándolos en el registro de aproximaciones sucesivas, la operación inicia asignando „1‟ al bit mas significativo de este registro y a los demás se les asigna „0‟, este valor se introduce al conversor Digital/Análogo (D/A) para generar un nivel de voltaje análogo correspondiente al valor binario generado, este voltaje es enviado terminal negativo del comparador.

Figura 7. Esquema del Conversor de Aproximaciones Sucesivas. (editado de embedded system design)

Si la magnitud de Vx es mayor que la de la señal generada en el conversor D/A se conserva el valor „1‟ en el registro más significativo, de otra forma se asigna a este bit un valor „0‟, este proceso se repite con el siguiente bit y así sucesivamente. Las ventajas de este esquema es la eficiencia del Hardware, la desventaja es la velocidad puesto que la identificación de cada valor de entrada (Vx) no es

(25)

instantánea, puesto que para cada valor se requiere que el conversor realice una serie de aproximaciones antes de encontrar el valor adecuado.

Lección 8: Comunicación.

Los diferentes datos manejados en un sistema embebido deben estar disponibles para ser comunicados a través de diferentes canales, los canales son entidades abstractas caracterizadas por propiedades esenciales de los sistemas de comunicación como la capacidad máxima de transferencia de información y parámetros de ruido, existen además técnicas y teorías de comunicaciones que se emplean para hallar la probabilidad de errores en la comunicación pero estos son temas de otro curso.

Para que exista la comunicación se requiere de un medio físico por el cual se propagara la información entre los que se tienen medios cableados, medios ópticos (Fibra óptica), medios inalámbricos (medios de radiofrecuencia, infrarrojos, etc.).

1. Requerimientos:

Existe una variedad de requerimientos para que se dé la comunicación entre sistemas embebidos entre los que se tienen los siguientes:

Comportamiento en tiempo real:

En muchas de las aplicaciones es imperante la comunicación inmediata entre los sistemas como en el caso de procesos industriales de control y automatización en cambio existen otras en las que no es tan primordial este hecho como en el caso del Ethernet.

Eficiencia:

Este requerimiento tiene su sentido económico en la implementación de la comunicación entre diferentes sistemas embebidos por lo tanto es necesario el desarrollo de diseños eficientes para la conexión de diferentes componentes de un sistema de control y sus componentes externos.

Ancho de banda apropiado:

Los requerimientos de ancho de banda pueden variar dependiendo de la aplicación no obstante normalmente es importante evitar al máximo retrasos en la comunicación, no obstante se debe evitar hacer demasiado costoso el sistema implementado.

(26)

Dependiendo de la aplicación los sistemas embebidos pueden encontrarse en ambientes con temperaturas elevadas e interferencias electromagnéticas, los sistemas deben poseer la suficiente robustez para mantener una comunicación confiable.

Tolerancia a Fallas:

Es necesario que los sistemas se recuperen de fallas de comunicación de forma rápida, deben existir mecanismos para reintentar la comunicación en caso de fallas, no es aceptable el reinicio del sistema como en el caso de los computadores.

Privacidad:

Este requerimiento se realiza en caso de que se necesite privacidad en la comunicación, para tal efecto existen diferentes técnicas de encriptación.

2. Métodos de transmisión cableada.

Estos métodos son empleados para lograr la suficiente robustez eléctrica de las señales transmitidas entre los diferentes integrados de un sistema dado, uno de los métodos es conocido como señalización de terminal simple (single-ended signaling) o asimétrica, en éste las señales se propagan a través de un solo cable (ver figura 8).

Figura 8. Señalización de terminal simple o asimétrica.

El otro terminal se conecta a un nivel de referencia, normalmente se conecta a tierra; las señales que llevan la información están representadas por diferencias de potencial con respecto a la referencia. La ventaja de éste método es que una sola referencia sirve para diferentes señales asimétricas, la principal desventaja es la susceptibilidad al ruido externo, la información puede ser fácilmente afectada por interferencias de tipo electromagnético.

Otro método se conoce como señalización diferencial o simétrica, en éste se requiere un par de hilos por cada señal (ver figura 9).

(27)

Figura 9. Señalización diferencial o simétrica (editado de embedded system design).

La señal es codificada de manera que si el voltaje del primer hilo al llegar al comparador es positivo con respecto al segundo entonces se trata de un „1‟ en caso contrario se trata de un „0‟. Normalmente cada par de hilos viene entorchado, es decir, cada par se entrelaza para mantener estable las propiedades eléctricas a lo largo de toda la longitud de los hilos, reduciendo así, las interferencias creadas por elementos adyacentes.

Algunas ventajas de este método de transmisión consisten en que el ruido normalmente se añade de igual forma a ambos hilos y es eliminado casi en su totalidad en la entrada del comparador, además el valor lógico de la señal solo depende de la polaridad, no de la magnitud, ya que esta puede variar por factores como la distancia y la resistencia del hilo y este hecho no afecta la señal decodificada, no se requiere la existencia de tierras comunes puesto que se trata de señales diferenciales por lo tanto para comunicar grandes cantidades de dispositivos por este método no es necesario implementar tierras de mayor calidad.

La señalización diferencial es empleada por ejemplo en la implementación de redes basadas en Ethernet.

Lección 9: Unidades de procesamiento y Memorias. Unidades de procesamiento

Para abordar el tema de procesamiento de información se tendrán en cuenta los ASIC (Aplication-Specific Integrated Circuit), los dispositivos de lógica programable y los procesadores. Estas tecnologías presentan un desempeño distinto hablando del número de operaciones que pueden desempeñar con respecto a su consumo de energía, siendo primeros en desempeño los ASIC, los segundos son los dispositivos de lógica programable y por último los procesadores, en contra prestación los procesadores son los más flexibles en lo que a programación software se trata, los dispositivos de lógica programable presentan cierta flexibilidad y los ASIC no son nada flexibles.

(28)

1. ASIC (Aplication-Specific Integrated Circuit)

Los ASICs son circuitos diseñados y desarrollados para aplicaciones específicas por lo tanto una vez desarrollados no pueden ser modificados, a diferencia de otros dispositivos como los microcontroladores concebidos para propósitos de uso general, un ejemplo de este tipo de dispositivos puede ser un integrado diseñado específicamente para manejar la modulación en un teléfono celular.

Los ASICs son costosos tanto de diseñar como de fabricar pero si la aplicación requiere un uso realmente eficiente de la energía, procesamiento a una velocidad superior y además si el mercado se encuentra dispuesto a afrontar los costos o el producto final se presta para ser vendido en grandes producciones entonces se justifica su empleo.

Con los avances en la miniaturización y en las herramientas de diseño, la complejidad máxima, y por ende la funcionalidad, en un ASIC ha crecido desde 5.000 puertas lógicas a más de 100 millones. Los ASIC modernos a menudo incluyen procesadores de 32-bit, bloques de memoria RAM, ROM, EEPROM y Flash, así como otros tipos de módulos. Este tipo de ASIC frecuentemente es llamado Sistema en un Chip, o SoC (System on a Chip), por sus siglas en inglés. Los diseñadores de ASIC digitales usan lenguajes descriptores de hardware (HDL), tales como VERILOG o VHDL, para describir la funcionalidad de estos dispositivos

2. Dispositivos de Lógica programable.

Existen aplicaciones en donde no se justifica el costo de emplear ASICs, por el costo de desarrollo o por la existencia de un mercado reducido para dicha aplicación, aunque tampoco es suficiente el empleo de aplicaciones basadas en software (Microprocesadores), por velocidad o consumo de energía. Los dispositivos de lógica programable representan una buena solución, si los algoritmos son implementados de manera eficiente las aplicaciones desarrolladas pueden llegar a ser tan rápidas como un ASIC, La gran diferencia radica en que la funcionalidad de éstos puede cambiar por medio de la reprogramación del dispositivo.

Gracias a las características intrínsecas de los dispositivos de lógica programable, éstos se pueden emplear en aplicaciones de prototipado rápido, permitiendo los correspondientes ciclos de diseño, prueba y depuración, obteniendo así un dispositivo que se comportará de forma similar al sistema final, así no cumpla con los requisitos de espacio y consumo de potencia deseables, normalmente estos prototipos se toman como punto de partida para desarrollar aplicaciones finales. 3. Procesadores.

(29)

La ventaja principal de estos dispositivos es su flexibilidad, ya que el comportamiento del sistema embebido puede cambiarse por completo solo cambiando el software que rige el sistema, estos cambios se realizan con la intención de corregir errores de diseño, realizar actualizaciones, mejoras o añadir funciones al sistema. En esencia es esta la razón de la gran popularidad de estos dispositivos.

Los procesadores para sistemas embebidos deben ser eficientes, no se necesita que su set de instrucciones sea compatible con el de un procesador para PC de hecho se trata de arquitecturas diferentes, por lo tanto manejan un set de instrucciones mas reducido, a continuación se analizan las diferentes características que deben tenerse en cuenta para lograr la eficiencia.

Eficiente manejo de la energía: para tal efecto las diferentes variedades de procesadores abordan el tema empleando diversas técnicas en las que se tiene en cuenta la operación del sistema, es pues como el sistema puede pasar a modos de bajo consumo suspendiendo la operación de relojes internos, bloqueando las salidas o suspendiendo por completo las actividades internas, dado el caso de que el procesador entre en periodos de inactividad o marcha lenta.

Tamaño de Código: es muy importante minimizar el tamaño del código de los programas que gobiernan el funcionamiento del procesador por el hecho de que los procesadores para sistemas embebidos generalmente no cuentan con discos duros y además la capacidad de las memorias con las que se cuenta normalmente es reducida, también hay que tener en cuenta que cada comando y ciclo de ejecución extra requiere un consumo de potencia y como se vio en anteriormente es necesario mantener un consumo eficiente de energía.

Tiempo de ejecución eficiente: dependiendo de la aplicación se puede requerir que el sistema embebido ejecute alguna función con limitantes de tiempo extremas sin la necesidad de emplear elevadas frecuencias de operación, para tal motivo las arquitecturas pueden ser optimizadas para ciertas aplicaciones, como en el caso de los DSP (Digital Signal Processor). O se puede ir más allá y desarrollar lo que se conoce como procesadores de sets de instrucciones específicos. ASIPs (Application Specific Instruction Set Processor).

Memorias.

Las memorias son dispositivos electrónicos empleados para almacenar información (datos) y software (programas) con las que el dispositivo de procesamiento interactúa. Contienen en su interior una tabla que almacena información en cada uno de sus compartimentos.

(30)

Como toda tabla, es preciso saber dos de sus dimensiones: el tamaño de cada uno de sus elementos y el número de elementos de los que dispone. Normalmente, las memorias convencionales almacenan la información en elementos de tamaño 1 byte (8 bits). Por lo tanto una memoria se puede ver como una tabla que contiene un determinado número de bytes. Los elementos de esta tabla están numerados con números naturales comenzando por el cero. El número correspondiente a cada una de los elementos se denomina “dirección de memoria” y se suele representar de forma abreviada por el símbolo “@”. Al conjunto de números que representan las direcciones de una memoria se le denomina su “espacio de direcciones”. A manera de ejemplo, la figura 10 ilustra la estructura, contenido y direcciones de una memoria RAM.

Figura 10. Estructura de la memoria RAM.

Una computadora de 8 bits con 10 líneas de dirección ve a la memoria como una columna continua de 1024 (ó 2 a la 10) valores de 8 bits. La dirección de la primer posición de memoria es 00 0000 0000 (2) y la de la última es 11 1111 1111 (2). La dirección de diez bits se expresa normalmente como dos números de 8 bits que se vuelcan en cuatro dígitos hexadecimales. En notación hexadecimal, el rango de estas direcciones va desde $0000 a $03FF.

(31)

El acceso a los datos internos de la memoria viene determinado por el tamaño de sus celdas o elementos. Tal y como está estructurada, la memoria no ofrece acceso directo a cualquiera de sus bits, sino que es preciso primero obtener un byte y posteriormente acceder al bit pertinente. Los procesadores incluyen en su lenguaje máquina las instrucciones necesarias para poder manipular los bits de un byte. Si se quiere, por tanto cambiar un bit de un byte de memoria se debe leer el byte entero, utilizar instrucciones para cambiar su valor, y escribirlo de nuevo en memoria.

El tamaño de la memoria se mide en múltiplos que no siguen las reglas convencionales de multiplicación por potencias de 10 sino por potencias de 2. Así, un kilobyte son 210 bytes o 1024 bytes. Las unidades de medida del tamaño de memoria así como sus exponentes y los prefijos de su nomenclatura se presentan en la Tabla 1.

Tabla 1. Unidades de almacenamiento de información en bytes Prefijo Símbolo Potencia

kilo K 210 mega M 220 giga G 230 tera T 240 peta P 250 exa E 260 zetta Z 270 yotta Y 280

Los chips de memoria pueden ser organizados de dos formas o esquemas por palabras o por bits. En el esquema de organización por palabras se almacenan por completo nibbles (4 bits), bytes (8 bits), o palabras de un tamaño determinado son almacenadas en un mismo componente, mientras que en el esquema de organización por bits, cada bit de una palabra dada se encuentra localizado en un dispositivo distinto. (ver figura 11)

Figura 11. Dispositivos organizados por bits de 8x1 y organizados por palabras de 8x8.

(32)

Internamente las memorias son implementadas por un conjunto de transistores diseñados de tal forma que pueden almacenar información. La unidad responsable de almacenar un bit de información se denomina “celda”. Un chip de memoria no es más que un circuito que contiene un determinado número de celdas en cuyo interior se almacena un bit.

EL funcionamiento de la memoria es similar al método utilizado para ordenar la correspondencia en una oficina postal, a cada byte o palabra de datos se le es asignada una dirección única y a cada dirección corresponde un solo espacio de almacenamiento en la memoria. El proceso para almacenar la información en la memoria se da de la siguiente forma: la unidad de procesamiento envía al dispositivo la dirección para los datos, el controlador de la memoria encuentra la ubicación adecuada, por último, el procesador envía los datos a escribir en dicha dirección o posición de memoria.

La lectura de la información se realiza mediante un proceso semejante: El procesador envía a la memoria la dirección de los datos solicitados, El controlador de la memoria encuentra los bits de información contenidos en dicha dirección, posteriormente los envía al bus de datos al procesador. (ver figura 12). Además de los buses de dirección y datos el procesador debe notificar a la memoria el tipo de operación que se va a realizar, para tal efecto deben añadirse las correspondientes líneas de control que dependen del tipo de memoria y de la implementación realizada.

(33)

Normalmente las memorias se encuentran disponibles con la interfase paralela estándar (bus de datos y direcciones), también se pueden encontrar en interfaces seriales, existe una variedad de dispositivos que cuentan con interfaces como la I2C (Inter-IC) o la interfaz SPI (Serial Peripheral Interface) que son protocolos estándar empleados para la comunicación con diferentes dispositivos, este tema será tratado en capítulos posteriores.

2. Almacenamiento de datos.

La estructura que ofrece la memoria normalmente es la organización de sus elementos en bytes. Por tanto, para almacenar los datos que manipula un procesador es imprescindible saber de antemano su tamaño. El tamaño de algunos datos básicos viene definido por la arquitectura del propio procesador. Por ejemplo, el lenguaje máquina de algunas arquitecturas contiene instrucciones máquina para operar enteros de 32 bits. Esto no quiere decir que el procesador no pueda manejar enteros de otros tamaños, sino que el dispositivo manipulará estos de forma mucho más rápida y eficiente. Números de otros tamaños pueden ser manipulados igualmente pero con un costo mayor en tiempo de ejecución.

Los lenguajes de programación de alto nivel como Java, C o C++ definen un conjunto de datos denominados “básicos” y un conjunto de mecanismos para definir datos complejos en base a ellos. Como los programas escritos en estos lenguajes deben ejecutar en diferentes equipos con diferentes procesadores, es difícil definir el tamaño de los datos tal que se ajuste a todos ellos. El compilador se encarga de transformar las operaciones escritas en lenguaje de alto nivel en las instrucciones más adecuadas para manipular los datos en el procesador pertinente. La tabla 2 muestra los tipos de datos básicos definidos en C y C++ así como su tamaño.

(34)

Tipo Tam. Bits Dígitos de precisión Rango Min Max Bool 8 0 0 1 Char 8 2 -128 127 signed char 8 2 -128 127 unsigned char 8 2 0 255 short int 16 4 -32,768 32,767 unsigned short int 16 4 0 65,535 Int 32 9 -2,147,483,648 2,147,483,647 unsigned int 32 9 0 4,294,967,295 long int 32 9 -2,147,483,648 2,147,483,647 unsigned long int 32 9 0 4,294,967,295 long long int 64 18 -9,223,372,036,854,775,808 9,223,372,036,854,775,807 unsigned long long int 64 18 0 18,446,744,073,709,551,615

float 32 6 1.17549e-38 3.40282e+38

double 64 15 2.22507e-308 1.79769e+308

long double 96 18 3.3621e-4932 1.18973e+4932

La regla para almacenar datos en memoria es utilizar tantos bytes como sean necesarios a partir de una dirección de memoria. En adelante, la posición a partir de la cual está almacenado un dato se denominará su dirección de memoria. De forma análoga, cuando se dice que un dato está en una posición de memoria lo

(35)

que significa es que está almacenado en esa posición y las siguientes que se precisen.

3. Métodos de direccionamiento.

Generalmente (aunque no necesariamente) una instrucción consta de una parte de operación y una de dirección, la parte de dirección puede contener la dirección de un operando utilizado en la ejecución de la instrucción. En otras ocasiones la parte dirección de la instrucción puede no contener la dirección donde se encuentra el operando, sino otra dirección donde se encuentra la dirección del operando. En los diferentes sistemas se emplea una amplia gama de modos de direccionamiento de los que se consideran algunos a continuación:

 DIRECTO. El operando se encuentra en alguno de los registros internos de la CPU o en la memoria principal. En el direccionamiento directo, la instrucción indica el registro o la dirección de memoria absoluta que contiene el operando o donde se debe almacenar el resultado de una operación.

 INDIRECTO. El operando se encuentra en la memoria principal del sistema. La dirección de memoria de este operando no es dada directamente por la instrucción, sin embargo, ésta informa del registro o posición de memoria donde se encuentra almacenada la dirección del operando. En algunos procesadores, se soportan operaciones tales como incremento, post-decremento, pre-incremento, pre-decremento en el valor almacenado en el registro de direcciones o en la memoria que contiene la dirección del operando.

 RELATIVO. En este caso el operando está en memoria principal, es decir, por fuera de la CPU. La dirección del operando ha de ser calculada como la suma del contenido de cierto registro con un valor de desplazamiento. Normalmente el registro actúa como apuntador. El valor del desplazamiento va en el formato de instrucción como un valor constante. En el direccionamiento relativo la parte dirección de la instrucción contiene el número N. En memoria la dirección del operando se encuentra sumando el numero N al número del contador del programa.

 INDEXADO. Permite tomar un registro interno que le será sumado al registro base para calcular la dirección de memoria donde se encuentra el operando. Algunas CPUs permiten tener un valor de desplazamiento, el cual está almacenado en el formato de instrucción. En el direccionamiento indexado como en el relativo, la parte dirección de la instrucción contiene un número N que puede ser positivo o negativo. Sin embargo para utilizar el direccionamiento indexado, el computador debe estar equipado con un registro especial empleado para permitir direccionamiento indexado, y

(36)

denominado naturalmente registro índice. La posición de memoria donde se localiza el operando se encuentra mediante la suma I + N.

 REGISTRO INDIRECTO. Algunos computadores que incorporan la facultad del direccionamiento de registro indirecto tienen un registro especial, a menudo llamado registro (P). Este registro contiene la dirección de memoria del operando. Una instrucción que invoque realmente direccionamiento de registro indirecto no tiene bits significativos en su parte dirección. En lugar de ello, la instrucción completa se incluye en los bits asignados a la parte de operación de la instrucción. Una instrucción típica que use un registro de direccionamiento indirecto debería especificar "cargar" el acumulador con el operando localizado en la dirección de memoria dada en el registro (p).

 INMEDIATO. En el direccionamiento inmediato, la parte de dirección de la instrucción contiene no la dirección del operando sino el mismo operando. Se usa cuando el operando es un valor constante. El tamaño o cantidad de bits para este operando depende de la cantidad reservada en el formato de instrucción.

 INHERENTE. Ordinariamente una dirección que es parte de una instrucción se refiere a una posición de memoria. Cuando una instrucción indica una fuente o un destino de datos y no se direcciona específicamente, ya no se hace referencia a la posición de memoria, se dice que la instrucción tiene una dirección inherente.

Lección 10: Salidas y Conversores D/A.

Para las salidas de los sistema embebidos se emplean dispositivos tanto análogos como digitales, para el caso de dispositivos análogos, las salidas digitales deben pasar primero por los correspondientes conversores Digital a Análogos (D/A). Entre los elementos de salida que normalmente son empleados en sistemas embebidos tenemos:

1. Elementos de Visualización.

Estos son de gran importancia para los sistemas embebidos, son empleados para desplegar información relevante al usuario, dependiendo de la aplicación pueden desplegar señales medidas, operaciones, servir de interfaz para la programación de determinados dispositivos, entre otros.

Existe una gran variedad de dispositivos de visualización gracias al continuo desarrollo tecnológico en esta área, los más comunes son los displays de 7 segmentos o alfanuméricos fabricados a partir de leds, También se encuentra en el mercado matrices de leds displays de cristal líquido, llegando a desarrollarse pantallas táctiles que pueden servir para interactuar directamente con el sistema, los últimos desarrollos e investigaciones en el tema han arrojado una nueva

(37)

tecnología conocida como displays orgánicos, a diferencia de tecnologías como LCD que requieren de luz trasera o Backlight, éstos generan su propia iluminación. 2. Dispositivos electromecánicos.

Estos son actuadores que modifican su entorno, puede tratarse de relays, motores, electroimanes, cerraduras electromecánicas, electro-válvulas, bobinas, servomecanismos etc. En muchos casos las señales de control hacia este tipo de dispositivos debe pasar por una etapa de potencia para evitar el deterioro del dispositivo de control.

Conversores D/A.

Un conversor Digital a Análogo se encarga, como su nombre lo dice, de convertir señales digitales en señales analógicas (Corriente Voltaje o carga eléctrica). Todos los conversores D/A poseen entradas digitales provinentes de buses de microprocesadores, SPI o I2C, y pueden proveer uno o más canales de salidas análogas.

Este tipo de conversores se utiliza en reproductores de sonido de todo tipo, dado que actualmente las señales de audio son almacenadas en forma digital (por ejemplo, MP3 y CDs), y para ser escuchadas a través de los parlantes, los datos se deben convertir a una señal analógica. Los conversores digital-analógico también se pueden encontrar en reproductores de CD, reproductores de música digital, tarjetas de sonidos de PC, etc.

Como se trata del proceso inverso a la conversión A/D se puede pensar en los valores digitales discretos a la entrada de conversor, como números obtenidos a partir de un proceso de muestreo, que se actualizan constantemente en intervalos determinados por la correspondiente frecuenta de muestreo, obteniéndose a la salida del conversor voltajes (normalmente) que son una función lineal de dichos números de entrada. Dado que a cada instante se actualizan los números, la salida del conversor se mantiene constante entre conversiones, cambiando automáticamente el voltaje dependiendo del valor digital de cada entrada, esta operación genera una señal constante por partes (ver figura 13).

Referencias

Documento similar

Otra de las características asociada a los sistemas complejos es la sensibili- dad a las condiciones iniciales como ocurre con los sistemas caóticos, de hecho en el estudio de

1991: GNU de la FSF + kérnel linux sobre x86 Sistema tipo UNIX (compatible POSIX) Software libre. Distribuido inicialmente entre

Cosas que importa saber sobre el microcontrolador para empezar un proyecto de sistemas embebidos:.. ● Tipo procesador, tamaño palabra,

Esta ofrece todo lo necesario para personalizar, crear y desplegar una solución que corra en Linux en la PS (“Processing System”) de los sistemas embebidos de Xilinx. Esta

Todo esto muestra que, aunque las diferencias ideológicas entre los ciudadanos en las democracias industriales avanzadas se hayan difu- minado en las últimas décadas (Fukuyama,

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

En el contexto del proyecto de desarrollo de una metodología de codiseño hardware/software para sistemas de procesamiento radar, se presenta en este capítulo, inicialmente

Aunque pudiera parecer sencillo, la detección de un ataque de estas características puede resultar muy complejo. Este tipo de conversación alerta sobre una situación crítica, cuya