Electrónica Digital II M. C. Felipe Santiago Espinosa Aplicaciones de los FPLDs Octubre / 2014
Aplicaciones de los FPLDs Los primeros FPLDs se usaron para hacer partes de diseños que no correspondían a ningún componente existente en el mercado. Las principales ventajas de su uso eran el reducido número de chips comparado con una implementación con circuitos LSI y la reducida inversión de capital cuando un ASIC a medida era la otra alternativa. Con el paso del tiempo, los dispositivos disponibles han aumentado en tamaño y de ese modo más aplicaciones han sido posibles.
Aplicaciones de los FPLDs Un uso interesante de esta tecnología es el prototipado de circuitos completos a medida, que tienen una compleja estructura interna, como los procesadores. La mayor parte de los fabricantes de procesadores ahora construyen prototipos con FPGAs en algún punto del proceso de diseño. El empleo de FPGAs para prototipar procesadores RISC facilita el empleo de instrucciones definidas por el usuario, antes de fabricar realmente el diseño final en un ASIC.
Aplicaciones de los FPLDs Para aplicaciones de poco volumen el coste de un ASIC no puede justificarse y por eso existe una tendencia creciente para usar una versión FPLD no sólo como prototipo.
Aplicaciones de CPLDs Los CPLDs son útiles para una amplia gama de aplicaciones, desde la implementación de pegamento lógico hasta el prototipado de arreglos de compuertas pequeños. Uno de los usos más comunes en la industria en este momento, y una razón de peso para el gran crecimiento en el mercado de los CPLDs, es la conversión de diseños consistentes en múltiples SPLDs en un número menor de CPLDs. Con los CPLDs es posible realizar diseños bastante complejos, como controladores de gráficos, UARTs, controladores de LAN, control de caché, y muchos otros.
Aplicaciones de FPGAs Una lista de las aplicaciones típicas incluye: pegamento lógico, integración de múltiples SPLDs, controladores de dispositivos, codificación y filtrado en sistemas de comunicación, sistema de tamaño pequeño a mediano con bloques de memoria SRAM, y muchos más. Otras aplicaciones interesantes de FPGAs son el prototipado de diseños que más tarde serán implementados como ASICs, así como la emulación de sistemas completos de gran tamaño
Aplicaciones de FPGAs La emulación de hardware complejo, productos que requieren muchos FPGAs y el software necesario para particionar y mapear al circuito. Una aplicación de FPGA que está comenzando a tener éxito es el uso de FPGAs como máquinas de cómputo personalizadas. Esto significa que el hardware va a ejecutar" al software, en lugar de compilar el programa para su ejecución en una CPU normal.
Cómputo reconfigurable en FPGAs (Trabajos realizados en el INAOE) Las aplicaciones de los FPGAs van más allá de la simple implementación de lógica digital. Los FPGAs pueden ser utilizados para la implementación de arquitecturas específicas para acelerar algún algoritmo. Los sistemas basados en FPGAs proporcionan un mejor desempeño que sus correspondientes implementaciones software. Una arquitectura específica para un algoritmo puede tener un rendimiento de 10 a 1000 veces superior al de una implementación en un DSP.
Las aplicaciones que requieren de un gran número de operaciones simples son adecuadas para su implementación en FPGA puesto que un elemento de procesamiento puede diseñarse para efectuar esta operación y varias instancias de éste pueden reproducirse para llevar a cabo procesamiento paralelo. Los algoritmos de bajo nivel en visión por computadora y análisis de imágenes son candidatos ideales para explorar arquitecturas específicas que aceleren su rendimiento.
Posibilidades con visión en tiempo en real En el laboratorio de FPGAs y Cómputo Móvil del INAOE se han desarrollado arquitecturas eficientes en FPGA para procesar en tiempo real las siguientes características: detección de contornos y esquinas, convolución 2D, extracción de movimiento (flujo óptico), cálculo de disparidad estéreo, seguimiento (trackeo) multiobjetivo y seguimiento adaptivo usando distancia de Hausdorff. Actualmente se trabaja en el desarrollo de un procesador reconfigurable para generalizar las arquitecturas anteriores y permitir trabajar con otras aplicaciones como son: creación de mosaicos en tiempo real, procesamiento paralelo de matrices, cálculo de profundidad a partir de múltiples puntos de vista, escaneo 3D basado en luz estructurada y en estéreo, y reconstrucción de modelos 3D en tiempo real.
Adicionalmente se desarrolla un estándar de creación de bibliotecas de módulos hardware-software para ampliar las posibilidades de aplicación de los sistemas de visión basados en FPGA. La posibilidad de analizar imágenes en tiempo real abre nuevos caminos y oportunidades de investigación aplicada a corto plazo. Por ejemplo, el uso de visión por computadora para control de calidad industrial sobre líneas de producción a altas velocidades, o el escaneo 3D de objetos en tiempo real.
Plataforma portátil FPGA En el laboratorio de FPGAs del INAOE se trabaja en el desarrollo de una plataforma genérica para sistemas de cómputo reconfigurable. Aunque el laboratorio cuenta con infraestructura para el desarrollo de arquitecturas basadas en FPGA, como son tarjetas de evaluación y tarjetas de desarrollo, éstas no son adecuadas para implementar un sistema aislado, potente y flexible que se pueda utilizar tanto para investigación y desarrollo, como para implementar prototipos integrados. El propósito principal de la plataforma es contar con un estándar de trabajo alrededor del cual se puedan implementar arquitecturas de visión, sistemas portátiles, sistemas paralelos y distribuidos, y en general para contar con un prototipo de bajo costo en el que se realicen las validaciones finales de los trabajos del grupo.
La plataforma, de manera genérica, consta de un microprocesador de alto desempeño, con memoria Flash y RAM, así como puertos paralelo y serial, y módulo de comunicación Ethernet 10/100T para acceso remoto. El microprocesador está acoplado a un FPGA de alto desempeño donde se implementarán las arquitecturas reconfigurables que realizarán la mayor parte del procesamiento de datos en la plataforma. El FPGA cuenta con dos bancos de memoria RAM locales, donde se podrán realizar arquitecturas de tipo Harvard entre estos bancos. El FPGA y/o el microprocesador tendrán acceso a puertos paralelos para acceder sensores externos, como serían sensores de imagen CMOS. El microprocesador, a través de un kernel software de tiempo real, podrá gestionar la reconfigurabilidad y la reconfiguración dinámica del FPGA, y almacenar y gestionar contextos del FPGA.
La configuración de la plataforma permite explorar adicionalmente a las arquitecturas, esquemas de bibliotecas de funciones hardware-software, en un contexto de sistemas distribuidos. Esto es, que las funcionalidades hardwaresoftware de la plataforma se encuentren almacenadas remotamente y que puedan cambiarse dependiendo de las necesidades de la aplicación. El esquema de la plataforma es suficientemente abierto como para adaptarlo al desarrollo de arquitecturas de visión por computadora e implementar cámaras inteligentes donde la cámara realiza procesamiento de datos antes de enviarlos a través de la red. La comunicación Ethernet, a su vez, abre la posibilidad de investigar y desarrollar sistemas distribuidos donde cada módulo realiza procesamiento en su FPGA. Otras aplicaciones como la reconfiguración dinámica, compresión de datos e imágenes, criptografía y procesamiento de señales son posibles gracias a la combinación procesador-fpga propuesta.
Recuperación 3D en tiempo real y modelado 3D Las posibilidad de realizar cálculos de algoritmos de visión por computadora en tiempo real, gracias a las arquitecturas FPGA, permite explorar nuevas aplicaciones. Una de estas aplicaciones es poder medir la profundidad y la forma 3D de una escena u objeto. Las aplicaciones van desde medición para control de calidad, hasta la generación automática de modelos 3D que puedan ser utilizados en programas CAD o de animación 3D. Se investiga y desarrolla un scaner 3D que permita adquirir en tiempo real el modelo 3D de un objeto. Se exploran varios caminos: usando luz estructurada, usando franjas laser, y usando cámaras calibradas, sistema estéreo y cámara con movimiento libre de la escena.
Los principales retos a superar son: Cálculo de 3D en tiempo real. Se proponen diversas arquitecturas basadas en FPGA para calcular la disparidad estéreo o la profundidad a partir de iluminación estructurada. Adquisición de imagen y calibración dinámica. Un sistema con movimiento libre de la cámara es mas flexible pues permite tomar vistas donde se requiera adquirir mas detalles, pero por otro lado, introduce la dificultad de calibrar dinámicamente la posición de la cámara e ir corrigiendo sin acumular demasiado error. Creación dinámica e incremental del modelo 3D. La posibilidad de mover libremente la cámara permite obtener modelos 3D complementarios de la escena u objeto, pero también es necesario registrar y unir dichos modelos en un modelo global 3D mas completo y que minimice los errores de adquisición.