Inicio Artículos Principales ventajas de las FPGA frente a los microcontroladores

Principales ventajas de las FPGA frente a los microcontroladores

fpga

Al crear un nuevo sistema electrónico, los diseñadores han de tomar un enorme número de decisiones. Una de las más importantes es la arquitectura del sistema y el silicio utilizado para implementarla. Teniendo en cuenta la función crítica que desempeñan estos dispositivos y la diversidad de opciones disponibles en la actualidad, tomar la decisión equivocada puede significar la diferencia entre el éxito y el fracaso en el mercado.

Si ha encontrado este blog, probablemente estará familiarizado con las FPGA (Field Programmable Gate Arrays) así como con otros dispositivos de silicio con los cuales compiten. He pensado que sería útil comparar y contrastar algunas de las principales diferencias entra las FPGA y sus principales competidores, los microcontroladores.

Principales ventajas del diseño con FPGA

La máxima ventaja que ofrece diseñar con FPGA es su estructura básica programable, que permite al diseñador programarlas con rapidez (y reprogramarlas) con el fin de desempeñar prácticamente cualquier función. Una manera de visualizar esta estructura consiste en representar muchas “islas” lógicas programables (bloques) de pequeño tamaño en un “mar” de interconexiones programables. Cada bloque lógico contiene lógica combinatoria y un registrador, y cada bloque se puede programar para que realice la función deseada. Por su parte, la interconexión programable se puede utilizar para conectar las E/S de aplicación general (general-purpose input/outputs) de la FPGA a las E/S de los bloques lógicos seleccionados, y conectar los bloques lógicos entre sí. Los bancos de GPIO también se pueden programar en función de las diferentes interfaces eléctricas, impedancias de entrada y pendientes (flancos) de salida.

La estructura programable de la FPGA se puede utilizar para implementar algoritmos de procesamiento de datos de forma masivamente paralela. Supongamos, por ejemplo, que un algoritmo necesita efectuar 100 sumas de datos de tipo similar. Se puede configurar una FPGA para que efectúe todas ellas al mismo tiempo y en el mismo flanco del reloj. Esto permite multiplicar por 100 el número de cálculos realizados en el mismo período de tiempo o ese mismo número a 1/100 de la frecuencia del reloj.

Esta flexibilidad inherente ayuda a acelerar el desarrollo y la comercialización de diseños de aplicaciones basadas en FPGA ya que la funcionalidad de la FPGA integrada se puede determinar o cambiar en paralelo mientras se finaliza el diseño del sistema. Esta reprogramabilidad también permite que los desarrolladores alarguen la vida útil de una FPGA (y a su vez de los sistemas que las utilizan) actualizando o cambiando la funcionalidad de las FPGA por medio de actualizaciones de software.

Principales limitaciones del diseño con microcontroladores

Los microcontroladores aplican un enfoque distinto. Una vez establecida la plataforma de hardware, la funcionalidad del silicio es fija y el testigo pasa a los desarrolladores de software, que asumen su parte del diseño empleando un lenguaje de programación como C o C++. El código fuente C/C++ resultante pasa a un compilador, el cual genera el código máquina que será ejecutado por el microcontrolador.

Si bien los microcontroladores están capacitados para desempeñar tareas que impliquen la toma de decisiones, la arquitectura von Neumann en la que se basan la mayoría de ellos resulta ineficiente para ejecutar muchos algoritmos de procesamiento de datos. Esto se debe a que el funcionamiento de esta arquitectura se basa en extraer una instrucción de la memoria, decodificar esa instrucción, recoger un dato (si es necesario), ejecutar la instrucción y almacenar el resultado (si es necesario). Como es natural, esta descripción simplifica el proceso pero lo refleja a grandes rasgos. El resultado final es que el microcontrolador desarrolla sus operaciones secuencialmente (unas tras otra). La ejecución del inmenso número de operaciones necesarias para implementar un DSP en un microcontrolador también exige un reloj del sistema de alta velocidad que aumenta el consumo de energía por parte de la aplicación.

Las arquitecturas de sistemas más antiguos aprovechan tanto los microcontroladores como las FPGA conectando ambos dispositivos, de modo que el microcontrolador aporta las capacidades para la toma de decisiones y la FPGA se encarga del procesamiento intensivo de datos. En las arquitecturas de sistemas más avanzados, los equipos de ingeniería aprovechan la flexibilidad inherente de las FPGA y su rendimiento para sustituir por completo a los microcontroladores, concentrando así las tareas relacionadas con la toma de decisiones y el procesamiento de datos en la FPGA, que generalmente permite reducir el tamaño del diseño y disminuir el consumo. Los ingenieros pueden llevarlo a cabo mediante microcontroladores y FPGA con un “núcleo de software” donde la funcionalidad del microcontrolador se implementa en la estructura programable. Las FPGA también pueden contener varias funciones implementadas como “núcleos de hardware” directamente en el silicio, como SRAM, memoria no volátil, DSP, PLL, administradores de reloj y bloques SERDES.

programacion de microcontroladores fpga

Empezar a trabajar con FPGA

La manera tradicional de capturar un diseño con FPGA consiste en utilizar un lenguaje HDL (hardware description language) como Verilog o VHDL para describir el diseño en lo que se conoce como nivel de transferencia de registro (register transfer level, RTL) de abstracción. Este código fuente RTL se introduce luego en un motor de síntesis (pensemos en un “compilador”) que generará el archivo de configuración utilizado para programar la FPGA. Para los desarrolladores no familiarizados con HDL, existen herramientas basadas en interfaces gráficas de usuario o GUI (Lattice Propel™ por ejemplo) que permiten capturar diseños basados en procesador mediante una interfaz del tipo arrastrar y soltar. En este caso se seleccionan y se conectan uno o más núcleos de procesador y las funciones periféricas asociadas por medio de la GUI de la herramienta, que generará automáticamente el RTL para el motor de síntesis.

Para quienes empiecen a trabajar o a hacer sus primeras pruebas con FPGA, Lattice es un reconocido y veterano suministrador de FPGA de bajo consumo y alto rendimiento en formatos pequeños. La plataforma Lattice Nexus™ para FPGA se basa en un proceso FD-SOI de 28 nm que consume un 75% menos y reduce 100 veces la tasa de errores de software si se compara con las FPGA similares de sus competidores. La plataforma Nexus se utilizó para desarrollar nuestras familias de FPGA CrossLink™-NX, Certus™ NX, CertusPro™-NX y Mach™-NX, que ofrecen a los desarrolladores todo un conjunto de soluciones FPGA optimizadas para la aplicación.

Lattice también proporciona un paquete de herramientas de diseño de uso intuitivo, como Lattice Diamond® y Lattice Radiant®. Ambas complementan a Lattice Propel, un conjunto completo de herramientas gráficas y líneas de instrucciones que se pueden usar para crear, analizar, compilar y depurar tanto el diseño de un sistema procesador basado en FPGA como el software diseñado para ese sistema procesador.

Para facilitar aún más el desarrollo de aplicaciones con nuestras FPGA de bajo consumo, Lattice ha desarrollado una completa gama de plataformas modulares de hardware, ejemplos de demostración, diseños de referencia, núcleos de IP, herramientas de software para desarrollo y servicios de diseño a medida que denominamos pilas de soluciones. Estas pilas simplifican y aceleran el desarrollo de aplicaciones comunes basadas en FPGA que se usan en varios mercados que cubrimos. Entre ellas se encuentran Lattice sensAI™ para aplicaciones de inteligencia artificial y aprendizaje automático en el borde (edge), mVision™ para visión embebida, Automate™ para automatización industrial y Sentry™ para seguridad del hardware.

Como complemento a todo lo anterior, Lattice ha establecido un acuerdo con el Lattice Education Competence Center (LEC2), nuestro proveedor oficial de formación, para proporcionare una potente oferta de programas de formación que ofrecen a los desarrolladores la información práctica que necesitan para crear aplicaciones basadas en las FPGA de bajo consumo de Lattice, desde el concepto inicial hasta la implementación física. Esta formación aprovecha los conocimientos de primera mano de un experimentado equipo de desarrolladores de FPGA que han diseñado aplicaciones destinadas a una gran variedad de mercados.

Si empieza a trabajar con FPGA y desea aprender más, consulte el blog An FPGA Primer de Lattice y el seminario web “How to Get Started with FPGAs” en la comunidad element14.

Autor: Jay Aggarwal, Lattice Semi