MiSTer FPGA o cómo emular sistemas antiguos, PCs, consolas y juegos

De un tiempo a esta parte la emulación, o más bien simulación, de sistemas retro a través de FPGA se ha puesto muy de moda, ya que gracias a ellos es posible tener un sistema lo más fiel posible al hardware original. El proyecto MiSTer FPGA entra dentro de los de esta categoría. Os explicamos en que consiste.

Poco a poco los antiguos sistemas se degradan por completo y no se pueden llegar a utilizar y preservarlos de la manera más fidedigna posible es importante para la historia de la informática. Si los chips originales no podemos conservarlos, al menos podemos conservar su organización y hacer que los FPGA se comporten como tales.

¿Qué es MiSTer FPGA?

Mister FPGA

MiSTer FPGA es un proyecto libre y abierto que busca la reproducción más fidedigna posible de sistemas antiguos a través del uso de un FPGA, el cual es configurado para emular sistemas antiguos, ya sean ordenadores o consolas de videojuegos. Para ello la comunidad MiSTer ha creado archivos que permiten configurar al MiSTer FPGA para funcionar ya como diferentes sistemas de 8 y 16 bits.

Gracias a que se utiliza un FPGA configurado como el hardware original, este se comporta como el hardware original y no a través de emulación. Dicho de otra manera, el MiSTer FPGA se comporta como el hardware original y es el sustituto ideal para quienes quieren la experiencia más fiel posible con esos sistemas.

¿Las diferencias con otros proyectos? Al ser un proyecto abierto y libre no está asociado a una marca comercial, esto les da la libertad a los participantes del mismo para ser lo más fieles posible al hardware original. Muchas de las soluciones comerciales que «emulan» consolas antiguas a través de FPGA están limitadas a no violar ni las patentes ni la propiedad intelectual y por tano han de buscar otras soluciones para evitar litigios.

¿Cómo se desarrollan los núcleos de los diferentes sistemas?

Diseño Circuitos Papel

Los FPGA se programan utilizando lenguajes de descripción del hardware como Verilog y VHDL en sus diferentes versiones. Estos lenguajes no describen programas a ejecutar, sino la organización interna de los diversos transistores. La forma de conseguirlo es primero haciendo fotografías con microscopios especiales y utilizar la información visual como un mapa que después se codifica. Lo cual debido a que la cantidad de transistores se ha ido duplicando cada cierto tiempo por la Ley de Moore, cosa que complica el análisis y la implementación.

Cuando los sistemas son muy complejos, se crea una versión para FPGA lo más cercana posible al hardware original, pero muchas veces hay elementos que no han sido documentados por el fabricante y estos se han de implementar a través de ingeniería inversa. Esto provoca que pese a que el MiSTer FPGA se haya configurado para comportarse como un núcleo en concreto este no funcione de manera fidedigna.

Otro de los problemas tiene que ver con el hecho de que los tiempos de vídeo en los sistemas antiguos se pensaron para funcionar con monitores y televisores que ya no existen, y aunque es posible añadir módulos adicionales que te permitan hacer uso de un monitor CRT, realmente todos los núcleos MiSTer FPGA están pensados para sacar su señal de vídeo por HDMI, por lo que totalmente fieles al hardware original no lo son. Por suerte se trata de un proyecto abierto y los núcleos que describen el hardware se van actualizando con el tiempo.

¿Por qué un FPGA?

Procesador

La ventaja que tiene los FPGA es podemos configurarlo como si fuesen diferentes piezas de hardware interconectadas entre sí y funcionando en paralelo. Esto tiene una mayor eficiencia que un emulador en el que todas las piezas del mismo son emuladas por un solo núcleo o por varios pero de manera menos eficiente. Un FPGA permite integrar de manera más fidedigna el hardware antiguo, no solamente haciendo que el hardware funcione tal cual, sino también con los mismos tiempos e interfaces de comunicación.

¿Qué hardware compone el MiSTer FPGA?

Terasic De10-Nano

El FPGA principal del MiSTer FPGA es el De10-Nano de Terasic, se trata de un SoC Intel Cyclone V 5CSEBA6U23I7, el cual incluye dos núcleos ARM Cortex-A9 como CPU principal, una memoria RAM DDR3 de 1 GB, una interfaz Micro SD, una salida de vídeo HDMI y un conector mini-USB del tipo B. Esta parte del hardware es utilizada para cargar los núcleos a través de un menú, una vez que han sido cargados el FPGA es iniciado, el cual empieza a funcionar como el núcleo que le hemos cargado.

La cantidad de puertas lógicas que tiene el FPGA es de 110.000, esto significa que no puede simular sistemas complejos por la falta de puertas lógicas programables en su interior. Por lo que si esperáis emular un sistema de 32 o de 64 bits entonces lo mejor es que os olvidéis de hacerlo, ya que no existen los suficientes elementos para ello.

Tampoco os esperéis una emulación 100% fidedigna, ya que como hemos comentado antes hay muchos elementos del hardware de esos sistemas que bien si sabemos lo que hacen nunca fueron documentados y no tenemos la información de como están implementados en el hardware.

Módulos de SDRAM para el MiSTer FPGA

Mister FPGA SDRAM

El otro elemento que es necesario son los módulos de SDRAM, lo cual sorprende desde el momento en que el sistema tiene 1 GB de memoria DDR3 integrada. ¿La explicación? Tiene que ver con la velocidad de reloj y la latencia, ya que a medida que la RAM ha ido dando mayores anchos de banda también ha aumentado la latencia. A día de hoy esto es negligible, pero los sistemas antiguos se diseñaban para que los procesadores funcionasen en unos tiempos concretos, los cuales estaban relacionados con la latencia entre la RAM y los diferentes elementos.

Lo habitual sería hacer uso de la memoria interna del FPGA, pero esto supone reducirla de cara a la simulación del hardware, por lo que es necesaria utilizar RAM externa y la respuesta ha sido el uso de SDRAM, la cual es un compromiso entre la mejor solución que sería la SRAM y la peor es que el uso de memoria DDR a la hora de simular los diferentes sistemas.

El otro motivo es que la DDR RAM se utiliza por los núcleos ARM, lo que supone que hay contención en el acceso de la misma, añadiendo aún más latencia y haciendo que la simulación por parte del FPGA no sea la correcta. En general los tiempos de respuesta de la memoria son importantes para que el sistema funcione de manera sincronizada y coordinada.

Expansiones de E/S para el MiSTer FPGA

Mister FPGA Set Completo

El MiSTer FPGA tiene una serie de placas de expansión que añaden funcionalidades adicionales que son necesarias para añadir ciertas funcionalidades y conectividad con ciertos periféricos. La instalación de estas placas no es sencilla, ya que en algunos casos  no se basan en conectarlas a un puerto de expansión y se ha de hacer a través de soldar ciertas conexiones. Por lo que en la mayoría casos os recomendamso  comprar un MiSTer FPGA con todo el kit montado al completo.

Analog Board

Mister FPGA Analog Board

La primera placa de E/S para el MiSTer es la llamada Analog Board que añade los siguientes elementos:

  • Un conector VGA, para poder conectar un monitor CRT.
  • Un minijack de audio con TOSLINK.
  • Una interfaz SD secundaria, la cual es necesaria para algunos núcleos.
  • Un ventilador para enfriar el De10-Nano, es decir, el FPGA.
  • Un puerto de aspecto USB 3.0, el cual es el llamado User Port y se trata de un puerto de serie, el cual se utiliza principalmente para poder conectar los controladores originales a través de dicha interfaz.

Los adaptadores SNAC permiten conectar un mando de control en uno de estos conectores, pero si queremos poder conectar más mandos nos vemos severamente limitados, ya que la Analog Board solo dispone de un User Port.

RTC Board

Mister FPGA RTC Board

La segunda placa de expansión es la RTC Board, la cual añade un reloj a tiempo real para los núcleos que lo necesitan para funcionar de manera correcta. Las CPU suelen contar el tiempo a partir de la duración de sus ciclos de reloj, por lo que para tener información del trascurso del tiempo del mundo real necesitan este tipo de placas, las cuales además se pueden actualizar a través de internet.

ADC Board

Mister FPGA ADC Board

La tercera placa es la Audio/Tape Input, esta placa permite conectar una unidad de casete para mayor fidelidad de la experiencia de los ordenadores de 8 bits. Se trata de un añadido para la gente que guarde todavía las cintas de sus ordenadores de 8 bits y le funcionen después de tanto tiempo, por lo que no es una pieza fundamental para funcionar.

USB Board y BlisSTer

MisterFPGA USB Hub

La cuarta placa es el USB Hub, el cual añade 7 puertos USB al MiSTer FPGA para poder conectar diversos periféricos. Ya sean ratones, teclados, gamepads e incluso podemos añadir módulos Bluetooth y WiFi.

Mister FPGA Bliss Box

El USB Hub no se debe confundir con la placa BlisSTer, la cual integra una serie de User Ports para poder conectarles varios adaptadores SNAC y poder conectar varios mandos y periféricos al mismo tiempo. Lo cual es ideal si aún conservas los periféricos originales y quieres seguir utilizando estos.

¡Sé el primero en comentar!