Menu
in

«Mi Propio CPU»: Cómo compilar un procesador en un FPGA

Aventuras en hardware, contadas por un desarrollador de software

Hackear una pieza de hardware para que realice otra función diferente a la establecida por el fabricante es la esencia del DIY. Convertir a mini ordenadores en consolas o proyectores y modificar las propiedades de un router son los ejemplos más comunes, pero hay entusiastas allá afuera con el conocimiento necesario para «hacer hablar» a ciertos componentes, y eso incluye a los FPGA. Eso nos lleva al blog personal del ingeniero Thanassis Tsiodras, quien decidió compilar un CPU open source dentro del FPGA de un pequeño thin client. ¿Por qué? Porque puede…

La historia comienza con un artículo de Tom Verbeure, ingeniero de hardware en Nvidia. Básicamente, lo que hizo Verbeure fue construir un ray tracer en tiempo real usando un FPGA muy económico, lo cual no es una exageración porque hoy es posible comprar lotes enteros en eBay por menos de 200 dólares. El hardware en cuestión es el thin client Pano Logic, disponible en versiones G1 y G2. El plan de la compañía era ofrecer un reemplazo para ordenadores tradicionales en entornos empresariales con la flexibilidad de un FPGA, pero sus responsables tiraron la toalla en 2013, y su hardware quedó flotando en el éter, sin soporte.

Sin embargo, a partir de ese punto comenzaron los esfuerzos de la comunidad para doblar la voluntad de esos thin clients. Así llegamos al blog del ingeniero y desarrollador Thanassis Tsiodras, quien obtuvo un Pano Logic G2 equipado con el FPGA Spartan6 LX100. ¿Su objetivo? Compilar un CPU open source en su interior, y aprovechando el tamaño natural del FPGA, hacerlo funcionar como multi-core. Una vez desmembrado el thin client, procedió a crear el cable JTAG para enlazar un programador Xilinx compatible (que cuesta menos de 25 dólares en eBay).


Preparando el JTAG…
Algunas trabas técnicas, aún con software oficial

Aquí es cuando surgieron dificultades. Para ser más específicos, la ausencia de soporte en versiones recientes del software oficial. Synthesis, el pack de herramientas de Xilinx, no soporta al Spartan6 LX100 en su edición más reciente (y libre) para Linux. El único build compatible con LX100 funciona dentro de Windows, pero hay algo más: El trabajo de ese «setup» es instalar una máquina virtual… con una imagen Linux. Por un momento pensó que podía extrer de esa imagen todos los elementos necesarios para su ejecución nativa, pero encontró un límite en la dirección MAC de la placa de red virtual, ya que el software espera ver a esa dirección y ninguna otra.



El resto de la entrada se enfoca finalmente en el plan original, que es compilar un CPU dentro del FPGA, y admito que el contenido técnico se vuelve un poco pesado. En otras palabras, esto es cualquier cosa menos un proyecto para principiantes. El acceso al hardware podrá ser económico (un FPGA en un producto abandonado combinado con un programador de 25 dólares no suena tan mal), pero el código no deja de actuar como filtro. Aún así, el resultado impresiona: Un procesador LEON3 dual-core a 50 MHz, «sintetizado» en un FPGA destinado a la basura. El resto del proyecto tratará de acceder a otros componentes en el hardware, especialmente los 128 MB de memoria DDR2. Si quieres saber más, no dudes en visitar el blog de Thanassis.


Sitio oficial: Haz clic aquí


Escrito por Lisandro Pardo

Leave a Reply