+1 500 000 productos en oferta

6000 paquetes cada día

+300 000 clientes de 150 países

Quick Buy Favoritos
Carrito

Circuitos FPGA digitales programables

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.

Comprar dispositivos FPGA

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:

  1. Los bloques básicos de cada FPGA son bloques de lógica. Cada uno contiene un número de funtores lógicos básicos y registros. Los funtores lógicos realizan operaciones lógicas, mientras que los registros almacenan datos.
  2. Los bloques de lógica están conectados por un bus de conexión. Sin embargo, este término no debe confundirse con, por ejemplo, un bus de datos en una placa base de computadora. A diferencia de las trazas de cobre con topología fija, estas son conexiones programables de manera flexible entre bloques que permiten conectarlos casi arbitrariamente.
  3. Toda la configuración se almacena en memoria de configuración no volátil. En la mayoría de los FPGAs, esta es memoria Flash/EEPROM externa que puede ser borrada y escrita repetidamente. Algunos dispositivos FPGA pueden tener memoria de configuración integrada, pero esto es menos común. El FPGA carga la configuración al encenderse o tras un reinicio completo. La disponibilidad de memoria de configuración permite una fácil construcción y prueba de prototipos y, en el caso de un dispositivo terminado y operativo, una fácil actualización o mejora de la funcionalidad. Esto es especialmente valioso en hardware producido en pequeñas series, donde el uso de FPGA es significativamente más rentable que diseñar y producir circuitos integrados dedicados (ASIC).

Figura 1. Diagrama de bloques simplificado que ilustra la estructura de un dispositivo FPGA

Diferencias entre FPGA y CPLD

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.

Comprar dispositivos CPLD

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.

  • FPGA puede requerir un sistema de energía especial y eficiente, en el que es necesario controlar la secuencia de habilitación de voltajes individuales y reaccionar de manera específica en caso de cualquier falla.
  • La configuración almacenada en memoria externa es susceptible a accesos no autorizados, lo que puede ser importante para la seguridad de la aplicación.
  • Las aplicaciones de FPGA que requieren significativamente más componentes externos son mucho más caras.
  • El alto precio de los FPGAs prácticamente elimina dispositivos más complejos en aplicaciones populares. Los CPLDs no son tan costosos y pueden ser utilizados con éxito en dispositivos electrónicos populares, reemplazando varios o incluso una docena de dispositivos lógicos. Sin embargo, a pesar de muchas ventajas, cuando se necesita implementar una función lógica, muchos diseñadores aún elegirán el microcontrolador más conocido...

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

Diferencias entre FPGA y microcontrolador

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

Diferencias entre FPGA y ASIC

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:

  • Control Engineering Poland – FPGA en la automatización - www.controlengineering.pl/uklady-fpga-w-automatyce-nowe-mozliwosci-i-zastosowania
  • Lattice Semiconductor – FPGA en la Industria 4.0 - www.latticesemi.com/en/Blog/2022/12/20/23/00/2022-How-FPGAs-Can-Make-Industry-4-Work
  • Wikipedia – Cuarta revolución industrial - www.pl.wikipedia.org/wiki/Czwarta_rewolucja_przemysłowa
  • Diseño de sistemas embebidos en dispositivos FPGA - www.helion.pl/pobierz-fragment/projektowanie-systemow-wbudowanych-w-ukladach-fpga-valery-salauyou-adam-klimowicz,e_321i/pdf
  • El poder de la memoria – Elektronika Praktyczna - www.ep.com.pl/files//2012.pdf
  • Wikipedia – Matriz de puertas programable en campo (FPGA) - www.pl.wikipedia.org/wiki/Bezpośrednio_programowalna_macierz_bramek
  • FPGA-Based System Design – Wayne Wolf - www.eeeforum.weebly.com/uploads/1/0/2/5/10254481/fpga1.pdf
  • «Real-Time Image Processing on FPGA» – SpringerLink - www.link.springer.com/chapter/10.1007/978-3-642-24106-2_18

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.

rightColumnPicture rightColumnPicture

LEA TAMBIÉN