
¿Alguna vez has querido dibujar tu propio procesador? ¿O eliminar de un plumazo el cuello de botella del PCIe en un radar meteorológico? Las FPGA (Field Programmable Gate Arrays) son la tecnología que lo hace posible: chips que puedes reconfigurar desde un simple multiplexor hasta un procesador Intel 8086 o un sistema de demodulación SDR. En este post te cuento cómo evolucionaron los circuitos lógicos, por qué una FPGA no es un Arduino y, lo más importante, cómo en LADETEC hemos usado un soft core dentro de la propia FPGA para LAMULA™ DRx-DSP. Prepárate para un viaje que va desde las compuertas lógicas hasta la donación de la Met Office británica. No es ciencia ficción: es hardware libre en estado puro.
Ya hemos hablado de Arduino, de la ESP32-S3, de la ZimaBlade… incluso repasamos la evolución de los procesadores de señal en los radares cubanos (Seis generaciones de ingenio: La evolución de los procesadores de señal en los radares cubanos). Pues bien, hoy toca hablar de la madre de todas ellas: las FPGA. Si los microcontroladores son como una navaja suiza (viene con unas herramientas fijas), la FPGA es un cajón gigante de piezas de Lego™ electrónicas. Con ella no programas un chip: dibujas el chip que te da la gana.
No, esto no es una excentricidad de laboratorio. Es la base del LAMULATM DRx-DSP (nuestro juguete favorito de radio definido por software) y está cambiando el mundo del hardware libre a una velocidad de vértigo.
Evolución de los circuitos lógicos
Para entender qué es una FPGA hay que comenzar un poquito atrás.
Un circuito lógico es una estructura que sigue las leyes de la lógica y se utiliza para representar proposiciones complejas mediante señales eléctricas. Básicamente, es un circuito que maneja información en forma de «1» y «0», donde «1» representa un nivel alto de voltaje y «0» un nivel bajo. Estos niveles lógicos son la base de todo bicho electrónico que se precie.
Existen dos grandes familias de circuitos lógicos, y aquí viene lo interesante: cómo han ido evolucionando.
Circuitos combinacionales: los rápidos sin memoria
Son aquellos en los que la salida depende únicamente de las entradas actuales. No tienen memoria, así que no les importa lo que pasó hace un nanosegundo. Ejemplos clásicos: compuertas lógicas (AND, OR, NAND, NOR, XOR, XNOR…), codificadores, decodificadores, multiplexores y demultiplexores.
Su evolución: Al principio se hacían con interruptores y relés (lentos y enormes). Luego llegaron los transistores discretos, después los circuitos integrados con decenas de puertas (SSI, MSI) y finalmente los chips que empaquetaban cientos de ellas. Pero todos seguían siendo fijos: una vez diseñados, no podías cambiar su función. Eso llevó a los circuitos secuenciales.
Circuitos secuenciales: los que aprenden del pasado
A diferencia de los combinacionales, los secuenciales tienen memoria. Su salida depende de las entradas actuales y del estado anterior. Eso les permite hacer cosas como contar, almacenar datos o sincronizarse con un reloj. Ejemplos: los FLIP-FLOPS (el corazón de la memoria), los contadores y los registros.
Su evolución: Al principio, los secuenciales se construían conectando combinacionales con realimentación. Pero eran propensos a fallos. La solución llegó con los circuitos síncronos, donde un reloj global marca el ritmo. De ahí nacieron los microprocesadores (que no dejan de ser secuenciales complejos). El problema: seguían siendo fijos en silicio. Para cambiar su comportamiento había que fabricar otro chip.
El salto definitivo: los programables
Ahí es donde aparecen los PLD (dispositivos lógicos programables), como las PAL y GAL. Por primera vez, podías «quemar» dentro del chip las conexiones entre puertas lógicas en lugar de soldar cablecitos entre ellas o hacer caminitos en el circuito impreso. Luego llegaron los CPLD (más complejos) y finalmente las FPGA, que son como un enorme almacén de bloques combinacionales y secuenciales que puedes interconectar a voluntad. Y no solo una vez: puedes reconfigurarlas miles de veces, incluso mientras funcionan.
Combinacionales vs. Secuenciales: el duelo
Ya hemos visto que hay dos familias básicas de circuitos lógicos. Pero, ¿cuál es la diferencia práctica? Vamos a ponerlos cara a cara.
| Característica | Circuitos Combinacionales | Circuitos Secuenciales |
|---|---|---|
| Memoria | No tienen. Olvidan todo al instante. | Sí, tienen. Recuerdan el estado anterior. |
| Salida | Depende solo de las entradas actuales. | Depende de las entradas actuales + el estado anterior. |
| Velocidad | Muy rápidos (la señal atraviesa puertas lógicas en nanosegundos). | Más lentos (necesitan un reloj que sincronice los pasos). |
| Ejemplos | Compuertas AND, OR, multiplexores, sumadores. | Flip-flops, contadores, registros, microprocesadores. |
| Analogía | Una calculadora básica: metes dos números, te da la suma. No recuerda la suma anterior. | Un cuentakilómetros: suma los kilómetros nuevos a los que ya llevaba. |
En resumen: los combinacionales son como una autopista sin semáforos: la señal entra y sale a toda leche. Los secuenciales son como una cadena de montaje: cada paso necesita un “pulso de reloj” para avanzar, pero pueden hacer cosas mucho más complejas porque recuerdan lo que hicieron antes.
Durante décadas, los ingenieros construían sistemas mezclando ambos tipos en una placa, con cientos de chips soldados. Si querías cambiar algo, tenías que rediseñar la placa y volver a soldar. Un proceso muy engorroso.
¿Qué es una FPGA? La caja de herramientas definitiva
Una FPGA (Field Programmable Gate Array) viene a ser un chip que contiene miles o millones de pequeñas células lógicas, cada una de las cuales puede funcionar como una compuerta combinacional o como un elemento secuencial (un flip-flop). Y lo mejor: todas ellas se pueden conectar entre sí mediante una especie de “matriz de interruptores” que tú programas.
- ¿Quieres un circuito puramente combinacional, como un multiplexor gigante? Lo configuras.
- ¿Necesitas un contador secuencial? Pues también lo montas.
- ¿O quizás una mezcla: un filtro digital que recibe datos, los procesa con lógica combinacional rápida y luego los almacena en registros? La FPGA te lo permite.
Y lo más alucinante: no estás limitado a una única función. Si te equivocas o quieres probar algo distinto, simplemente vuelves a programar la FPGA. No tienes que cambiar ni un solo cable ni desoldar nada. Es como si el chip fuera un barro electrónico que puedes moldear una y otra vez. Lo más extraordinario es que puedes cambiar totalmente la configuración de ese hardware de un pulso de reloj al próximo.
Por eso se dice que la FPGA está entre el hardware fijo (un chip ASIC) y el software (un procesador que ejecuta instrucciones). Tiene lo mejor de ambos mundos: la velocidad y paralelismo del hardware combinacional.
El duelo de titanes en el Mundo del Open Hardware: FPGA vs. Microcontrolador (el Arduino que ya conoces)
OK, ya sabemos qué es una FPGA: un chip lleno de puertas lógicas que podemos conectar a nuestro antojo para crear desde un simple multiplexor hasta un circuito combinacional entero. Pero seguro que mi inquieto lector se estará preguntando: ¿y esto no es lo mismo que hace un Arduino? Pues no, estimado lector. Son primos hermanos, pero con caracteres muy distintos.
Si ya has trasteado con Arduino, la diferencia la vas a entender en un 2 x 3. Aquí la tienes clara y visual:
| Característica | Arduino (Microcontrolador) | FPGA |
|---|---|---|
| Naturaleza | Ejecuta software (instrucciones en secuencia). | Implementa hardware (circuitos en paralelo). |
| Programación | Lenguajes de alto nivel (C++, Python). | Lenguajes de descripción de hardware (VHDL, Verilog) o diagramas de bloques. |
| Ejecución | Secuencial. Una instrucción tras otra. | Masivamente paralela. Miles de operaciones a la vez. |
| Flexibilidad | La funcionalidad está fijada por el hardware de la placa. | La funcionalidad se crea y se recrea a nivel de circuito. |
| Ideal para… | Control, lectura de sensores, proyectos interactivos. | Procesado de señales en tiempo real, criptografía, emulación de hardware. |
Traducción al «cristiano» de la tabla
Un Arduino (o cualquier microcontrolador) es como un oficinista muy eficiente que hace una cosa detrás de otra: lee un sensor, luego hace un cálculo, luego envía un dato, luego espera… Todo en orden, paso a paso. Eso es fantástico para muchas tareas, pero cuando necesitas hacer miles de operaciones al mismo tiempo (como filtrar una señal de radio o procesar una imagen en tiempo real), el oficinista se colapsa.
Una FPGA, en cambio, es como tener miles de oficinistas trabajando en paralelo, cada uno haciendo una pequeña parte de la tarea a la vez. Y lo mejor: si no te gusta cómo trabajan, puedes reconfigurar el organigrama completo en milisegundos.
Conclusión (que no debes olvidar)
No son enemigos, son herramientas complementarias. No vas a sustituir tu Arduino por una FPGA para leer un botón y encender un LED (sería como usar un camión para ir a comprar el pan). Pero tampoco le pidas a un Arduino que procese la señal recibida en un radar meteorológico, a la cual hay que fabricarle un demodulador sincrónico en tiempo real. Ahí la FPGA es la reina.
¿Y por qué demonios le interesa esto a LADETEC, que fabrica radares?
Hay que hacer un poco de historia antes de vincular las FPGA con los procesadores de radares meteorológicos.
Radares con demodulación analógica
Los primeros procesadores de señales trabajaban con la señal demodulada en amplitud por medio de un detector logarítmico, a la que comúnmente se le llama señal de video.
Los primeros ejemplares de radares Doppler, además de la demodulación de amplitud, también hacían la demodulación sincrónica (para obtener los componentes ortogonales I y Q) de forma analógica y obtener la fase de la señal retornada.
En estos radares, la reflectividad (Z) se calculaba digitalizando la señal de video a la salida de un detector logarítmico y la Velocidad radial (V) y el Ancho espectral (W) se calculaba digitalizando las señales de video I y Q a la salida del demodulador sincrónico analógico.
Receptores digitales
En 1990, Mitch Randall y Eric Loew de NCAR lograron digitalizar la señal antes de la demodulación, en la frecuencia intermedia. Me pareció muy ingenioso y ellos en persona me explicaron cómo lograban digitalizar a 20 MHz (todo un hito para la época, alternando dos conversores análogo-digital de 10 MHz).
Aun así, esto me resultaba nebuloso. Era una mala interpretación mía del Teorema de Muestreo (Kotelnikov, Nyquist, Shannon) de que se debía muestrear al doble de la frecuencia más alta (que para mí era la portadora de la frecuencia intermedia, 30 o 60 MHz usualmente).
Fue Jeff Keeler, estando en el propio radar S-Pol que me explicó: no es que se deba muestrear al doble la frecuencia más alta (a mi erróneo entender era la frecuencia intermedia de 30 MHz), sino al doble de la frecuencia más alta de la información modulante y esta no pasaba de 1-2 MHz.
Los primeros sistemas comerciales para procesar las señales Doppler también hacían subsampling, es decir, muestreaban a menos de 30 MHz. Con el tiempo, la frecuencia de muestreo ha ido subiendo y ya en LAMULATM DRx-DSP muestreamos a 250 MHz, como hacen casi todos los fabricantes.
Al poder muestrear a esas frecuencias, entonces la tarea de demodulación sincrónica que consiste en obtener la amplitud y la fase de la señal recibida, pasó a ejecutarse por medio de dispositivos lógicos. Los primeros fueron «alambrados», es decir, circuitos lógicos combinacionales, que entregaban a su salida las muestras digitales de I y Q.
Para las computadoras de la época las muestras I y Q eran demasiado rápidas, entonces, para calcular los Momentos de orden cero (Z), primer orden (V) y segundo orden (W) del espectro de potencias Doppler, a partir de las muestras I y Q se requerían procesadores de señales (TMS-320 de Texas Instruments o Sharc de Analog Devices).
Así pues, en los primeros procesadores de señales (Lea mi post sobre este tópico en los NEXRAD), teníamos un receptor digital (DRx) a partir de la frecuencia intermedia seguido de un procesador de señales (DSP) para calcular los momentos en tiempo real.
Las FPGA y el Software Defined Radio
Con el avance de las FPGA que explicamos más arriba, el circuito alambrado de lógica computacional que ejecuta la demodulación sincrónica fue posible implementarlo en una FPGA y pasó a conocerse como Software Defined Radio (SDR), porque la configuración de este circuito de radio (el susodicho demodulador sincrónico) quedaba definido por un software que programa la FPGA.
En todos los procesadores modernos para radar el DRX está implementado en una FPGA.
PC versus DSP especializados
No solo las FPGA se han desarrollado, también las PC. La velocidad de procesamiento que desarrollan los procesadores actuales hacen que la tarea de calcular los momentos arriba descrita, que es lo que en los radares llamamos procesador digital de señales (DSP), sea una bicoca.
Por otra parte, los procesadores de señales especializados antiguos como el TMS-320 de Texas Instruments y el Sharc de Analog Devices fueron quedando obsoletos en muchos diseños (además de que algunos modelos se retiraron por el contenido de plomo, directiva ROHs). No es que hayan desaparecido, hay versiones modernas, la industria migró hacia FPGAs + PC, pero la única limitación continuó siendo la velocidad del bus PCIe.
Met Office, la transferencia tecnológica solidaria
Met Office tiene un equipo de ingenieros que se encarga de desarrollar y fabricar sus propios radares. No le compran a nadie sus procesadores de señales para los radares, los fabrican ellos mismos.
En el año 2008 se materializó que Met Office efectuara una transferencia tecnológica a LADETEC. Estuvimos 15 días en su sede en Exeter y asimilamos tanto el diseño en la FPGA, como el software de procesamiento en la PC. Este conjunto ellos lo llamaron Cyclops-D.
Sobre la base de lo que gentilmente nos enseñaron, nosotros desarrollamos nuestro propio procesador de señales VESTA|Cíclope (así llamado en su honor) y lo acoplamos con nuestro software VESTA|RDA en una nueva versión que no incluía la adquisición, por tanto la llamamos VESTA|RCP. El conjunto VESTA|Cíclope + VESTA|RCP fue lo que nos permitió desarrollar el prototipo de Radar Meteorológico Cubano (Doppler), llamado RD-200SX, para doble longitud de onda, encargado por el Comandante en Jefe Fidel Castro.
De igual forma, fabricamos desde cero el radar RD-100S en la Loma de Casa Blanca y modificamos el radar METEOR-1500S a nuestra versión usando el procesador Doppler.
Los ingleses no solo nos hicieron la transferencia tecnológica. Cuando desarrollaron una nueva versión para sus radares y retiraron todas las tarjetas de FPGA, nos donaron 10 ejemplares para poder poner la cualidad Doppler en todos los radares cubanos.
Los grandes fabricantes (los que dominan el mercado)
El mundillo de las FPGA tiene cuatro nombres propios:
| Fabricante | Gama estrella | Notas |
|---|---|---|
| Xilinx (ahora parte de AMD) | Zynq, Artix, Kintex, Virtex | Los más usados en industria y aeroespacial. Los Zynq ya integran un procesador ARM. |
| Altera (ahora parte de Intel) | Cyclone, Stratix, Agilex | Muy potentes, con herramientas muy maduras (Quartus). |
| Lattice Semiconductor | ICE40, ECP5 | Los favoritos del open hardware. Pequeños, baratos y con documentación libre. |
| Gowin | GW1N, GW2A | El fabricante chino que está pegando fuerte. Relación calidad-precio bestial. |
Si tu presupuesto es cero, puedes empezar con simuladores gratuitos (como Verilator o el simulador de EDA Playground). Pero si quieres tocar hardware real, hay opciones para todos los bolsillos.
¿Cuánto cuesta una FPGA? (spoiler: no hace falta ser millonario)
Antes, una FPGA era cosa de defensa y telecomunicaciones de alto nivel. Ahora, gracias al open hardware, hay placas de desarrollo por menos de 30 dólares.
| Placa | FPGA | Precio aprox. | Ideal para… |
|---|---|---|---|
| iCEstick | Lattice ICE40HX1K | ~25 € | Primeros pasos, proyectos pequeños. |
| TinyFPGA BX | Lattice ICE40LP8K | ~40 € | Más recursos, compatible con herramientas libres. |
| IceZum Alhambra | Lattice ICE40HX8K | ~60 € | La placa española 100% libre. Diseñada por FPGAwars. |
| ULX3S | Lattice ECP5 | ~120-200 € | Muy potente, con WiFi y Bluetooth. Ideal para SDR. |
| Zynq-7000 (Pynq-Z1) | Xilinx Zynq (ARM + FPGA) | ~250 € | Para proyectos mixtos (Linux + FPGA). |
Con esto quiero decirte que no necesitas un laboratorio de la NASA para empezar. Por menos de lo que cuesta una cena para dos, puedes tener una FPGA en tu mesa y empezar a jugar. Como ves, por el precio de un Arduino más un par de sensores ya tienes una FPGA modesta. Y si eres estudiante o profesor, algunas marcas tienen programas de donación de placas.
El corazón libre: el ecosistema open source de las FPGA
Y aquí viene lo más bonito. Durante años, para programar una FPGA necesitabas herramientas privativas de los fabricantes (Vivado de Xilinx, Quartus de Intel), que pesan decenas de gigabytes y solo funcionan en Windows o Linux con ciertas restricciones.
Pero un grupo de hackers (sí, hackers de los buenos) le hizo ingeniería inversa a las FPGA de Lattice. Nació el Proyecto Icestorm: herramientas libres (¡y de código abierto!) para sintetizar, ubicar y rutar diseños en las ICE40 y ECP5. Ya no dependes de software cerrado.
Sobre ese proyecto se construyeron:
- IceStudio: una herramienta visual que te permite programar FPGAs arrastrando bloques lógicos y conectándolos como si hicieras un diagrama de flujo. Es el «Scratch» de las FPGA. Perfecto para venir de Arduino.
- FPGAwars: una comunidad hispanohablante que ha diseñado la placa IceZum Alhambra (la que mencioné antes) y mantiene repositorios con ejemplos y tutoriales. Todo en castellano y con una calidad impresionante.
IceZum Alhambra: el «Arduino de las FPGAs» nacido en un pueblo de Granada
Y aquí viene la parte que más me gusta, porque es un reflejo perfecto de la historia que ya les conté sobre Arduino. Ya sabes que Arduino no nació en Silicon Valley. Arduino se gestó en un bar de Ivrea (Italia), en un entorno humilde, para que los estudiantes de diseño pudieran experimentar sin necesidad de ser ingenieros. Fue un proyecto desde los márgenes, no desde el centro tecnológico del mundo.
Pues la IceZum Alhambra tiene una historia calcada. No se diseñó en los laboratorios de AMD o Intel. La IceZum Alhambra nació en Pinos del Valle, un pequeño pueblo de la Alpujarra granadina, en España.
Su creador, Eladio Delgado, un ingeniero de la zona, fue el encargado de diseñar la placa dentro del departamento de robótica e innovación de BQ (BQlabs) en Madrid, entonces dirigido por Juan González (conocido como «Obijuan»). La idea era sencilla: crear una placa de FPGA que fuera tan fácil de usar como un Arduino, que cualquiera pudiera conectar sensores y crear robots, y que funcionara únicamente con herramientas de código abierto.
¿Y por qué se llama Alhambra? El nombre se lo puso la propia comunidad. Fue idea de Sebastián Gallardo en un foro de FPGAwars, en honor al lugar donde vivía su diseñador, una tierra que mira con orgullo a la Alhambra de Granada. Es decir, el nombre no lo puso un departamento de marketing en una ciudad tecnológica; lo eligió la comunidad en un foro. Eso es el open source en estado puro.
Al igual que Arduino fue apodado cariñosamente como el «estándar de facto» de los microcontroladores, la Alhambra es conocida en el mundillo como el «Arduino de las FPGAs» porque:
- Es 100% abierta: Tanto el diseño de la placa como su software son libres.
- Es compatible con Arduino: Su disposición de pines te permite usar la mayoría de los shields (los escudos) que ya tienes para tus Arduinos.
- Es sencilla y robusta: Tiene entradas/salidas a 5V y puede suministrar hasta 3A, ideal para dar vida a robots sin complicaciones.
El equipo que hay detrás es un grupo de amigos, la mayoría profesores universitarios o ingenieros, que dedican su tiempo libre a este proyecto porque creen en el «Patrimonio Tecnológico de la Humanidad». Su mayor recompensa no es ganar dinero, sino ver el apoyo de la comunidad. Suena parecido a la historia de Arduino, ¿verdad?
Gracias a este ecosistema, cualquier maker con un ordenador normal y 30 euros puede empezar a trastear con FPGAs sin pedir permiso a nadie. Eso es, en esencia, el espíritu del open hardware.
Uniendo ambos mundos: los soft cores, o cómo meter un procesador dentro de la FPGA
Ahora viene la bomba. Si la FPGA puede emular cualquier circuito combinacional y también secuencial, que a fin de cuentas son circuitos combinacionales con retroalimentación, ¿qué impide que dentro de ella “dibujes” el circuito de un microprocesador completo? Nada. Absolutamente nada.
A eso se le llama procesador de núcleo blando (soft core). Tú coges una descripción (un core) del procesador que más te guste (por ejemplo, el código VHDL de un Intel 8086, un Z80 o un ARM), se lo cargas a la FPGA, y de repente tu chip se comporta exactamente como si tuviera ese procesador físico dentro. Y no uno solo: si la FPGA es grande, puedes meter varios procesadores a la vez, comunicándolos entre sí con conexiones internas ultrarápidas.
La guinda del pastel: los SoC FPGA como el Zynq
De hecho, la industria ya ha visto la jugada y ha creado chips que integran un procesador ARM de verdad (que corre Linux) dentro del mismo encapsulado que la FPGA. El más famoso es la familia Zynq de AMD/Xilinx. Ahí tienes, por un lado, un procesador ARM potente para las tareas de control y, por otro, la FPGA para el procesado en tiempo real. Y entre ellos no hay PCIe, sino un bus interno AXI con latencias de 70 nanosegundos. Una auténtica barbaridad.
La novedad en LAMULATM DRx-DSP
Para la detección de fenómenos del viento como los tornados se requiere que el radar Doppler tenga la mejor resolución posible. Eso significa que las muestras I y Q estén espaciadas a 75 metros (0.5 microsegundos) o menos, por ejemplo, 37.5 metros (0.25 microsegundos).
Los conversores A/D lo permiten, ya lo comenté arriba, ahora en LAMULATM DRx-DSP muestreamos a 250 MHz, la FPGA permite implementar el demodulador sincrónico a esas frecuencias, la PC es cada vez más rápida, tanto que ya no es importante, los algoritmos de cálculo de los momentos, para las PC actuales, no son demandantes. Sin embargo queda un cuello de botella: el paso de los datos en tiempo real de la FPGA a la PC, es el principal limitante.
Hasta que se nos encendió la bombilla: ¿y si metemos un procesador dentro de la propia FPGA? Eso es justo lo que llamamos arriba un soft core, y así es como eliminamos el cuello de botella. Aquí es donde viene nuestra novedad: si dentro de la propia FPGA se implementa un procesador de señales, el bus de datos de entrada se puede fabricar mucho más rápido que lo que permite el bus PCIe de una PC externa. Así es como lo hemos hecho en LAMULATM DRx-DSP.
En resumen, las FPGA no son solo un componente más. Son el lienzo sobre el que puedes dibujar cualquier circuito, incluso tu propio procesador. Y nosotros, en LADETEC, hemos aprovechado esa capacidad para construir un receptor de radar (el LAMULA™ DRx-DSP) que no depende de un bus PCIe lento, porque el procesador que calcula los momentos está dentro de la propia FPGA. El resultado: un radar más rápido, más compacto y con latencia de nanosegundos.
¿Te imaginas lo que podrías construir tú con una FPGA de 30 euros y un poco de curiosidad? El open hardware te está esperando. Y si te animas, ya sabes dónde encontrarme para hablar de electrónica, de radares, de FPGA, de soft cores y de cómo un pueblo de Granada cambió la forma de entender la electrónica libre. Bueno, pues si necesitas asesoría, LADETEC está a tu disposición.

Deja una respuesta