Un FPGA (Field-Programmable Gate Array) es un circuito integrado que, dicho en términos llanos, puede configurarse para llevar a cabo cualquier función lógica y hacer lo que a su dueño le plazca.

Claro que para conseguir eso el diseñador debe programar configurar el circuito, normalmente siguiendo la especificación de un lenguaje de descripción de hardware. Esto es algo así como hacer código en vez de electrónica digital. ¿Te imaginas las posibilidades creativas de una plataforma así?

Considera que con un FPGA eres capaz, en teoría, de reinventar todo tipo de dispositivos de cómputo. Incluso hacerlos trabajar en un mismo espacio y de forma paralela.

Por supuesto, en la práctica la creación está limitada por la capacidades de cada tarjeta FPGA, y también por la plataforma. Para trabajar con un FPGA debes contar con un software especial creado por el fabricante. En Windows la experiencia es completa, pero en Linux puede presentar inconvenientes.

Por cierto, FPGA Libre impulsa "el desarrollo con dispositivos FPGA utilizando herramientas de software libre u open source". Además, fomenta "el intercambio y desarrollo de _cores IP_ con licencias que posean el mismo espíritu que las del software libre". (En otra ocasión hablaremos de hardware libre, como Arduino

Los FGPA comerciales tienen unos 25 años entre nosotros. Cada vez poseen más áreas de aplicación (e.g., radioastronomía, emulación de hardware, bioinformática, criptografía). Las universidades están extendiendo su uso como excelente herramienta didáctica y de prototipado.

Quizá en el futuro contemos con herramientas de aún más alto nivel (dicho en términos de abstracción, no de calidad) para la configuración de FPGA. De ser así, ya no solo ingenieros o científicos sino también artistas y creativos en general producirán resultados aún más sorprendentes, inimaginables y poderosos que los que voy a presentarte a continuación.

Tetris multijugador

Tetris en versión para dos jugadores. Cada participante juega en su propia pantalla usando un teclado PS/2, al tiempo que sus movimientos pueden influenciar los del otro. ¿Cómo? Si un jugador elimina líneas, una cantidad predefinida de ellas aumenta en las del oponente.

Arcade

El proyecto FPGA Arcade intenta desde hace varios años recrear el hardware de una máquina Arcade. Al día de hoy han construido chips con Pacman (el vídeo lo demuestra) y otros clásicos como Pong y Crush Roller. Otros han implementado sus propias consolas basadas en FPGA.

Atari 2600

Un solo FPGA fue suficiente para reconstruir el viejo Atari 2600. Permite audio, vídeo y hasta un control remoto SEGA Genesis. Retromaster, el creador, publicó el código bajo la licencia GPL. No es la primera versión de un Atari 2600 sobre una FPGA.

[_Crackear_ MD5]()

Investigadores de la Universidad de Illinois realizaron una implementación en FPGA del algoritmo de cifrado MD5. Éste mismo fue utilizado para descifrar contraseñas creadas con ese algoritmo (Linux lo usa). Basta decir que es capaz de crear la friolera de 44 millones de _hashes_ MD5 en paralelo cada minuto.

Cray-1

La Cray-1 es el arquetipo de la supercomputadora. Con ella en mente, Chris Fenton se dio a la tarea de recrear su funcionamiento e inolvidable diseño, aunque a menor escala. La original corría a 80 MHz y usaba unos 32 MB de memoria. El pequeño clon lo hace a 35 MHz con casi la misma cantidad de memoria disponible; ya solo le restan algunos detalles y software original para validarle. Fenton menciona que su trabajo es "necromancia computacional". No puedo estar más de acuerdo.

Por cierto, no son pocos (empresas y centros de investigación los que están creando clusters de FPGA para hacer supercomputación.

Recibe cada mañana nuestra newsletter. Una guía para entender lo que importa en relación con la tecnología, la ciencia y la cultura digital.

Procesando...
¡Listo! Ya estás suscrito

También en Hipertextual: