+1 500 000 productos en oferta
6000 paquetes cada día
+300 000 clientes de 150 países
Fecha de publicación: 18-11-2025 🕒 10 lectura min
Los dispositivos FPGA han estado disponibles comercialmente durante muchos años, y a pesar de muchas ventajas, no se puede decir que sean populares en aplicaciones. Las principales razones son el alto costo de la solución y la falta de conocimiento sobre las aplicaciones. La primera de estas características afecta negativamente al diseñador u otro tomador de decisiones respecto a los componentes, mientras que la última afecta más a menudo al programador o diseñador de sistemas embebidos, que es competente en lenguajes orientados a objetos pero no entiende el lenguaje de descripción de hardware. En este texto, examinaremos características prácticas seleccionadas de los dispositivos FPGA y las compararemos con microcontroladores mucho más conocidos y aceptados. También señalaremos aplicaciones donde el uso de FPGA es indispensable y aquellas donde se vuelve "excesivo".
FPGA es el nombre de un grupo de circuitos integrados derivados de las primeras letras de las palabras Field-Programmable Gate Array. Estos dispositivos pueden ser programados después de la producción. El proceso de programación de FPGA se llama configuración, ya que implica hacer conexiones entre bloques funcionales ya preparados disponibles dentro de la estructura. A diferencia de los circuitos integrados digitales típicos (puertas, registros, flip-flops, contadores, etc.) que tienen una funcionalidad fija, los FPGAs pueden ser programados repetidamente, proporcionando flexibilidad en el diseño y prueba de diferentes aplicaciones.
Los FPGAs consisten en bloques de lógica programables y conexiones programables entre ellos. Estos dispositivos pueden contener no solo bloques digitales, sino también convertidores analógico-digitales, convertidores digital-analógicos, núcleos de procesadores (de propósito general o DSP), bloques de interfaz que permiten la cooperación con dispositivos externos, o incluso unidades de soporte de IA conectadas a través de Network-on-Chip (NoC), una red de interconexión embebida que transmite paquetes de datos entre bloques y componentes del dispositivo. Gracias a sus ricas características y conexiones flexibles, los dispositivos FPGA pueden ser configurados para realizar diversas funciones, como procesamiento de señales, control de sistemas embebidos o aceleración del procesamiento de datos.
Una de las ventajas más importantes de FPGA es la velocidad de cálculo. Estos dispositivos operan de manera diferente a un microprocesador, que obtiene y ejecuta instrucciones secuencialmente. En FPGA, el resultado del procesamiento puede aparecer "inmediatamente", retrasado solo por un pequeño tiempo de propagación. También es significativo que muchas operaciones pueden realizarse en paralelo, a diferencia de un microcontrolador, que rara vez admite la ejecución simultánea de muchas instrucciones.
Cada dispositivo FPGA consta de tres grupos de componentes:
Figura 1. Diagrama de bloques simplificado que ilustra la estructura de un dispositivo FPGA
Los dispositivos CPLD (Complex Programmable Logic Device) fueron los precursores de los dispositivos FPGA y (a pesar de tener menos funcionalidad) se ofrecen hoy para aplicaciones menos complejas. La mayoría de los principales proveedores ofrecen una amplia gama, comenzando desde las versiones más simples designadas como PAL, que contienen elementos programables y partes fijas predispuestas a realizar una cierta función lógica. Esto permite usar un solo circuito integrado en lugar de varios funtores lógicos, pero no proporciona gran flexibilidad para las aplicaciones.
En comparación con PAL, los dispositivos CPLD son más complejos. Contienen más puertas, están equipados con memoria no volátil y RAM, lo que los hace adecuados para aplicaciones más complejas. Por ejemplo, Intel® colocó muchos bloques PAL llamados macroceldas en un solo paquete de circuito unificado, donde todas las entradas están disponibles para cada celda, y cada macroceldas puede controlar cualquier salida. La estructura de conexión se almacena en memoria eléctricamente programable llamada memoria de configuración, al igual que en FPGA. Entonces, si los CPLDs tienen macroceldas, un bus de conexión programable y memoria de configuración, ¿en qué se diferencian de los FPGAs?
En comparación con los FPGAs, los CPLDs contienen significativamente menos elementos lógicos y no tienen matrices LUT (look up tables). Tienen una arquitectura más integrada, con un número mucho menor de bloques de lógica, e implementan funciones lógicas más complejas en cada bloque. Muchas conexiones entre bloques en CPLD están predefinidas en el proceso de fabricación y no pueden ser cambiadas durante la configuración del dispositivo. No se utilizan para crear aplicaciones tan complejas como los FPGAs, que pueden contener millones de funtores lógicos. Para ilustrar, un FPGA puede modelar un núcleo de procesador, mientras que un CPLD es útil para implementar un decodificador de direcciones que coopera con él.
Figura 2. Macrocelda del dispositivo de la serie MAX7000 (fuente: documentación del fabricante)
En la mayoría de los dispositivos FPGA, la configuración se almacena en memoria externa, generalmente conectada a través de una interfaz serial. Los datos de configuración se copian a la RAM del FPGA en cada encendido o reinicio completo. Esto crea un retraso al iniciar el dispositivo, mayor para los FPGAs más complejos, lo que no ocurre con los CPLDs que tienen la configuración almacenada en memoria EEPROM.
Una desventaja de FPGA en comparación con CPLD es el mayor costo de aplicación.
Tabla 1. Comparación de parámetros seleccionados de dispositivos FPGA y CPLD
| Característica/parámetro | CPLD | FPGA |
|---|---|---|
| Flexibilidad de aplicación | Baja | Alta |
| Precio | Bajo | Alto o muy alto |
| Seguridad de aplicación | Alta | Susceptible a accesos no autorizados |
| Velocidad de operación | Alta | Alta |
| Capacidad/tamaño de aplicación | Baja | Alta o muy alta |
| Aplicación de hardware | Simple | Compleja o muy compleja |
| Programación | En lenguajes de configuración de hardware o por esquemas funcionales | |
Los bloques funcionales integrados en FPGA, especialmente convertidores A/D, convertidores D/A, o módulos de interfaz para dispositivos externos, pueden parecerse al entorno de un núcleo de microcontrolador. Un FPGA puede tener RAM integrada y memoria Flash, pero esta semejanza es engañosa.
Los dispositivos FPGA modernos y avanzados son funcionalmente más complejos que microcontroladores avanzados y complejos. Por ejemplo, la conexión de bloques funcionales dentro de un FPGA puede utilizar tecnología NoC (Network on Chip), donde dentro de la estructura del circuito integrado, los paquetes de datos se transmiten utilizando buses gestionados por interruptores integrados. Esto es útil para el procesamiento y acondicionamiento de señales y para algoritmos que emplean aprendizaje automático e inteligencia artificial.
La velocidad de operación de FPGA en comparación con un microcontrolador es realmente asombrosa. Esto se debe a que un núcleo de microcontrolador típico obtiene y ejecuta instrucciones una por una. Para acelerar el procesamiento de datos, descarga algunas operaciones a unidades periféricas (por ejemplo, transmisión de datos hacia y desde la memoria a través de DMA), pero esto no cambia su ritmo operativo. En los FPGAs, dependiendo de la configuración, el FPGA generalmente transmite la respuesta inmediatamente después de recibir datos y además puede ejecutar muchos hilos simultáneamente. Recuerda, por ejemplo, que evaluar una señal no implica tomar una muestra y luego evaluarla en el siguiente paso, sino que se refiere a un cierto esquema de evaluación disponible como una red de funtores lógicos conectados, por lo que puede estar disponible con precisión hasta el tiempo de propagación del dispositivo.
Un microcontrolador contiene un núcleo de procesador, RAM, ROM, Flash y periféricos, como puertos de entrada/salida, temporizadores, convertidores A/D y D/A en un solo circuito integrado. Está diseñado para realizar tareas específicas. Si bien algunos módulos pueden ser habilitados/deshabilitados para ahorrar energía, su funcionalidad no puede ser redefinida. Está fijada durante la producción, incluyendo la operación y conexión de bloques. Un microcontrolador es algo así como una microcomputadora montada en una pequeña placa de circuito impreso dentro de un solo paquete. Cambiar su configuración requiere modificar la placa, incluyendo trazas de circuitos, colocación de componentes y sus interconexiones.
Un dispositivo FPGA está construido a partir de bloques de lógica programables conectados por interconexiones configurables. Los funtores pueden combinarse en varios bloques funcionales capaces de realizar diferentes operaciones lógicas, y los dispositivos FPGA modernos y avanzados utilizan tecnologías de conexión muy avanzadas como NoC.
Programar FPGA (y CPLD) consiste en definir conexiones lógicas y funciones utilizando lenguajes de descripción de hardware (HDL) como VHDL o Verilog. La configuración, especialmente para dispositivos más simples, también puede hacerse utilizando un esquema lógico, colocando y conectando componentes lógicos típicos. Configurar FPGA requiere conocimiento de diseño de circuitos digitales. Programar un microcontrolador utiliza lenguajes de programación estructurales u orientados a objetos. Hoy en día, la mayoría de las aplicaciones se alejan del ensamblador de bajo nivel hacia lenguajes de alto nivel como C, C++, Java y otros. La programación de microcontroladores se asemeja a la programación de "grandes" computadoras, lo que facilita a la mayoría de los programadores, que a menudo carecen de conocimiento sobre la operación y optimización de bloques lógicos. La memoria de programa del FPGA almacena la configuración, mientras que la memoria del microcontrolador almacena comandos y parámetros.
Tabla 2. Comparación de parámetros seleccionados de microcontroladores y FPGA
| Característica/parámetro | Microcontrolador | FPGA |
|---|---|---|
| Flexibilidad de aplicación | Alta | Alta |
| Precio | Bajo o medio | Alto o muy alto |
| Seguridad de aplicación | Susceptible a accesos no autorizados | Susceptible a accesos no autorizados |
| Velocidad de operación | Baja en comparación con FPGA | Alta |
| Capacidad de memoria / tamaño de aplicación | Desde muy pequeño hasta muy grande | Alta o muy alta |
| Aplicación de hardware | Simple | Compleja o muy compleja |
| Posibilidad de operación analógica | Ninguna o limitada | |
| Programación | En ensamblador o lenguajes de alto nivel | En lenguajes de configuración de hardware |
La característica más importante de los dispositivos ASIC, como indica su nombre, es que están diseñados para realizar una tarea específica. Esto podría ser, por ejemplo, recibir y decodificar una señal de radio, controlar un modelo de pantalla específico, entre otros. Cabe señalar que un ASIC no necesariamente tiene que ser programable, aunque hay disponibles comercialmente que contienen un núcleo de procesador para los cuales se pueden crear aplicaciones.
El límite entre un circuito integrado típico y un dispositivo ASIC es muy delgado. Principalmente se separan por el volumen de producción; los ASIC se producen en números más pequeños en comparación con los circuitos integrados producidos en masa. Muchos fabricantes ofrecen circuitos integrados sin indicar si son producidos en masa o ASIC.
La arquitectura de un ASIC es definida por el diseñador y no puede ser cambiada después de la fabricación. Por lo general, cuando los ASIC tienen un núcleo de procesador, no se requiere desarrollo de programas, solo establecer algunos parámetros específicos. De manera similar, el tipo de comunicación con el entorno y los formatos de datos se definen durante el diseño, y aunque es posible cambiar entre diferentes tipos, no se pueden introducir cambios.
En comparación con la configuración de FPGA, el proceso de diseño de ASIC es más complejo y costoso, posiblemente requiriendo conocimientos especializados más allá del diseño de circuitos digitales, pero el producto final está más optimizado para aplicaciones específicas, rendimiento y eficiencia energética.
Los ASIC se utilizan en aplicaciones que requieren alto rendimiento con bajo consumo de energía y dimensiones miniatura. La especialización les permite ofrecer excelentes parámetros prácticos. Además, los ASIC generalmente están listos para usar inmediatamente después de soldarse o colocarse en un zócalo y no necesitan cargar configuración desde memoria externa. También pueden tener funcionalidad mixta o ser puramente analógicos. Esto no es posible con los FPGAs, que proporcionan un rendimiento muy alto mediante el procesamiento paralelo de datos digitales, después de la conversión de analógico a digital y viceversa.
Los ASIC listos para usar pueden ser muchas veces más baratos que los FPGAs. Son mucho más caros y requieren más tiempo para diseñarse, pero estos costos se amortizan en volúmenes típicamente grandes. Esto viene a expensas de la falta de capacidad de reconfiguración, pero no siempre es necesaria. De manera similar a los microcontroladores, los FPGAs pueden ser utilizados para prototipar ASICs, pero los ASICs no pueden modelar la operación de FPGA. Por supuesto, aquí nos referimos a modelado que permite grabar una configuración útil para FPGA, no solo lograr una funcionalidad similar.
Tabla 3. Comparación de parámetros seleccionados de ASIC y FPGA
| Característica/parámetro | ASIC | FPGA |
|---|---|---|
| Flexibilidad de aplicación | Muy baja | Alta |
| Precio | Bajo o medio | Alto o muy alto |
| Seguridad de aplicación | Alta | Susceptible a accesos no autorizados |
| Velocidad de operación | Alta | Alta |
| Capacidad/tamaño de aplicación | Bajo o ninguno | Alto o muy alto |
| Aplicación de hardware | Simple | Compleja o muy compleja |
| Posibilidad de operación analógica | Depende del diseño | Ninguna o limitada |
| Programación | Capacidad limitada o no requerida | En lenguajes de configuración de hardware |
Bibliografía:
Transfer Multisort Elektronik (TME) es uno de los mayores distribuidores mundiales de componentes electrónicos, partes electrotécnicas, equipos de taller y automatización industrial. El catálogo incluye más de 1.500.000 de productos de 1.300 fabricantes líderes. Los modernos centros logísticos de TME en Łódź y Rzgów (Polonia), con una superficie total de más de 40.000 m², envían casi 6.000 paquetes diarios a clientes en más de 150 países.
TME también invierte en el desarrollo de los conocimientos y habilidades de jóvenes ingenieros y entusiastas de la electrónica a través del proyecto TME Education, y apoya a la comunidad tecnológica organizando la serie de eventos TechMasterEvent, que promueve la innovación y el intercambio de experiencias.