Introducción Sistemas Embebidos

Introduccion

Desde sus inicios los sistemas integrados se han convertido en una parte integral de las sociedades actuales, su construcción requiere de una amplia gama de componentes, herramientas y tecnologías de hardware y software. Uno de los principales componentes en la construcción de sistemas integrales modernos ha sido el FPGA (Arreglo de Compuertas Programables en Campo). La diferencia fundamental del FPGA en comparación con otras soluciones existentes como los Circuitos Integrados (IC) y los avanzados System-on-a-Chip (SoC) está en que el FPGA ofrece un “hardware” configurable para el desarrollo de soluciones complejas, esto debido a la alta escala de integración de los componentes electrónicos hoy en día.

La popularidad del FPGA sobre otras soluciones esta en el alto grado de flexibilidad, principalmente porque no esta limitado por una arquitectura específica como los SoC, por ello muchos diseñadores de sistemas integrados reconocen el potencial de la FPGA para construir arquitecturas de computación personalizadas, ademas de otras grandes capacidades y una amplia gama de funciones integradas en un mismo dispositivo chip. Aún hoy en dia la mayoria de las soluciones de sistemas integrados va desde los pequeños sistemas de que integran IC de 8 o 16 bits, los avanzados procesadores  RISC de 32-bit  en una solución SoC, hasta los circuitos integrados de aplicacion específica (ASIC); si bien cuando la solicitud se ajusta a los recursos proporcionados por estas dos perspectivas todo esta bien, sin embargo no son óptimas para todos los sistemas integrados,  la principal restricción de estas soluciones está en la arquitectura predeterminada que en algunos casos  algunos de los recursos  se desperdician mientras que algunas características de hardware adicional se agregan para cubrir todos los requerimientos.  Con la FPGA el diseñador tiene un mayor grado de flexibilidad para implementar una arquitectura del sistema sobre cada aplicacion, lo que permite personalizar fácilmente la solución requerida, ahorrando cada componente reduciendo así el costo y aumentando la fiabilidad del sistema, optimizando así cada  aplicación específica. En el caso de las soluciones ASIC que por lo general ofrecen una eficiencia mayor sobre la implementación FPGA, la FPGA reduce el gasto, los riesgos y el tiempo de salida de la fabricacion de un ASIC.

Sistemas Embebidos

En el sentido más simple, un sistema embebido es un organismo especializado de computación. La computadora se modelada como un sistema que incluye entradas, salidas, y una unidad de cálculo. Las entradas, que vienen desde el entorno, determinar las salidas, que son procesadas a través de la unidad de calculo. Las entradas y salidas a menudo son son señales físicas. Los sistemas embebidos se diferencian de las computadoras de propósito general, ya que las primeras generalmente forman parte de algún  producto más grande y su propósito se centra estrictamente en el apoyo a ese producto, el usuario final del  producto normalmente no interactúa directamente con la sistema embebido, o interactúa con sólo una  interfaz limitada, tales como un control remoto.   En teoría los sistemas de computación integrados y los  de propósito general comparten los mismos principios aunque los sistemas integrados presentan un estudio más avanzado ya que a menudo requieren hardware y software de propósito específico.

Hardware se refiere a la implementación física de una computadora, esto es generalmente una colección de circuitos electrónicos y tal vez algunos componentes mecánicos, el hardware es visible y el diseño ocupa físicamente un espacio. Otra característica de hardware es que todos los  componentes son activos al mismo tiempo, cuando las entradas son variadas, los cambios en el circuito se propagan a través de la máquina de un modo predecible, pero no necesariamente de manera sincronizada. El software, sin embargo, es la información que describe el comportamiento de la máquina.

 

Modelos de Ejecución

Uno de los aspectos más desafiantes de diseño de sistemas embebidos es el hecho de que uno tiene ambos componentes de hardware y software en el diseño. Estos tienen fundamentalmente diferentes modelos de ejecución, Existen varios paradigmas de programación de alto nivel (funcional, orientado a objetos, etc). Sin embargo, a nivel máquina, todos los procesadores comerciales utilizan un modelo imperativo, ir a buscar-ejecutar con una memoria direccionable. En el software, tiene un modelo de ejecución totalmente secuencial modelo, eliminando cualquier paralelismo explícito. Como resultado, las operaciones se realizan en orden. En contraste, hardware es naturalmente paralelo y los ingenieros informáticos debe explícitamente incluir la sincronización en su diseño. El hardware será la especificación que usamos para optimizar las aplicaciones en la FPGA y evitar el modelo de ejecución secuencial.

 

Medidas de éxito

En el mundo de los sistemas embebidos, el éxito de un proyecto esta en una combinación de requisitos y parámetros de rendimiento. Los requisitos son capacidades que el sistema debe cumplir para ser  funcional.  Además, un diseño de sistema embebidos esta limitado por el ambiente donde se integra. Claramente, los requisitos y especificaciones guían el diseño de un sistema embebido pero a menudo existen criterios adicionales (que puede o no puede ser proporcionada de forma explícita) que determinan el éxito del producto.  Con el fin de tomar decisiones sensatas dada una cantidad fija de recursos, un desarrollador necesita considerar métricas cuantificables como la velocidad, energía y embalaje como una guía del diseno, estos son factores clave que distingue uno sistema de otro, el diseno optimo busca tener un equilibrio entre estos tres factores, por ejemplo un sistema de monitoreo de signos vitales en pacientes en estado críticos debe tener una velocidad de procesamiento en tiempo real lo más veloz posible aunque su  consumo de energía sea elevado, pero un celular puede no ser tan veloz pero su consumo de energía y su tamaño son restricciones considerables en su implementación.

Rentabilidad

Los dispositivos electronicos tiene un tiempo de vida corto en el mercado, la tecnología FPGA ofrece un dispositivo reutilizable incluso cuando ya se encuentra implementado en un producto final, lo que hace al FPGA una inversión atractiva para la implementación de soluciones sofisticadas.

 

 

FPGA

 

Cada chip de FPGA está hecho de un número limitado de recursos predefinidos con interconexiones programables para implementar un circuito digital reconfigurable y bloques de E/S para permitir que los circuitos tengan acceso al mundo exterior, toda la tecnología de reconfiguración de la FPGA reside sobre el transistor CMOS, especialmente sus características físicas que son lo que permite a esta tecnología ofrecer un hardware reconfigurable.

Los bloques lógicos estan configurados para procesar cualquier función booleana que sea representada, el diseño lógico se implementa mediante las tablas de búsqueda (LUT) las cuales permiten almacenar la logica de la aplicacion, por ejemplo para representar la operacion booleana f(x,y,z) = xy + z’ representamos la tabla de la verdad en una LUT , la tabla de búsqueda contiene una memoria SRAM (static RAM) junto con un MUX de selección.

Dado que la memoria SRAM es volátil, la FPGA necesita un mecanismo que conserve el valor que existe en cada celda de memoria si el suministro de energía es cortado. El proceso que restablece está información en la FPGA conoce como configuración, para configurar n celdas se requiere de n ciclos, por lo general está configuracion es agrupada en un solo bloque de memoria EEPROM  y algunos chip implementan mecanismos de transferencia de byte a byte en lugar de bit a bit o algún tipo de soporte de paralelismo para acelerar el proceso de programación/configuración.

Los bloques más importantes en la FPGA son:

1) Celda Lógicas: son los bloque de más bajo nivel, se componen de la unión de una LUT y un D FF, cualquier diseño lógico (combinacional o secuencial) se puede implementar en una celda lógica o en la combinación de ellas.

2) CLB (Bloques Lógicos Configurables): son un conjunto de celdas lógicas agrupadas que se comportan como un circuito de propósito especial (sumador, contador, etc) esto hace que las celdas que estan juntas se comuniquen de manera rápida dando una gran ventaja en la reducción de tiempos y en el diseno.

3) Switch Box (Caja de Conmutación):  es usada para enrutar las e/s de los bloques lógicos, es el dispositivo encargado de pasar senales de un segmento a otro.

4) IOB (Bloque de E/S): se encuentran en el perímetro del chip y se encargan de comunicar al circuito con el exterior, se enfocan en enrutan recursos desde las terminales hacia el chip y viceversa.

Ademas de estos bloques, las FPGA integran un conjunto de bloques de propósito específico que buscan soportar los requerimientos más comunes del diseñador y así ofrecer una variedad más amplia de disenos digitales:

1) BRAM (Bloque RAM): es posible construir una pequeña memoria RAM usando los CLB  del chip aunque esto no sería una opción óptima si la cantidad de memoria requerida es muy grande. Por ello el FPGA ofrece un bloque de memoria independiente de los recursos del chip.

2) DSP (Procesadores de Señales Digitales): los bloques DSP pueden implementarse como multiplicadores, sumadores, acomuladores, operadores nand, or, xor, o ser combinados para realizar operaciones más complejas como sumadores de punto flotante. Permiten el diseño de soluciones más complejas.

3) Procesadores (Processors): son procesadores con un set de instrucciones RISC, brindan un soporte extra para simplificar el diseno  y ahorro de recursos. Existen 3 tipos de implementaciones 1) Hard Preccessors, son aquellos que vienen integrado en el chip cómo PowerPC en los targets Virtex 2, Virtex 5. 2) Firm Processors, se fabrican con software pero son estáticos en su arquitectura. 3) Soft Processors, ofrecen un alto grado de flexibilidad dado que se fabrican en software y además son totalmente personalizables, es decir se puede implementar aquellos módulos que sean requeridos en el diseño, MicroBlaze y PicoBlaze son un buen ejemplo de ello.

4) DCM (Digital Clock Manager): es  un administrador de frecuencias de reloj, la mayoría de los sistemas emplean una frecuencia de reloj (clk) fija pero algunas soluciones requieren diferentes frecuencias de trabajo, cómo por ejemplo cuando integramos un periférico de baja velocidad de procesamiento al bus de sistema.

5) High Speed Serial Transceivers: son los dispositivos de serialización/deserialización de datos paralelos sobre un canal serial, su función es implementar una variedad de interfaces de e/s digitales.

 

De HDL al Bitstream de configuración

El proceso de sinterización consiste en convertir el código HDL en un archivo de puertas lógicas llamado netlist, los archivos netlist normalmente se representan como archivos binarios pero algunas veces se pueden representar en un formato EDIF (Electronic Design Interchange Format) que es independiente del fabricante. El proceso de agrupar compuertas y asignar funcionalidades a las primitivas de la FPGA se conoce como mapeo, el resultado de mapear una netlist es otra netlist, la diferencia esta en que el primer archivo representa compuertas booleanas genéricas y el segundo presenta las primitivas del FPGA (3-LUTs, FF, TBUFs, ect). El siguiente paso en el flujo de trabajo back-end es asignar las primitivas del chip en bloques particulares dentro del dispositivo, este proceso se conoce como placement, debido a que cada 3-LUT es igual es importante optimizar la colocación de las salidas de cada 3-LUT para minimizar la latencia en el diseño. Subsiguiente al proceso placement esta el routing que consiste en asignar las rutas que conectan cada segmento del diseño, para evitar fallas por congestionamiento o la colocación en parte de la implementación se emplean herramientas especializadas en Place-and-Route que integran algoritmos para asignar los recursos de la FPGA de forma óptima, el resultado es un arreglo bidimensional de celdas SRAM. El último paso consiste en convertir el arreglo 2-D de celdas SRAM en un flujo lineal de bits (bitstream), este proceso de configuración puede cambiar de un proveedor a otro y en muchas ocasiones es parte el capital intelectual del proveedor.

 

Diseño de Sistemas

El diseño e implementación  de una arquitectura de sistema embebido se requiere el dominio de tres tipos de herramientas:

  1. Herramientas de Hardware
  2. Herramientas de Software
  3. Herramientas de Configuración

Xilinx provee un EDK que integra un conjunto de herramientas para el diseño de hardware, éstas herramientas se utilizan para ensamblar los componentes de hardware de un sistema.  El EDK incluye un gran repositorio de soft core pre-compilados personalizables y envoltorios que proporcionan una interfaz para crear instancias de hard cores, integra la arquitectura de bus de IBM CoreConnect, lo que proporciona versiones buses, puentes y árbitros ampliamente utilizados que se han configurado para su uso con los dispositivos FPGA de Xilinx. Es posible construir un sistema de procesador con memoria y luego agregar cores personalizados para implementar funcionalidad específica haciendo uso de este repositorio.

Los componentes que integran un sistema incluye procesadores, buses, memorias y periféricos.

Existen dos tipos de implementaciones de procesadores que se pueden integrar  en un board FPGA de Xilinx. Algunos boards integran procesadores Hard Core (PowerPC 440 en una Virtex 5) o es posible construir una amplia gama de procesador Soft Core, cómo MicroBlaze, PicoBlaze y OpenSPARC. La principal diferencia entre estas opciones de procesador es su rendimiento en comparación con el área de que ocupan. El PowerPC 440 es un procesador de 32 bits que implementa la Arquitectura PowerPC y añade algunas características para sistemas embebidos. El MicroBlaze es un procesador soft core de 32 bits, y las versiones actuales ahora son compatibles con la memoria virtual, por lo que es una alternativa deseable a la PowerPC. Uno de los beneficios de la MicroBlaze es que puede tener múltiples instancias, en comparación con el PowerPC, que tiene hasta dos núcleos de procesador. El PicoBlaze es un pequeño procesador de 8 bits, que es apropiado para un número de aplicaciones de contro.

El EDK ofrece una cantidad considerable de opciones de bus. Incluyen el PLB, LMB, OPB, FSL, DCR, y dos tipos de  OCM. Una de las diferencias clave entre los buses es la cantidad de ancho de banda que se ofrecen. Algunos de ellos están diseñados para funciones específicas y otros proporcionan una funcionalidad aceptable con la cantidad mínima de recursos.

El Procesador Bus Local (PLB) proviene de la biblioteca IBM CoreConnect. Ofrece un alto rendimiento de datos (128 bits) y el mayor ancho de banda que los otros buses disponibles. El bus de la memoria local (LMB) es un bus de 32 bits diseñado específicamente para ser un bus de sistema para el MicroBlaze, está diseñado para tener un solo maestro (el MicroBlaze) y un esclavo (un controlador de memoria). Tiene un alto ancho de banda y requiere una mínima cantidad de recursos. EL OPB (On Chip Peripheral Bus) es un bus de 32 bits y es un excelente opción para conectar una serie de periféricos que requiere muy poco ancho de banda, cuenta con un protocolo sencillo, que hace que sea una interfaz fácil de implementar. El bus de enlace rápido Simplex, (FSL) es un bus de propósito especial diseñado para inyectar (o extraer) un flujo de dato desde un procesador  MicroBlaze. Se trata de un FIFO que vincula directamente el procesador a un periférico, el ancho de banda es considerablemente alta entre los dos componentes. El Registro de Control de bus (o bus DCR) es un dispositivo diseñado específicamente para el control del bus, requiere muy pocos recursos y es bastante limitado en su funcionalidad (sólo un maestro y sólo un bus de direcciones de 10 bits).

Memoria, en los sistemas construidos en el XPS incluye  dos tipos de memoria On-Chip (formado a partir de la Brams) y Off-Chip. La memoria On-chip está limitada por los recursos disponibles; sin embargo, proporciona un alto ancho de banda y un acceso de baja latencia. La memoria Off-chip (SRAM o DRAM) es la memoria que se encuentra fuera del FPGA, proporciona una mayor capacidad de almacenamiento, un alto ancho de banda y una latencia mínima.  Estos tipos de memoria son generalmente instanciados como un solo core al que se le asigna el número apropiado de BRAMs y la lógica de decodificación para que coincida con el ancho del bus de datos del controlador y la capacidad (especificado por el número de líneas de dirección). La interfaz entre la memoria a través de un bus con en el chip es manejado por un controlador de memoria, normalmente se emplea el bus LMB.  Algunos sistemas utilizan un controlador de memoria (MPMC)  para conectar un core con la memoria directamente, y así  independientemente pueda emitir peticiones desde y hacia la memoria, lo que disminuye el tráfico en el bus del sistema.

Por último, los periféricos  es el grupo de cores que integran  un sistema embebido, están asociados con los distintos sensores y actuadores utilizados en el producto que encierra además de todos los core básicos utilizados para comunicarse con subcomponentes en el sistema de computación básica. Se organizan en categorías según su función, donde hay unidades funcionales utilizados para el procesamiento de calculo y Algunos de ellos encargados en los protocolos de comunicación paralelo o serie cómo el UART.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s