Primeros pasos con HamGeek MiSTer Game Console

Vamos a trabajar con un interesante dispositivo basado en FPGA. Se trata de la HamGeek MiSTer Game Console, que permite la emulación de un importante número de sistemas clásicos a partir de las colaboraciones de una creciente comunidad.

Proyecto MiSTer

El proyecto MiSTer surgió como una evolución del concepto original de MiST, un emulador de código abierto basado en la FPGA Cyclone III de Altera creado por Till Harbaum en 2015, que permitía recrear hardware clásico de ordenadores y consolas mediante lógica programable. La popularización de la FPGA Cyclone V de Altera, fundamentalmente debido a la entonces económica placa de desarrollo DE10-Nano de Terasic, impulsó en 2017 este nuevo proyecto.

CaracterísticaCyclone III EP3C25 (MiST)Cyclone V SoC 5CSEMA6U23 (MiSTer)Año de lanzamiento20072013Tecnología de proceso65 nm28 nmLUTs (Unidades Lógicas)~25000 LUTs~114000 LUTs (equivalentes a ~57000 ALMs)Memoria embebida (BRAM)~1024 Kb (116 bloques de 9 Kb cada uno)~3780 Kb (128 bloques M9K + 2 bloques M144K)DSP Slices26 (para operaciones matemáticas aceleradas)80 (para procesamiento de señal y cálculos complejos)CPU embebidaNo incluye CPU embebidaDual-core ARM Cortex-A9 (hasta 800 MHz), integrado en el SoCConsumo de energía~1,5-4 W (dependiendo de la carga)~2-5 W (dependiendo de la carga y uso de la CPU ARM)Memoria externaSRAM externa opcional (generalmente 32MB o 64MB en implementaciones de MiST)64MB o 128MB SDRAM integrada en la placa DE10-NanoAlmacenamientoTarjeta SDTarjeta microSD

Si bien las versiones clásicas de MiSTer funcionan sobre la DE10-Nano, pronto surgieron alternativas más económicas basadas en la misma FPGA, como la que tratamos en este artículo. En todos los casos, las configuraciones de MiSTer cuentan con una placa de desarrollo con Cyclone V, 64 o 128 MB de SDRAM y tarjeta microSD. Asimismo, suele incluir una placa de E/S que añade salidas de audio analógico, VGA y hub USB.

HamGeek MiSTer Game Console

Este dispositivo se basa en una tarjeta inspirada en el DE10-Nano, con el mismo modelo de FPGA y 64 MB de SDRAM. Asimismo, incluye una tarjeta de E/S, también basada en la original.

Placa de desarrollo

La placa de desarrollo se alimenta con 5 voltios a través de un conector de barril estándar e incluye conector HDMI, Ethernet, microSD y un puerto miniUSB para depuración y programación de la FPGA. Esta última incluye un ventilador para disipar el calor generado durante su operación. Asimismo, en el slot microSD se encuentra una tarjeta preconfigurada con MiSTer.

Placa de E/S

La placa de E/S añade salida tipo jack de audio analógico, salida VGA y 4 puertos USB. Además, incluye un segundo microSD, utilizado por algunos subproyectos dentro de MiSTer.

Asimismo, hay un conector tipo USB etiquetado como «Not USB User Port», utilizable para tareas de depuración. Por último, el interruptor «OVR/AUTO» está vinculado a la función «Sync on Green» (SOG), que permite garantizar la compatibilidad con monitores CRT que requieren sincronización en verde.

Embalaje

HamGeek MiSTer Game Console se envía embalado en cartón, incluyendo una fuente de alimentación con adaptadores a sistemas europeo, estadounidense y británico.

https://www.youtube.com/shorts/zyh-LmmEVN8

Encendido

La conexión mínima recomendada de la HamGeek MiSTer Game Console tan solo requiere la microSD con MiSTer, la alimentación de 5 voltios y un teclado USB. Añadiremos una conexión Ethernet RJ45 que irá a nuestra red doméstica. Esto permitirá que el sistema tome la hora actual vía NTP y, a futuro, que podamos conectarnos vía FTP al sistema.

Esta versión no dispone de botón de encendido, por lo que se arrancará justo al conectarse, mostrando un menú inicial de opciones de emulación. Esta se clasifica según arcades, ordenadores, videoconsolas, otras y utilidades.

En particular, la opción «otras» se refiere a plataformas de propósito muy específico.

Las utilidades incluyen herramientas de pruebas, registros, etc.

Por ejemplo, podemos realizar una chequeo de la memoria RAM.

Menú de configuración

Pulsando [F12] entramos en el menú de configuración del sistema.

Este menú permite conocer el estado de la tarjeta microSD o la dirección IP que nos fue asignada vía DHCP.

El dispositivo incluye 3 botones físicos que nos permiten un reinicio completo [Reset], opciones de usuario [User] y menú en pantalla. Este último mostraría el menú propio de la aplicación que está siendo ejecutada.

Linux integrado

Pulsando [F9] podemos acceder al Linux integrado en la FPGA que corre sobre su SoC ARM.

Podremos acceder como root con clave «1».

Si consultamos la versión de kernel con uname, obtendremos la siguiente información:

Linux MiSTer 5.15.1-MiSTer #1 SMP Wed Nov 8 16:41:16 CST 2023 armv7l GNU/Linux

La información de CPU disponible en /proc/cpuinfo.

processor : 0
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 200.00
Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

processor : 1
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 200.00
Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

Hardware : Altera SOCFPGA
Revision : 0000
Serial : 0000000000000000

La memoria la comprobamos en /proc/meminfo.

/root# cat /proc/meminfo
MemTotal: 504096 kB
MemFree: 403228 kB
MemAvailable: 469288 kB

Por último, comprobamos que la distribución es de tipo Buildroot.

/root# cat /etc/*-release NAME=Buildroot
VERSION=-g6b9fff8-dirty
ID=buildroot
VERSION_ID=2021.02.4
PRETTY_NAME="Buildroot 2021.02.4"

También comprobamos que tiene activados los servicios SSH y FTP, a los que podemos acceder como usuario root.

Podemos acceder vía FTP al directorio /media/fat, correspondiente a la tarjeta microSD. Si es necesario, podremos subir archivos necesarios para nuestras emulaciones.

Ejemplo de emulación

Aunque no todas las emulaciones son directas, pues pueden requerir de archivos adicionales, lo habitual es seleccionar el sistema deseado en el menú de opciones de emulación.

Se arrancará el sistema y podremos utilizar [F12] para realizar los ajustes necesarios.

#CycloneV

We're seeing some great progress on the hardware (FPGA) implementation of the Ember CPU! The Verilog simulation of the CPU on a Cyclone V FPGA in QuestaSim can now process LDI (Load Immediate) and MOV instructions. Next step, the ALU!

#cpudesign #8bit #16bit #100DaysRTL #DigitalDesign #ElectronicsEngineering #TechInnovation #hardwaredesign #DIYProjects #retrocomputer #Verilog #ALU #8BitALU #FPGA #ASIC #ProcessorDesign #retrodev #analoguepocket #cyclonev