Si bien Arduino y Raspberry Pi se han hecho muy populares entre los aficionados a la electrónica, las FPGAs siguen siendo un componente clave desde hace más de 20 años. Repasamos algunos proyectos creativos que podemos encontrar en la red y que giran alrededor de estos dispositivos.
Proyectos como Raspberry Pi y Arduino se han convertido en la base sobre la que se apoyan muchos desarrolladores, ingenieros y aficionados a la electrónica y al hardware para realizar proyectos de todo tipo y, por supuesto, para desarrollar prototipos de sistemas mucho más complejos. Otros dispositivos que, desde hace más de 20 años, también son una pieza clave en el ámbito del diseño electrónico son las FPGA (Field-Programmable Gate Array); unos dispositivos de propósito general que nos ofrecen un hardware totalmente reconfigurable que podemos adaptar a nuestros proyectos y que, incluso, son la base para muchos proyectos catalogados de "alto secreto".
¿Qué es una FPGA?
Las FPGAs son dispositivos programables que en su interior encierran "multitud de puertas lógicas" que inicialmente están desconectadas y que, gracias a lenguajes de descripción de hardware (HDL), los diseñadores pueden configurar las conexiones entre estas puertas y así construir todo tipo de sistemas electrónicos. Esta forma de diseñar sistemas electrónicos es muy interesante puesto que ofrece mucha versatilidad a la hora de trabajar (programamos describiendo el comportamiento del sistema) y vuelve complicada la ingeniería inversa porque no es sencillo averiguar el conexionado interno de la FPGA.
Si bien analizando la placa de un sistema realizado con componentes comerciales alguien es capaz de obtener esquemas y planos para copiarlos, con una FPGA esto no es nada simple porque llegaremos a un punto que veremos una "caja negra" cuyo organización interna deconocemos. De hecho, si buscamos casos de uso de las FPGAs por la red encontraremos a la mismísima NSA usando este tipo de componentes para desarrollar sus equipos o, por ejemplo, a la Dirección General de Seguridad Exterior de Francia (su servicio de espionaje) usar esta tecnología para fabricar su propio supercomputador para interceptar comunicaciones.
Las FPGAs son utilizadas hoy en día en un amplio abanico de proyectos, son materia docente en muchas universidades de todo el mundo (particularmente es algo que recuerdo con mucho cariño) y también siguen siendo la base sobre la que se apoyan muchos entusiastas del diseño del hardware con multitud de proyectos creativos.
¿Y qué proyectos creativos basados en FPGAs podemos encontrar? ¿Qué cosas podemos hacer con este tipo de dispositivos?
Recrear máquinas arcade clásicas
Hasta que en 1975 Midway Games lanzó al mercado Gun Fight (que fue el primer arcade en usar un microprocesador), todas las máquinas arcade desarrolladas hasta ese momento se habían construido mediante lógica discreta; es decir, mediante circuitos TTL básicos. Teniendo en cuenta este dato, no es raro encontrar proyectos que reviven a los clásicos de la primera época de las máquinas arcade en sistemas basados en una FPGA. De hecho, como también es posible emular en una FPGA un procesador, también llegamos a encontrar recreaciones de máquinas arcade de todas las épocas.
Si somos aficionados a los videojuegos y también nos apasiona el mundo del diseño de hardware, construir una réplica en hardware de estas máquinas arcade puede ser un buen proyecto que emprender, tanto para aprender como para divertirnos (una recreación de Pac-Man fue, precisamente, mi trabajo de curso junto a dos compañeros más cuando estudiábamos VHDL).
El Pacman orginal, el Space Invaders o Asteroids son algunos de los juegos clásicos que podemos implementar en una FPGA pero si queremos transformar una FPGA en una máquina arcade versátil también tendremos la opción implementando una versión hardware del emulador MAME.
gui ambros en Flickr
Reconstruir consolas de videojuegos
Hemos hablado de computadoras, microprocesadores y máquinas arcade como ejemplos de proyectos creativos que podemos abordar con una FPGA y con los que podremos pasar un buen rato a la vez que aprendemos y experimentamos con el apasionante mundo del diseño de hardware.
Ya que estamos mirando al pasado y la historia de la tecnología, las consolas clásicas de videojuegos también forman parte de los proyectos que se suelen desarrollar usando FPGAs y son muchos los usuarios que han dedicado tiempo a construir réplicas de consolas como la NES, la Nintendo GameBoy, la Mega Drive de Sega o, incluso, la Jaguar de Atari.
Micah Elizabeth Scott en Flickr
Construir un microprocesador
Un microprocesador está compuesto por millones de transistores que, a su vez, implementan puertas lógicas que sirven para construir los distintos subsistemas que forman parte del procesador. Dicho de otra forma, si un microprocesador es un dispositivo electrónico digital entonces está formado por una combinación de puertas lógicas y se puede implementar sobre una FPGA.
Evidentemente, construir sobre una FPGA un procesador como los nuevos Intel Haswell es un proyecto prácticamente inalcanzable pero, como ejercicio para aprender más, construir procesadores clásicos o históricos es algo bastante más común y en la red podemos encontrar buenos ejemplos. El Zilog Z80, el Motorola 68HC11, el Intel 4004 o el mítico Motorola 68000 son algunos procesadores que se han implementado, años más tarde, en FPGAs y que, por tanto, se han construido usando lenguajes de descripción de hardware.
Emular computadoras legendarias
Teniendo en cuenta la potencia que puede tener una FPGA y la capacidad que tienen estos dispositivos, de la misma forma que podemos emular un procesador clásico también podemos ampliar el alcance y emular un computador completo en un único chip. En usos convencionales, las FPGAs son la base para desarrollar SoCs (Systems on a Chip) y, extendiendo este modelo, en la red podemos encontrar reconstrucciones de todo tipo de computadoras clásicas.
El Apple II, el Commodore 64, el ZX Spectrum, los computadores PDP, el Apple I, el supercomputador Cray, el Commodore PET o la Atari ST son algunas recreaciones construidas sobre una FPGA.
No hay comentarios:
Publicar un comentario