El potencial de las FPGA, los circuitos integrados configurables que transforman la industria electrónica.

Las FPGA (Field Programmable Gate Arrays) son un pilar fundamental en la industria electrónica, conocidas por su capacidad única de configurarse para cumplir con tareas específicas. Aunque menos comunes que los circuitos tradicionales, son esenciales en aplicaciones donde la personalización extrema y la eficiencia son necesarias.

¿QUÉ ES UN FPGA?

Las FPGAs (Field Programmable Gate Arrays) son un pilar fundamental, aunque a menudo desconocido, de la industria electrónica. Son un tipo de circuito integrado digital cuya característica principal es su configurabilidad. Esto significa que pueden configurarse para realizar, dentro del chip, un circuito digital completamente nuevo.

Por ejemplo, es posible crear un sistema informático pequeño (CPU+RAM+ROM) que opere con un tamaño de palabra inusual, como 11 bits en lugar de los típicos 32 o 64 bits. Aunque este caso pueda parecer poco útil, ilustra la flexibilidad de estos dispositivos. Desde su creación en los años 80, las FPGAs han permitido este nivel de configurabilidad, adaptándose incluso a las crecientes demandas de eficiencia en computación, como sucede con la inteligencia artificial (IA).

¿POR QUÉ ELEGIR FPGA?

Como se ha dicho, el caso anterior puede parecer irrelevante pero ¿Y si en lugar de una CPU de 11 bits, necesitáramos realizar un cálculo, como la suma de dos matrices, elemento a elemento? ¿Y si además, estos números viniesen a gran velocidad y a través de un canal de comunicación para el que no tenemos puertos en un ordenador convencional, y que está situado en un sitio donde un ordenador no cupiese por espacio, consumo o disipación térmica? Estas situaciones se dan a menudo en entornos industriales.

En este caso, aún nos quedarían soluciones como una Raspberry Pi, utilizando sus pines GPIO para recibir la señal y procesarla. Sin embargo, si la señal es lo medianamente rápida no se podrá procesar en esta plataforma, debido a que los pines GPIO no pueden recibir información a gran velocidad. En el caso de la FPGA, es posible recoger señales a cientos de MHz si hiciera falta, en algunos modelos mucho más.

Además, muchas FPGAs cuentan con SoCs integrados, que les permiten ejecutar sistemas operativos como Linux, al del mismo modo que lo haría una Raspberry. En este ejemplo, es posible que quisiéramos restringir aún más el consumo de energía. Para ello se podría tomar la decisión de transformar los números de 32 bits que nos llegan a, por ejemplo, 11, y que todas las operaciones se realicen, físicamente a nivel de circuito, a 11 bits, o 10, o los que hiciera falta en esta situación concreta.

Para resumirlo en una imagen podríamos usar la siguiente:

El dispositivo FPGA contiene circuitos digitales sencillos, a priori desconectados y sin usar. Como si fuesen piezas de Lego™ sueltas, podemos reconocer qué son y para qué pudieran servir, pero hasta que no se combinen en una estructura superior no realizarán su potencial. Por otro lado, el chip FPGA en sí podría verse como un kit de Lego™. Al igual que un kit, cada chip vendrá con más o menos piezas de un tipo u otro, será más grande o más pequeño, más barato o más caro, y estará orientado a un uso u otro. Y sin embargo, a pesar de que el fabricante esté pensando en un uso típico para su chip, el programador podrá utilizarlo para un uso completamente distinto, y customizado, como el caso del avión de lego.

Y es que es esta configurabilidad inherente a la FPGA la que la hace tan potente y a la vez tan desconocida. Ya se ha visto que la FPGA puede ser útil en situaciones donde un ordenador convencional o una Raspberry no puedan ser usadas. Sin embargo, cabe preguntarse lo contrario: ¿Por qué si pudiera usarse la FPGA u otra solución (e.g. una Raspberry) se optaría por la otra? La respuesta está, de nuevo, en la configurabilidad. Las FPGAs, por su naturaleza, son mucho más difíciles de utilizar.

Configurar el ejemplo anterior de sumar dos matrices implica tener en cuenta cuestiones como el voltaje al que trabaja ese conector no convencional y su protocolo de transmisión de datos. También implica el diseño del circuito digital concreto que realice las operaciones que se desean y su correspondiente validación. Si además se quiere procesar esa información en un sistema Linux o si se quiere reenviar los datos ya procesados a través de internet también habrá de hacerse manualmente. El fabricante puede ayudar mucho con diseños prefabricados, consejos, foros, etc. Pero el ingeniero no podrá evitar una buena parte del trabajo. Debido a la pila de tecnologías y niveles de abstracción que hay que manejar en el uso de la FPGA, la curva de aprendizaje para estos dispositivos es notablemente empinada. Esto hace que durante el proceso de diseño de una solución se tienda a  evitarlas… hasta que sea imposible. 

Los casos en los que nos veremos obligados a usar tecnología FPGA se pueden resumir en la siguiente frase: Las FPGAs se usan donde no haya una solución comercial disponible y el volumen a producir sea demasiado bajo como para justificar un ASIC. 

APLICACIONES DE LAS FPGA

Las situaciones en las que esto sucede, son variadas. A veces puede ser la necesidad de una operación lógica sencilla pero para la que no hay una solución comercial satisfactoria. Otras veces la FPGA atiende a problemas más complejos. Estos problemas podrían clasificarse de manera no exhaustiva en los siguientes campos.

PROCESAMIENTO DE VIDEO EN TIEMPO REAL

Existen situaciones en las que se requiere recoger fotogramas de uno o más sensores de imagen, procesarlos, y extraerlos por una interfaz de video. En estos casos, es poco probable que las cámaras y sus conectores, la salida de video que se desee, y el procesamiento estén todos disponibles en una solución comercial que a su vez soporte el ancho de banda y latencia que se requieran. En función de la necesidad existen FPGAs orientadas precisamente a esta funcionalidad, pudiendo ser el circuito integrado muy barato, y disipar una potencia tan baja que no requiera prácticamente ninguna consideración de disipación térmica.

INFERENCIA DE ALGORITMOS IA

Las FPGAs disponen de un paralelismo de cómputo y una integración íntima con su SoC. Es por esto que las inferencias de redes neuronales de tamaños pequeños y medios en FPGA son los que tienen la menor latencia. Esto las hace óptimas para procesamiento en el borde pero sobretodo nos permite añadir IA al proyecto FPGA que se esté realizando, para darle mayor valor añadido al producto. 

ADQUISICIÓN DE DATOS

Como en el primer ejemplo de este artículo, a veces hay que adquirir datos de protocolos de comunicación muy primitivos o muy específicos. En muchos casos, de varios sitios a la vez. Las FPGAs suelen ser la mejor selección para estas situaciones. Se pueden encontrar en cámaras donde se requiere un tratamiento de los datos directamente a la salida del sensor, como por ejemplo en cámaras hiperespectrales. Otro campo donde se requiere de esta funcionalidad son laboratorios. El CERN utiliza un gran número de FPGAs en sus sensores, al igual que muchos otros laboratorios de física atómica, aceleradores de partículas, laboratorios de fusión nuclear, etc. 

BEAMFORMING EN RADAR

Actualmente se utilizan ampliamente FPGAs para poder procesar los desfases increíblemente precisos que se necesitan para que los radares, sin movimiento mecánico alguno, puedan focalizar sus haces en direcciones arbitrarias. Estos algoritmos están en constante cambio, a la par que los propios radares, con lo que nunca se alcanza la situación en la que el volumen de producción justifique un ASIC.

AEROESPACIAL Y DEFENSA

El fabricante de FPGAs no conoce el uso final del dispositivo que vende y mucho menos el diseño concreto con el que será programado. Esto hace que en el campo de la defensa, sea más fácil mantener en secreto los diseños de circuitos electrónicos y algoritmos que se utilizan. Al producir un ASIC, el diseño final pasa por muchas más manos (y ojos) que en el caso FPGA.

En cuanto a la industria aeroespacial, la FPGA puede contener diseños redundantes que ayuden a mitigar la tolerancia a la radiación.

REDES Y TELECOMUNICACIONES

En redes, las FPGAs son famosas en la forma de un tipo de producto llamado smartNIC. Son tarjetas de red especializadas en filtrado de paquetes y otras muchas funciones. Esto permite eximir a la CPU de una cierta carga de trabajo, haciendo que de facto la potencia de cómputo por dólar (una figura de mérito crucial en el mundo de los centros de datos) de los servidores aumente.

En cuanto a telecomunicaciones, las FPGAs sirven para el prototipado de redes de nueva generación como 5G y 6G. En ocasiones el producto final, la torre de telecomunicaciones, al no fabricarse demasiadas veces (menos de decenas de miles) termina utilizando una FPGA, en lugar de un ASIC

PROTOTIPADO DE CIRCUITOS INTEGRADOS

Este es el uso tradicional de las FPGAs: Comprobar la correcta funcionalidad de un diseño, antes de que se envíe a producir en forma de chip. Este uso ha ido disminuyendo en importancia debido a la mejora de los simuladores, pero sigue siendo crucial para varias empresas.


FPGA EN ITCL CENTRO TECNOLÓGICO

En ITCL llevamos 3 años haciendo I+D con FPGAs. En un principio el objetivo detrás de la inversión inicial fue tener otra herramienta para realizar inferencias de inteligencia artificial en el borde, dentro del ya extenso arsenal del centro. Actualmente podemos decir que este objetivo está mayoritariamente cumplido, habiendo implementado los tipos más comunes de redes neuronales en FPGA, siendo las capas Transformers las últimas que están cerca de terminar su desarrollo. En términos de latencia, hemos logrado realizar inferencias en un tiempo menor que soluciones comerciales como la de Nvidia Jetson, para redes neuronales de tamaño reducido.

Actualmente el rango de aplicaciones en el que el ITCL está utilizando FPGA se ha ampliado mucho, y cubre las siguientes áreas

Visión y procesamiento de imagen de ultrabaja latencia

Esta es el área más madura después de la de inteligencia artificial. Existen proyectos que realizan fusión de imágenes de cámaras o distorsión no lineal de video en tiempo real. Sobre este último proyecto, hay en marcha una ampliación que permitirá la distorsión completamente arbitraria de imágenes, con una latencia de apenas milisegundos.

Este área de desarrollo tiene una sinergia elevada con el área de inferencia. Se podría, en teoría, realizar inferencia sobre la imagen que llega a través de un flujo de video dado. Esta inferencia tardaría en realizarse lo mismo que lo que tarde el propio flujo de video en enviar un fotograma.

Además de inferencias, se pueden realizar multitud de algoritmos de procesamiento de imagen, por ejemplo estimación de profundidad con visión estereoscópica, procesamiento con cámaras de eventos (un tipo de cámara de ultra baja latencia), etc. Este último ejemplo se convertirá en realidad en forma de proyecto de desarrollo en los próximos meses.

Encriptación post-cuántica

Como ya se ha comentado en la sección anterior, las FPGAs encuentran un nicho importante en redes informáticas. En este caso, el ITCL tiene en marcha un proyecto de encriptación post-cuántica, que permitirá proteger las comunicaciones entre dispositivos de las futuras amenazas que representa el ordenador cuántico. 

Es probable que este tipo de ordenador sea capaz de romper los actuales protocolos de encriptación sobre los que se asienta la era de la información. Actualmente ya se están desarrollando y estandarizando algoritmos de encriptación alternativos que el ordenador cuántico no pueda romper. Sin embargo, no existe hardware digital para acelerar estos algoritmos y que permita que las comunicaciones puedan realizarse a velocidades aceptables. 

Es aquí donde nos hemos propuesto realizar el desarrollo de un acelerador que pueda integrarse de manera transparente para dispositivos IoT  y tarjetas de red. Este acelerador permitirá mantener canales de comunicación encriptados sin que los dispositivos que los usan se van afectados.

Procesamiento de datos de protocolos de comunicación industriales

Además de los protocolos y puertos de comunicación a los que estamos acostumbrados en nuestro día a día (USB, WiFi, etc) existe un gran número de protocolos de comunicación de información como GigeVision (imagen a través de ethernet) CoaXPress (imagen a través de cable coaxial) USBVision (imagen a través de USB3)… y estos son sólo de visión. Las FPGAs son ideales para adaptarse a estas interfaces y protocolos gracias a su enorme configurabilidad. A este área de desarrollo se le pueden añadir todas las demás. Podemos utilizar inteligencia artificial, procesamiento de imagen y encriptación de la información que nos llegue desde estas interfaces, según el caso concreto. 

ITCL está introduciéndose con éxito en el mundo del desarrollo con FPGA. Este éxito es debido al seguimiento de un plan coherente y pautado y a la capacidad de adaptarse a los problemas conocidos y desconocidos que han ido saliendo a medida que se han desarrollado cada uno de los proyectos

Artículos relacionados

ITCL Centro Tecnológico

7 Claves para triunfar en la  transformación digital de tu empresa

Demostradores para Expo Industria 2024

¿Qué es un Gemelo Digital en la Industria 4.0?

IRC eficiencia energética en la industria

5 Pasos para Optimizar el Frío Industrial