¿Qué es un FPGA y para qué sirve?
¿Qué es un FPGA?
Un FPGA o Field Programable Gate Array es un conjunto de circuitos integrados, como puede ser cualquier chip, que está pensado para entregarse al cliente sin configurarlo para que luego cada uno lo personalice y programe según la tarea que necesite que haga esa pieza, una vez esta ya se ha fabricado. Es como si fabricaran un procesador y luego lo configuraran en función de lo que se necesite, en vez de enfocarlo a una tarea o un uso específico durante el proceso de producción.
Los FPGAs suelen contener diferentes bloques de procesamiento en su interior, y diferentes conectores para poder configurar los diferentes bloques de lógica, pudiendo hacer operaciones complejas o pudiendo funcionar como simples puertas lógicas. También dependiendo del módulo en su interior podremos encontrar memoria, especialmente en los módulos de lógica más complejos y avanzados.
Estos pequeños chips empezaron como dispositivos de memoria de solo lectura (ROM) programables y procesadores de lógica, los cuales se podían programar en fábrica, pero tenían una gran limitación, y es que esos módulos de lógica estaban ya fijados a las puertas lógicas y no se podían luego personalizar físicamente, solo pudiendo personalizarse mediante la programación. Años más tarde llegaría la compañía Altera, la cual, fundada en 1983 crearía el primer FPGA que permitía su reconfiguración, borrando la configuración anterior del dispositivo y permitiendo su reutilización.
El primer FPGA que permitía reprogramar sus puertas lógicas y las conexiones entre ellas sería el XC2064. Este chip creado por los fundadores de la compañía Xilinx llegaría en 1985 con 64 bloques de lógica y significaría un gran paso en el campo. En los años siguientes los FPGA se empezaron a ver en más campos aparte del de las telecomunicaciones y redes, sobre todo en la década de los 90 donde se empezaron a usar en la automoción o diferentes industrias, y evolucionaron dando un gran salto en complejidad y prestaciones hasta llegar a la actualidad, donde tenemos FPGAs con miles de millones de transistores como este de Intel.
¿Para qué sirve un FPGA?
Los FPGAs tienen una gran cantidad de usos, ya que debido a su naturaleza estos chips podrán programarse y personalizarse para hacer cualquier tarea específica que se desee. Por ejemplo, podemos encontrar estos chips desde en naves espaciales a coches inteligentes pasando por servidores de telecomunicaciones. Un ejemplo más practico sería el de Microsoft, que decidió usarlos en los servidores para su motor de búsqueda Bing en vez de usar procesadores convencionales, ya que al poder especializar tanto los FPGA para una tarea salía más rentable y los procesadores eran mucho más eficientes.
En resumen, se podría decir que los FPGA se pueden usar en cualquier entorno que requiera un proceso de datos, en ocasiones llegando a comportarse como microprocesadores, dependiendo de su programación y configuración, en esos casos pasando a llamarse “Soft Microprocessors”.
Las ventajas que aportan los FPGA frente a otros procesadores o chips es que pueden programarse específicamente para la tarea que se quiere que hagan, lo cual los hace mucho más eficientes a la hora de funcionar y a tener mayor rendimiento que si se usara un chip más general como puede ser un procesador. Pero esa misma ventaja es la debilidad de los FPGA, y es que necesitan configurarse para cada tarea específica que se quiera que hagan y solo servirán para esa, teniendo que reconfigurarse cada vez que se quiera cambiar su cometido.
Los FPGA no deben confundirse con placas programables como una Raspberry PI o una placa Arduino. Estas placas llevan microcontroladores, que se comportan de una forma parecida a un FPGA permitiendo meter programas para que el chip se comporte de cierta manera, pero hay una diferencia, aquí el código que se les mete a estas placas lo procesa el microprocesador, mientras que, en el caso de un FPGA, tendremos que antes programar ese chip. Por decirlo de alguna manera, estas placas hacen tareas parecidas pero son más accesibles y sencillas de usar, aunque también existen placas similares con FPGA que eso sí que permiten programarse y configurar sus puertas lógicas para hacernos un chip a medida.