Matrices de puertas programables de campo (FPGA) frente a microcontroladores: ¿cuál es la diferencia?
3 de junio de 2024
6 minutos de lectura

Las matrices de puertas programables en campo (FPGA) y las unidades de microcontrolador (MCU) son dos tipos de circuitos integrados (CI) comúnmente comparados que se utilizan normalmente en sistemas integrados y diseño digital. Tanto las FPGA como los microcontroladores pueden considerarse "pequeños ordenadores" que pueden integrarse en dispositivos y sistemas más grandes.

Como procesadores, la principal diferencia entre las FPGA y los microcontroladores se reduce a la capacidad de programación y procesamiento. Aunque las FPGA son más potentes y versátiles, también son más caras. Los microcontroladores son menos personalizables, pero también menos costosos. En muchas aplicaciones, los microcontroladores son excepcionalmente capaces y rentables. Sin embargo, para ciertas aplicaciones exigentes o en desarrollo, como las que requieren un procesamiento paralelo, las FPGA son necesarias.

A diferencia de los microcontroladores, las FPGA ofrecen reprogramación a nivel de hardware. Su diseño único permite a los usuarios configurar y reconfigurar la arquitectura del chip en función de la tarea. El diseño FPGA también puede manejar entradas paralelas simultáneamente, mientras que los microcontroladores solo pueden leer una línea de código a la vez. Una FPGA puede programarse para realizar las funciones de un microcontrolador; sin embargo, un microcontrolador no se puede reprogramar para que funcione como una FPGA.

¿Qué es una matriz de puerta programable en campo (FPGA)?

Introducidas por primera vez por el fabricante Xilinx en 1985, las FPGA son muy valoradas por su versatilidad y potencia de procesamiento. Como resultado, son la opción preferida en muchas aplicaciones de computación de alto rendimiento (HPC), procesamiento de señales digitales (DSP) y creación de prototipos.

A diferencia de los circuitos integrados tradicionales de aplicación específica (ASIC), las FPGA están diseñados para configurarse (y reconfigurarse) "en el campo" después de que se complete el proceso de fabricación inicial. Aunque la personalización es la oferta de mayor valor de las FPGA, debe tenerse en cuenta que las FPGA no solo permiten la programabilidad, sino que la requieren. A diferencia de los ASIC, las FPGA no son soluciones "listas para usar" y deben configurarse antes de su uso con un lenguaje de descripción de hardware (HDL), como verilog o VHDL. La programación de una FPGA requiere conocimientos especializados, lo que puede aumentar los costes y retrasar las implementaciones. Aunque algunas FPGA ofrecen memoria no volátil que puede retener instrucciones de programación cuando están apagadas, por lo general, las FPGA deben configurarse al inicio.

Beneficios de FPGA

A pesar de estos desafíos, las FPGA siguen siendo útiles en aplicaciones que requieren alto rendimiento, baja latencia y flexibilidad en tiempo real. Las FPGA son especialmente adecuados para aplicaciones que requieren lo siguiente:

  • Creación rápida de prototipos: las FPGA se pueden configurar rápidamente en múltiples tipos de circuitos digitales personalizados, lo que permite implementaciones, evaluaciones y modificaciones aceleradas sin la necesidad de procesos de fabricación costosos y lentos. 
  • Aceleración de hardware: las aplicaciones más exigentes se benefician de las capacidades de procesamiento en paralelo de la FPGA. Las FPGA pueden ofrecer mejoras de rendimiento significativas para tareas computacionalmente intensivas, como procesamiento de señales, criptografía y algoritmos de machine learning.
  • Personalización: las FPGA son una solución de hardware flexible que se puede optimizar fácilmente para cumplir con los requisitos específicos del proyecto. 
  • Longevidad: las diseños basados en FPGA pueden beneficiarse de una vida útil de hardware más larga, ya que las FPGA se pueden actualizar y reconfigurar para satisfacer las demandas cambiantes del proyecto y los estándares tecnológicos. 

Componentes FPGA

Para lograr la reconfigurabilidad, las FPGA se componen de una matriz de bloques lógicos programables interconectados por un tejido de enrutamiento programable. Los principales componentes de una FPGA típica son los siguientes:

  • Bloques lógicos configurables (CLB): los CLB proporcionan funcionalidad informática y pueden contener un pequeño número de elementos lógicos primitivos, como puertas lógicas, pequeñas tablas de búsqueda (LUT), multiplexores y flip-flops para el almacenamiento de datos. 
  • Interconexiones programables: compuestas por segmentos de cables unidos por conmutadores programables eléctricamente, estos enlaces proporcionan vías de enrutamiento entre los diversos recursos FPGA, lo que permite diferentes configuraciones y la creación de circuitos digitales personalizados. 
  • Bloques de E/S (IOB): la interfaz entre una FPGA y otros dispositivos externos se habilita mediante bloques de entrada/salida (E/S), que permiten a la FPGA recibir datos de periféricos y controlarlos. 

Casos de uso de FPGA

Versátiles por naturaleza, las FPGA son comunes en una amplia variedad de industrias y aplicaciones:

  • Aeroespacial y defensa: al ofrecer un procesamiento paralelo de alta velocidad valioso para la adquisición de datos, las FPGA son la opción preferida para los sistemas de radar, el procesamiento de imágenes y las comunicaciones seguras. 
  • Sistemas de control industrial (ICS): los sistemas de control industrial utilizados para monitorizar la infraestructura, como las redes eléctricas, las refinerías de petróleo y las plantas de tratamiento de agua, utilizan FPGA que se pueden optimizar fácilmente para satisfacer las necesidades únicas de diversas industrias. En estos sectores cruciales, las FPGA pueden utilizarse para implementar varias automatizaciones y funciones de cifrado basadas en hardware para una ciberseguridad eficiente.
  • Desarrollo de ASIC: las FPGA se utilizan a menudo en la creación de prototipos de nuevos chips ASIC. 
  • Automoción: el procesamiento avanzado de señales también hace que las FPGA sean idóneas para aplicaciones de automoción, como sistemas avanzados de asistencia al conductor (ADAS), fusión de sensores y GPS.
  • Centros de datos: las FPGA añaden valor a los centros de datos al optimizar los servidores, la infraestructura de redes y almacenamiento con gran ancho de banda y baja latencia.

Características de FPGA

  • Núcleo de procesamiento: bloques lógicos configurables
  • Memoria: interfaz de memoria externa 
  • Periféricos: bloques de E/S configurables
  • Programación: lenguaje de descripción de hardware (VHDL, Verilog) 
  • Reconfigurabilidad: lógica altamente reconfigurable y reprogramable
¿Qué es un microcontrolador?

Los microcontroladores son un tipo de ASIC compacto y preparado que contiene un núcleo (o núcleos) de procesador, memoria (RAM) y memoria de sólo lectura programable y borrable (EPROM) para almacenar los programas personalizados que se ejecutan en el microcontrolador. Conocidos como soluciones "system-on-a-chip (SoC)", los microcontroladores son básicamente pequeños ordenadores integrados en una única pieza de hardware que puede utilizarse de forma independiente o en sistemas embebidos más grandes.

Los microcontroladores de consumo, como el Arduino Starter Kit o el PIC de Microchip Technology, pueden configurarse utilizando lenguaje ensamblador o lenguajes de programación comunes (C, C++), y son los preferidos por aficionados y educadores por su accesibilidad económica. Los microcontroladores también son capaces de manejar tareas más complejas y cruciales y son comunes en aplicaciones industriales. Sin embargo, la disminución de la potencia de procesamiento y los recursos de memoria puede limitar la eficacia del microcontrolador en aplicaciones más exigentes.

Beneficios del microcontrolador

A pesar de sus limitaciones, los microcontroladores ofrecen muchas ventajas, entre las que se incluyen las siguientes:

  • Diseño compacto: los microcontroladores integran todos los componentes necesarios en un único chip pequeño que ofrece una huella pequeña valiosa en aplicaciones donde el tamaño y el peso son una prioridad.
  • Eficiencia energética: diseñados para funcionar con baja potencia, los microcontroladores son muy adecuados para dispositivos alimentados por batería y otras aplicaciones en las que el consumo de energía es un problema.
  • Rentabilidad: los microcontroladores ofrecen una solución SoC completa que reduce la necesidad de periféricos y componentes adicionales. Los microcontroladores de propósito general y bajo coste pueden reducir en gran medida los gastos generales del proyecto.
  • Flexibilidad: aunque no son tan versátiles como las FPGA, los microcontroladores se pueden programar para una amplia gama de aplicaciones diferentes. Aunque no se pueden reprogramar a nivel de hardware, los microcontroladores se pueden reconfigurar, actualizar y optimizar fácilmente a nivel de software.

Componentes del microcontrolador

Cuando la reprogramabilidad no es una prioridad, los microcontroladores autónomos ofrecen una alternativa compacta y capaz. A continuación se encuentran los componentes clave de un microcontrolador:

  • Unidad central de procesamiento (CPU): coloquialmente conocida como el “cerebro”, la unidad central de procesamiento (CPU) es el componente central responsable de ejecutar instrucciones y controlar las operaciones.
  • Memoria: los microcontroladores contienen memoria volátil (RAM), que almacena datos temporales que pueden perderse si el sistema se queda sin energía, y memoria no volátil (ROM, FLASH) para almacenar el código de programación del microcontrolador.
  • Periféricos: en función de la aplicación prevista, un microcontrolador puede contener diversos componentes periféricos, como interfaces de entrada/salida (E/S) como temporizadores, contadores, convertidores analógico-digitales (ADC) y protocolos de comunicación (UART, SPI, I2C).

Casos de uso de microcontroladores

A diferencia de los FPGA, los microcontroladores pequeños, asequibles y no volátiles son omnipresentes en la electrónica moderna y se implementan con frecuencia para tareas específicas, entre las que se incluyen las siguientes:

  • Sistemas automotrices: los microcontroladores se utilizan en el control del motor, la implementación de bolsas de aire y los sistemas de información y entretenimiento en el automóvil.
  • Electrónica de consumo: los microcontroladores son cruciales para los teléfonos inteligentes, televisores inteligentes y otros electrodomésticos, especialmente los dispositivos que se integran en la Internet de las cosas (IoT).
  • Automatización industrial: los microcontroladores son idóneos para aplicaciones industriales, como el control de maquinaria, la supervisión de sistemas y la automatización de procesos.
  • Dispositivos médicos: los microcontroladores a menudo se implementan en dispositivos que salvan vidas, como Pacemaker, monitores de glucosa en sangre y herramientas de diagnóstico.

Características del microcontrolador

  • Núcleo de procesamiento: CPU fija
  • Memoria: RAM y ROM/Flash integradas 
  • Periféricos: interfaces de E/S integradas para
  • Programación: Software (C, Assembly) 
  • Reconfigurabilidad: limitada, actualizaciones de firmware
Principales diferencias entre las FPGA y los microcontroladores

Al comparar FPGA y microcontroladores, es importante tener en cuenta una serie de diferencias clave, incluida la arquitectura del hardware, las capacidades de procesamiento, el consumo de energía y los requisitos de los desarrolladores.

  • Estructura de hardware
    • FPGA: bloques lógicos programables e interconexiones altamente configurables, que permiten circuitos digitales reprogramables y personalizados.
    • Microcontrolador: arquitectura fija con componentes predefinidos (CPU, memoria, periféricos) integrados en un único chip.
  • Capacidades de procesamiento
    • FPGA: el procesamiento paralelo avanzado permite múltiples operaciones simultáneas.
    • Microcontrolador: diseñados para el procesamiento secuencial, los microcontroladores sólo pueden ejecutar instrucciones de una en una.
  • Consumo de energía
    • FPGA: suele consumir más energía que los microcontroladores.
    • Microcontrolador: optimizado para un bajo consumo de energía, adecuado para aplicaciones alimentadas por batería.
  • Programación
    • FPGA: requiere conocimientos especializados en lenguajes de descripción de hardware para configurar y depurar.
    • Microcontrolador: puede programarse utilizando lenguajes de desarrollo de software como Javascript, Python, C, C++ y lenguajes ensambladores.
  • Coste
    • FPGA: ofrece mayor potencia, pero requiere habilidades avanzadas, el hardware FPGA suele ser más caro, con el coste adicional de un mayor consumo de energía y talento de programador especializado.
    • Microcontrolador: por lo general, es una solución más rentable con disponibilidad inmediata, menor consumo de energía y compatibilidad con lenguajes de programación más accesibles.
  • Versatilidad
    • FPGA: la FPGA es mucho más flexible que el microcontrolador, lo que permite la personalización a nivel de hardware.
    • Microcontrolador: aunque son adecuados para una amplia gama de aplicaciones, los microcontroladores sólo ofrecen una personalización superficial en comparación con las FPGA.
Explore las soluciones de infraestructura de IBM

Tanto si busca un procesador FPGA versátil y potente como un microcontrolador compacto y rentable, considere cómo IBM puede ayudarle a llevar su negocio al siguiente nivel con soluciones de infraestructura de vanguardia. El nuevo IBM FlashSystem 5300 proporciona un rendimiento mejorado y ciberresiliencia. El nuevo IBM Storage Assurance simplifica la propiedad del almacenamiento y le ayuda a abordar los desafíos del ciclo de vida de TI.

 
Autor
Josh Schneider Senior Writer, IBM Blog