lunes, 28 de diciembre de 2009

Videosintetizador basado en FPGA: Milkymist

La charla sobre Milkymist ha demostrado cómo se crea un ordenador de propósito específico mediante una FPGA.
El autor ha escogido desarrollárselo él mismo, debido a la ausencia de proyectos realmente abiertos que permitan el procesado y síntesis en tiempo real de video (a pesar de que sí hay otros proyectos de procesadores abiertoos en código fuente, como GRLIB, OpenSparc, OpenGraphics, Project VGA...).
El procesado de vídeo es difícil porque requiere la flexibilidad de una CPU pero la velocidad del hardware dedicado, la velocidad de una SRAM pero la capacidad de una DRAM.
¿Qué soluciones se han tomado?
Para el primero, se han creado 14 "pipelines" de interpolación lineal de triángulos, cuya coordinación está controlada por una CPU de propósito general.
Para el segundo, se ha utilizado una aproximación a base de ráfagas y una cache, de modo que la lectura de memoria se hace de cuatro en cuatro palabras consecutivas, que se almacenan en una cache, y como los algoritmos son rasterizados, tienden a usar pixels contiguos, y sólo hace falta una cache de unos 4KB por cada "pipeline".
Pero lo más interesante ha sido la información de cuáles son las herramientas necesarias para crearse un desarrollo basado en FPGAs uno mismo:
  • El hardware utilizado es relativamente asequible, una tarjeta con FPGA Xilinx ML401, que cuesta unos $500.
  • A eso hay que añadir simuladores gratuitos, para comprobar que el funcionamiento esperado de la CPU sintetizada es el esperado (como Icarus Verilog, GNU Cver y Verilator -- buggy), que son capaces de funcionar hasta en un EeePC.
  • Para la síntesis de las puertas, el software propio de Xilinx es adecuado, aunque sea cerrado.
  • Y por supuesto GNU/Linux como sistema operativo.
Mucha más información en la página del proyecto.

No hay comentarios:

Publicar un comentario