Inicio/Tecnologías/FPGA: Qué es, cómo funciona y diferencias con CPU y GPU
Tecnologías

FPGA: Qué es, cómo funciona y diferencias con CPU y GPU

Las FPGA son chips programables capaces de adaptar su hardware interno para tareas específicas, ofreciendo gran flexibilidad y baja latencia. Descubre cómo funcionan, sus ventajas frente a CPU y GPU, aplicaciones reales y por qué no han reemplazado a los procesadores convencionales.

2 oct 2026
17 min
FPGA: Qué es, cómo funciona y diferencias con CPU y GPU

FPGA es un chip programable cuya lógica interna se puede configurar incluso después de su fabricación. A diferencia de un procesador convencional, donde el programa se ejecuta sobre núcleos previamente diseñados, una FPGA permite modificar la propia estructura de las conexiones y crear dentro del chip un circuito digital adaptado a una tarea específica.

La sigla FPGA significa Field Programmable Gate Array, o matriz de puertas programable por el usuario. Estos chips ocupan una posición única entre los CPU universales y los ASIC especializados: pueden reconfigurarse muchas veces, pero también son capaces de ejecutar ciertas operaciones casi como hardware dedicado.

A continuación, veremos qué es una FPGA, cómo funciona, cómo se programa y por qué puede ser más eficiente que un CPU o un GPU para determinadas tareas.

¿Qué es una FPGA y para qué sirven los chips programables?

Significado de Field Programmable Gate Array

El nombre Field Programmable Gate Array describe perfectamente la principal característica de esta tecnología. Field Programmable indica que la configuración del chip puede modificarse después de su fabricación y montaje en un dispositivo, sin necesidad de crear un nuevo cristal en fábrica.

En el núcleo de una FPGA hay una gran cantidad de pequeños elementos lógicos programables. Estos se pueden configurar para realizar operaciones lógicas y conectarse entre sí para formar el circuito digital que se necesite.

De forma simplificada, una FPGA es como un gran juego de construcción electrónico. El fabricante provee bloques lógicos, memorias y líneas de conexión, y el desarrollador decide qué bloques utilizar y cómo deben interactuar.

¿En qué se diferencia una FPGA de un chip convencional?

La mayoría de los chips digitales tienen una arquitectura fija. Por ejemplo, si un procesador cuenta con cierto número de núcleos, cachés y bloques funcionales, no se pueden modificar mediante software. El programa solo le indica al hardware qué instrucciones ejecutar.

En una FPGA, el enfoque es diferente. Tras cargar la configuración, parte de los elementos lógicos pueden convertirse, por ejemplo, en un contador, otros en un controlador de interfaz y otros en un bloque de procesamiento digital de señales. Las conexiones entre ellos también se definen por el desarrollador.

Así, cambiar el diseño de la FPGA puede convertir el mismo chip en un dispositivo digital completamente distinto. Hoy puede procesar video en tiempo real y mañana, tras una nueva configuración, gestionar paquetes de red o controlar maquinaria industrial.

No se trata de mover físicamente transistores. Su disposición permanece igual; lo que cambia es la configuración de los bloques lógicos y las conexiones, haciendo que las señales eléctricas sigan caminos diferentes.

¿Para qué se usan las FPGA?

La principal ventaja de las FPGA se observa en tareas donde es necesario realizar ciertas operaciones con muy baja latencia o procesar múltiples flujos de datos en paralelo.

Por ejemplo, si un flujo de datos debe pasar por varias etapas secuenciales de procesamiento, en una FPGA se puede crear una línea de procesamiento por hardware. Mientras el primer fragmento de datos está en la segunda etapa, el siguiente ya se está procesando en la primera. Una vez lleno el pipeline, los resultados pueden aparecer en cada ciclo de reloj.

Otra característica clave es la latencia predecible. Una FPGA no necesita alternar constantemente entre procesos como un procesador convencional. Si el circuito está diseñado para una operación específica, la señal pasa por bloques hardware predefinidos.

Por eso, los chips programables se emplean donde importa el procesamiento en tiempo real, la alta velocidad de respuesta y la capacidad de modificar el dispositivo tras su fabricación. Ejemplos: equipamiento de red, telecomunicaciones, automatización industrial, sistemas de procesamiento de video y señales, instrumentación, centros de datos y aceleradores de cómputo especializados.

¿Cómo está construida una FPGA y cómo funciona?

Bloques lógicos

La arquitectura de una FPGA se basa en bloques lógicos programables. Dentro de ellos se encuentran pequeñas tablas de correspondencia (LUT), flip-flops y lógica auxiliar. Con estos elementos se construyen circuitos digitales más complejos.

Un LUT puede verse como una pequeña tabla que almacena previamente el resultado de una operación lógica para diferentes combinaciones de señales de entrada. Así, un mismo bloque puede realizar funciones AND, OR, XOR y más, según la configuración cargada.

Los flip-flops almacenan un bit de estado y permiten sincronizar el funcionamiento del circuito. Combinando LUT, flip-flops y otros elementos, el desarrollador puede crear contadores, registros, autómatas, controladores de interfaces e incluso núcleos de procesador completos.

Conexiones programables

No basta con los elementos lógicos: necesitan estar interconectados. Por eso, una parte importante de la FPGA es la red de líneas y switches programables.

Al cargar una configuración, se determina no solo la función de cada bloque lógico, sino también el camino que seguirán las señales entre ellos. Así, se forma dentro del chip el circuito digital necesario para la tarea.

En un CPU, las rutas entre los bloques están prediseñadas por el fabricante. En una FPGA, el desarrollador puede controlar mucho más a fondo la estructura de los cálculos, permitiendo que varias operaciones se realicen simultáneamente en distintas áreas sin competir por los mismos recursos.

Memoria integrada y bloques especializados

Las FPGAs modernas no solo contienen lógica universal. Suelen incluir bloques especializados para realizar operaciones comunes de forma eficiente.

Por ejemplo, la Block RAM es memoria interna rápida utilizada como búfer, almacenamiento de tablas, colas y resultados intermedios.

También pueden incluir bloques DSP para multiplicaciones, sumas y otras operaciones matemáticas rápidas, muy útiles en procesamiento de señales digitales, imágenes, datos de radio y ciertos algoritmos de aprendizaje automático.

Las FPGAs pueden tener transceptores de alta velocidad, controladores de memoria y bloques de interfaz listos para usar, por lo que el desarrollador no siempre necesita construir cada función desde cero.

¿Qué sucede al cargar la configuración?

Antes de funcionar, en la FPGA se carga un archivo especial de configuración (bitstream), que define el estado de los bloques lógicos, LUTs, conexiones y otros elementos programables.

Después, se forma la estructura hardware necesaria dentro del chip. Esta es una de las diferencias clave respecto al CPU: el procesador ejecuta instrucciones secuenciales, mientras que la FPGA, una vez configurada, ya contiene el circuito necesario para las operaciones.

Por ejemplo, si es necesario procesar varios flujos de datos independientes a la vez, en la FPGA pueden crearse pipelines hardware paralelos, que funcionarán simultáneamente usando recursos lógicos separados.

Esta arquitectura permite una latencia muy baja y predecible. Sin embargo, la eficiencia depende directamente de lo bien que el desarrollador haya diseñado el circuito y distribuido los recursos limitados del chip.

¿Cómo se programa una FPGA?

HDL en lugar de programación tradicional

Las FPGAs no se programan como un CPU. En un programa común, el desarrollador escribe una secuencia de instrucciones que el procesador ejecuta. En una FPGA, hay que describir el circuito digital que debe crearse dentro del chip.

Para ello se utilizan lenguajes de descripción de hardware (HDL), como Verilog y VHDL. Con estos lenguajes, el desarrollador define registros, operaciones lógicas, condiciones, conexiones y el comportamiento temporal del circuito.

El código HDL puede parecerse a un lenguaje de programación tradicional, pero su sentido es diferente. Varias expresiones pueden describir bloques hardware que operan en paralelo, mientras que en un programa tradicional, esas líneas se ejecutarían secuencialmente en un solo núcleo.

Por eso, programar una FPGA requiere pensar de otra manera: no solo hay que imaginar el algoritmo, sino también la estructura hardware que se generará tras la compilación.

Del diseño a la FPGA funcionando

El código HDL no se puede cargar directamente en la FPGA. Primero pasa varias fases de procesamiento.

En la síntesis, las herramientas de desarrollo convierten la descripción hardware en un conjunto de bloques lógicos, registros, memorias y otros componentes que existen físicamente en la FPGA seleccionada.

Luego, se realiza el placement (ubicación) de los elementos y el routing (rutado) de las señales. Es crucial no solo la lógica, sino también el tiempo que tarda la señal en recorrer el chip. Si el camino es demasiado largo, la operación puede no completarse en un solo ciclo de reloj. Por eso, las herramientas analizan retardos y verifican si el diseño funcionará a la frecuencia deseada.

Tras el placement y routing exitosos, se genera el bitstream de configuración, que se carga en la FPGA y determina la función de bloques lógicos, memorias y conexiones.

En resumen, el proceso es: el desarrollador describe la lógica hardware, las herramientas sintetizan el circuito, lo ubican en la FPGA, rutean las señales y generan la configuración lista para cargar.

¿Se puede programar una FPGA en C u otros lenguajes?

El desarrollo en FPGA no se limita a Verilog y VHDL. Existen tecnologías de High-Level Synthesis (HLS) que permiten describir algoritmos en lenguajes de alto nivel, como C o C++, y luego transformarlos automáticamente en hardware.

Esto reduce la barrera de entrada y acelera el desarrollo de ciertos aceleradores, sobre todo para algoritmos matemáticos, procesamiento de imágenes o flujos de datos.

Sin embargo, HLS no convierte la FPGA en un procesador convencional. El código fuente sigue transformándose en una estructura hardware, que debe caber en los recursos disponibles y cumplir con los requisitos de latencia y frecuencia.

Además, la síntesis automática no siempre produce el circuito más eficiente. Para el máximo rendimiento, el desarrollador debe considerar los detalles de la arquitectura FPGA: ancho de buses, cantidad de memoria, número de bloques DSP, profundidad de pipelines y paralelismo.

Por eso, programar una FPGA está a medio camino entre el desarrollo de software y el diseño de circuitos electrónicos. No basta con escribir un algoritmo correcto: hay que entender en qué se convertirá a nivel de hardware.

FPGA vs CPU vs GPU: ¿cuál es la diferencia fundamental?

CPU, GPU y FPGA pueden ejecutar los mismos cálculos, pero lo hacen de maneras muy distintas. La diferencia clave está en cuán rígida es la arquitectura del chip y cómo se organizan los cálculos internamente.

¿Cómo ejecuta tareas un CPU?

El CPU es un procesador universal, diseñado para ejecutar todo tipo de programas. Sus núcleos leen instrucciones, las decodifican y las envían a bloques de ejecución específicos.

Los procesadores modernos pueden ejecutar varias instrucciones a la vez, usar varios núcleos y manejar múltiples hilos. Pero la estructura interna del CPU está definida de antemano por el fabricante. El desarrollador puede cambiar el software, pero no puede rediseñar los bloques de ejecución para un algoritmo concreto.

La gran ventaja del CPU es su versatilidad. Un mismo procesador puede ejecutar el sistema operativo, un navegador, un juego, un compresor o un servidor. Por eso, el CPU sigue siendo la base de la mayoría de los sistemas computacionales.

Pero esa versatilidad exige lógica de control compleja, cachés, mecanismos de predicción de saltos y más. Si hay que ejecutar miles de millones de veces una operación especializada, parte de los recursos del CPU pueden usarse de forma menos eficiente.

La evolución de los sistemas de cómputo va cada vez más hacia la división de tareas entre diferentes bloques hardware. Puedes leer más sobre esta transición en el artículo Por qué el futuro de la computación está en los procesadores especializados.

¿Cómo funciona un GPU?

El GPU también tiene una arquitectura fija, pero orientada a otro tipo de carga. En vez de pocos núcleos potentes, una tarjeta gráfica contiene muchos bloques de cálculo, capaces de ejecutar operaciones similares en paralelo sobre grandes volúmenes de datos.

Este enfoque surgió de las necesidades del procesamiento gráfico, donde se requieren millones de cálculos similares para vértices, píxeles y texturas. Luego se descubrió que este paralelismo masivo también era útil para cálculos científicos y aprendizaje automático.

Si una operación debe aplicarse a millones de elementos, el GPU suele ser mucho más eficiente que el CPU. Pero el algoritmo debe poder dividirse en muchos hilos paralelos.

Aun así, el desarrollador utiliza la arquitectura prediseñada del chip gráfico. El software distribuye los cálculos entre los bloques existentes, pero no puede modificar la organización física del hardware.

¿Qué hace diferente una FPGA?

La FPGA permite un enfoque distinto. En vez de ejecutar un programa sobre núcleos prediseñados, el desarrollador crea su propia estructura hardware usando los bloques lógicos disponibles.

Por ejemplo, si un algoritmo tiene varias etapas secuenciales (recibir datos, verificarlos, multiplicar, transformar el resultado y enviarlo), el CPU ejecutará instrucciones correspondientes, el GPU podrá procesar muchos conjuntos en paralelo, pero la FPGA puede crear un bloque hardware para cada etapa y conectarlos en pipeline. Así, diferentes partes de la FPGA procesan simultáneamente distintas porciones de datos, sin necesidad de decodificar instrucciones.

Además, es posible crear varias copias de un mismo circuito si hay recursos suficientes, por lo que el paralelismo en la FPGA lo define la estructura creada, no el número de núcleos preexistentes.

FPGA vs CPU vs GPU

CaracterísticaCPUGPUFPGA
ArquitecturaFijaFijaReconfigurable
Principio básicoEjecución secuencial de instruccionesParalelismo masivoCircuito hardware para la tarea
VersatilidadMuy altaAltaDepende de la configuración
ParalelismoLimitado por núcleos/hilosMuy altoDefinido por el diseño
LatenciaDepende del software y sistemaEficiente con grandes lotes de datosPuede ser muy baja y predecible
DesarrolloRelativamente sencilloRequiere programación paralelaRequiere diseño hardware
Eficiencia energética en tareas especializadasMediaAltaPuede ser muy alta

Esto no significa que la FPGA siempre sea más rápida que el CPU o el GPU. El resultado depende de la tarea. Si el algoritmo cambia constantemente o es secuencial y complejo, el CPU puede ser más práctico. Para grandes operaciones matriciales y paralelismo masivo, a menudo es mejor el GPU.

La FPGA es especialmente interesante cuando el procesamiento puede representarse como un pipeline hardware especializado y es fundamental la mínima latencia. Por ello, estos chips ocupan un nicho particular entre procesadores universales y chips totalmente dedicados.

¿Dónde se usan las FPGA y por qué no han reemplazado a los procesadores?

Telecomunicaciones y equipamiento de red

Las FPGA son ideales para sistemas donde los datos llegan en flujo constante y deben procesarse con latencia mínima. Por eso, estos chips se usan mucho en equipamiento de red y telecomunicaciones.

Dentro de una FPGA se pueden implementar bloques hardware para procesamiento de paquetes, filtrado de tráfico, codificación y decodificación de señales, y trabajar con interfaces de alta velocidad. Varias etapas pueden operar en paralelo, sin requerir la intervención constante del procesador central.

Un aspecto clave es que la lógica de este tipo de dispositivos se puede actualizar tras su lanzamiento. Si cambia el protocolo o surge la necesidad de añadir funciones, en muchos casos basta con cargar una nueva configuración en vez de sustituir la plataforma hardware completa.

Industria, automoción y electrónica

Otro gran campo de aplicación de las FPGA son los sistemas en tiempo real. En maquinaria industrial, el chip puede leer datos de sensores, controlar actuadores y procesar señales digitales simultáneamente.

La latencia predecible suele ser más importante que la máxima potencia de cálculo. Si un sistema debe reaccionar en un periodo bien definido, el circuito hardware de la FPGA ayuda a evitar demoras debidas al sistema operativo o al planificador de tareas.

En equipos de medición, sistemas de video, radares, electrónica automotriz y dispositivos de procesamiento de señales se aplica un enfoque similar. Un área de la FPGA puede recibir datos, otra filtrarlos y otra realizar operaciones matemáticas, todo en paralelo.

Centros de datos e inteligencia artificial

Las FPGA también se encuentran en centros de datos, donde funcionan como aceleradores especializados. El procesador central puede gestionar la aplicación y delegar ciertas operaciones repetitivas a la lógica programable.

Por ejemplo, una FPGA puede configurarse para procesar flujos de red, comprimir datos, cifrar o ejecutar partes del inferido de redes neuronales. Así se descarga al CPU y se obtiene un pipeline hardware sin necesidad de diseñar un chip dedicado desde cero.

Por eso, los sistemas modernos se construyen cada vez más alrededor de varios tipos de aceleradores y no solo de un procesador universal. Puedes conocer más sobre este principio en el artículo Sistemas informáticos híbridos: cómo CPU, GPU, NPU y FPGA forman una arquitectura unificada.

No obstante, la FPGA no siempre es la mejor opción para inteligencia artificial. El GPU es mucho más sencillo de programar y cuenta con un ecosistema avanzado para entrenar y ejecutar redes neuronales, mientras que los aceleradores AI dedicados pueden superar a la FPGA en eficiencia en tareas específicas.

Ventajas de la FPGA

La principal ventaja de la FPGA es la combinación de especialización y reprogramabilidad. El desarrollador puede crear un circuito hardware para una tarea concreta y luego modificarlo sin fabricar un nuevo chip.

Esto permite lograr una latencia extremadamente baja, ya que los cálculos siguen una ruta hardware predefinida. Las FPGA también son ideales para procesamiento por flujo: los datos pueden pasar por decenas de etapas en pipeline, con cada etapa trabajando simultáneamente.

Otra ventaja importante es el paralelismo. En vez de alternar un núcleo entre tareas, se pueden crear varios bloques hardware independientes y ejecutar operaciones en paralelo, mientras haya recursos lógicos suficientes.

En escenarios especializados, esto ofrece una excelente relación entre rendimiento y consumo energético, especialmente cuando no es necesario mantener toda la complejidad de un CPU universal.

Desventajas de la FPGA

La principal desventaja de la FPGA es la complejidad del desarrollo. No basta con conocer el algoritmo; se deben considerar los retardos de señal, gestión de memoria, sincronización, ancho de buses y cantidad de recursos hardware disponibles.

Un error en un programa común suele corregirse modificando unas líneas de código. En FPGA, un cambio puede afectar la ubicación de elementos y las rutas de señales por todo el chip, exigiendo una nueva síntesis y verificación.

Además, la FPGA es menos eficiente que un chip totalmente especializado. Si la tarea está completamente definida y el dispositivo se producirá en masa, conviene desarrollar un ASIC (circuito integrado específico), dedicado al algoritmo.

Puedes leer más sobre este enfoque en el artículo ASIC: por qué son más rápidos y eficientes que los chips convencionales.

Un ASIC no tiene la red programable ni los recursos de reconfiguración de una FPGA, por lo que puede ser más compacto, rápido y económico. Pero su arquitectura no se puede cambiar tras la fabricación y el desarrollo requiere mucha más inversión.

De ahí que la FPGA ocupe una posición intermedia: es más flexible que un ASIC y permite una adaptación más profunda que un CPU o GPU, pero esa flexibilidad implica mayor coste, dificultad de desarrollo y un ecosistema software menos habitual.

Conclusión

La FPGA se diferencia del CPU y el GPU en que el desarrollador configura no solo el algoritmo, sino también la estructura hardware de los cálculos. Los bloques lógicos, memoria y conexiones del chip pueden combinarse en un circuito especializado para procesar datos en paralelo y con latencia predecible.

El CPU sigue siendo la mejor opción para programas generales y lógica secuencial compleja, y el GPU para cálculos masivos en paralelo. La FPGA tiene sentido cuando se necesita un pipeline hardware para una tarea concreta, velocidad de reacción alta o la posibilidad de modificar el dispositivo sin fabricar un chip nuevo.

No obstante, la FPGA no es un reemplazo universal de procesadores y tarjetas gráficas. Su desarrollo es más complejo y la eficiencia depende mucho del tipo de carga. Por ello, en la práctica, los chips programables suelen trabajar junto con CPU, GPU y otros aceleradores, realizando la parte de los cálculos para la que su arquitectura resulta más eficiente.

Etiquetas:

fpga
hardware programable
procesadores
diferencias cpu gpu
aplicaciones fpga
paralelismo
latencia baja
desarrollo hardware

Artículos Similares