tranZPUter FusionX Guia Tecnica
Descripcion general
El tranZPUterFusionX esta construido alrededor de dos dispositivos de silicio principales: un System-On-Module (SOM) SigmaStar SSD202 con nucleos duales Cortex-A7 a 1,2 GHz, y un CPLD Altera MAX7000AE (EPM7512) que proporciona una interfaz de bus Z80 precisa al ciclo hacia la maquina host.
La division fundamental de responsabilidades es clara: el CPLD posee el bus Z80 y asegura un comportamiento electrico y de temporizacion correcto hacia el host, mientras que el SOM maneja todo el trabajo de emulacion dentro de un modulo del kernel Linux dedicado ejecutandose en un nucleo de CPU aislado. Los dos dispositivos se comunican a traves de un enlace SPI de 50 MHz (SOM → CPLD, ruta de escritura/control) y un bus GPIO directo (CPLD → SOM, ruta de lectura/captura de direccion).
Esta arquitectura ofrece un rendimiento equivalente Z80 de hasta ~500 MHz — muy por encima de cualquier Z80 real — mientras presenta una interfaz Z80 perfectamente ortodoxa a la maquina host.
Arquitectura de hardware
Diagrama de bloques
┌────────────────────────────────────────────────────────────────────────┐ │ tranZPUter FusionX Board │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ SigmaStar SSD202 SOM (Infinity2M) │ │ │ │ ┌─────────┐ ┌─────────┐ 128MB DRAM │ │ │ │ │ CPU0 │ │ CPU1 │ 256MB NAND Flash │ │ │ │ │ Linux │ │ Z80 Emu │ Integrated WiFi │ │ │ │ │ 1.2GHz │ │ 1.2GHz │ (SSW101B 2.4GHz) │ │ │ │ └─────────┘ └─────────┘ │ │ │ └──────────────┬────────────────┬──────────────────┘ │ │ ┌──────────────▼────────────────▼──────────────────┐ │ │ │ Altera MAX7000AE CPLD (EPM7512) │ │ │ └───────────────┬───────────────────────────────────┘ │ │ ┌───────────────▼───────────────┐ ┌─────────────────────────┐ │ │ │ Z80 DIP-40 host socket │ │ Video/Audio outputs │ │ │ └───────────────────────────────┘ └─────────────────────────┘ │ │ [ USB-serial CH340E ]──USB──►[ Linux console /dev/ttyUSB0 ] │ └────────────────────────────────────────────────────────────────────────┘
Componentes clave
| Componente | Referencia | Especificacion |
|---|---|---|
| SSD202 SOM | SigmaStar SSD202 (Infinity2M) | Doble Cortex-A7 a 1,2 GHz, 128 MB DRAM, 256 MB NAND, WiFi integrado |
| CPLD | Altera EPM7512AETC144-10 | MAX7000AE, 512 macroceldas, TQFP 144 pines, entradas tolerantes a 5V |
| DAC de video | GM7123 (3,3V) | DAC RGB de 30 bits (equivalente ADV7123); 10 bits por canal de color |
| DAC de contraste | TLC5602C | DAC de 8 bits; maneja senal de contraste 4V-5V para CRT monocromatico Sharp MZ |
| DAC de audio | TLC5602C | DAC de 8 bits; salida estereo 48 kHz |
| Convertidor USB-serial | CH340E | 115200 baudios 8N1; expone la consola Linux como /dev/ttyUSB0 |
Rol del CPLD
- Traduccion de tension — El GPIO del SOM opera a 3,3V; el bus host Z80 opera a 5V. El CPLD MAX7000AE tiene entradas tolerantes a 5V y maneja salidas a niveles LVTTL.
- Temporizacion de bus Z80 precisa al ciclo — El CPLD implementa FSMs completas del bus Z80 para cada tipo de ciclo Z80, cronometradas por el oscilador de 50 MHz.
- Interfaz SOM — Canal SPI de 50 MHz para ruta de escritura y ruta GPIO directa para ruta de lectura.
- Conmutacion de video y audio — Controla multiplexores analogicos en las placas hija.
- Gestion de reset — Extiende y sincroniza la senal RESET.
Variantes CPLD
| Variante | Maquina objetivo | Diferencias clave |
|---|---|---|
| MZ80A | Sharp MZ-80A | Temporizacion de pantalla 40/80 columnas; mapa de memoria MZ-80A; paginacion RFS |
| MZ700 | Sharp MZ-700 | Conmutacion de bancos de los 32 KB inferiores; decodificacion de video y puerto de teclado MZ-700 |
| MZ2000 | Sharp MZ-2000 | Conmutacion de bancos de memoria extendida; senales de modo de video adicionales |
| PCW8256 | Amstrad PCW-8256 | Paginacion de memoria (4 bancos de 16 KB); mapa de puertos I/O PCW |
Arquitectura de software
Diseno de doble nucleo
| Nucleo | Asignacion de SO | Responsabilidades |
|---|---|---|
| CPU0 | Linux (planificacion normal) | Todos los procesos Linux, hilos del kernel, IRQ de hardware, gestion de memoria, I/O de archivos, pila de red, subsistema USB, consola serial, daemon arbitro sharpbiter, daemon k64fcpu |
| CPU1 | Aislado (taskset / isolcpus) | Solo hilo del kernel de emulacion Z80 (z80drv) |
Modulos del kernel
- z80drv.ko — Nucleo de emulacion Z80 — Bucle de despacho principal, enrutamiento de cada ciclo al manejador de hardware virtual apropiado.
- ttymzdrv.ko — Driver TTY de teclado/pantalla MZ — Mapea la matriz de teclado Sharp MZ a eventos de teclado Linux estandar, expone
/dev/ttymz0.
Modulos de hardware virtual
| Modulo | Archivo fuente | Objetivo | Funcion |
|---|---|---|---|
| MZ-80A | z80vhw_mz80a.c | Sharp MZ-80A | Mapa de memoria, matriz de teclado, I/O de pantalla |
| MZ-700 | z80vhw_mz700.c | Sharp MZ-700 | Conmutacion de bancos, emulacion de video/teclado |
| MZ-2000 | z80vhw_mz2000.c | Sharp MZ-2000 | Conmutacion de bancos de memoria extendida, control de modo de video |
| PCW-8256 | z80vhw_pcw.c | Amstrad PCW-8256 | Paginacion de memoria, I/O PCW estandar |
| ROM FS | z80vhw_rfs.c | MZ-80A (40/80 col.) | 4 paginas ROM conmutables; carga de archivos MZF desde tarjeta SD |
| TZPU SW | z80vhw_tzpu.c | Modo tranZPUter SW | Stub de coprocesador virtual K64F para comportamiento TZFS |
Configuracion y compilacion automatizadas (recomendado)
Toda la cadena de herramientas del FusionX — Java y el ensamblador GLASS para las ROMs, el compilador cruzado Linaro ARM para los modulos del kernel y la imagen Linux, y Quartus II 13.0.1 para el CPLD — puede instalarse y ejecutarse automaticamente mediante el script de configuracion incluido para su plataforma, en lugar de instalar cada herramienta a mano. Cada script es autonomo: copie el unico archivo correspondiente a su plataforma y ejecutelo. Instala los requisitos previos, clona el repositorio con sus submodulos (por defecto
~/FusionX), descarga el paquete de contenido de SharpSoft (TZFS_Files.zip, ~110 MB), prepara la cadena de herramientas y ofrece ejecutar la primera compilacion. Las secciones manuales de compilacion del CPLD y del firmware que siguen documentan las herramientas subyacentes para usuarios avanzados y recompilaciones parciales.
# Linux / macOS chmod +x setup_FusionX.sh ./setup_FusionX.sh # Windows 10/11 (nativo, sin WSL2) Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\setup_FusionX_windows_native.ps1
La compilacion la dirige
build.sh, que selecciona una cadena de herramientas nativa, una imagen Docker o una distribucion WSL1 por componente segun el host (Linux: todo nativo; macOS: todo Docker; Windows: ROMs/CPLD nativos + WSL1 para las partes solo de Linux). Ejecutelo sin argumentos para compilar todo, o pase un indicador para un solo componente (--asm, --tzfs, --cpm, --drivers, --spi, --cpld, --image):
./build.sh # todos los componentes ./build.sh --cpld # solo los flujos de bits del CPLD ./build.sh --help # listar todas las opciones
Las secciones siguientes cubren en detalle las compilaciones manuales del CPLD y del firmware.
Compilacion y programacion del CPLD
quartus_sh --flow compile tzpuFusionX_MZ80A quartus_pgm -c "USB-Blaster" -m JTAG -o "p;tzpuFusionX_MZ80A.pof@1"
Compilacion del firmware Linux
cd software/linux/ ./Build_FusionX.sh -f nand -p ssd202 -o 2D06 -m 256
Depuracion
- Consola serial — El convertidor USB-serial CH340E expone la consola Linux en
/dev/ttyUSB0a 115200 baudios, 8N1. - JTAG — El cabezal JTAG de 10 pines se conecta a un Altera USB-Blaster para programacion y verificacion del CPLD.
- Registro de depuracion del modulo del kernel — El modulo del kernel z80drv incluye una definicion de depuracion en tiempo de compilacion,
DEBUG_PIO. - Quartus SignalTap II — Proporciona analisis logico en sistema del CPLD sin requerir equipos de prueba externos.
Sitios de referencia
| Recurso | URL |
|---|---|
| Pagina del proyecto tranZPUter FusionX | eaw.app/tranzputer-fusionx |
| Manual de usuario | eaw.app/tranzputer-fusionx-usermanual |
| Guia del desarrollador | eaw.app/tranzputer-fusionx-technicalguide |
Aviso regulatorio inalambrico
Este dispositivo incorpora un transceptor inalambrico SSW101B 2,4 GHz IEEE 802.11 b/g/n (integrado en el SOM SigmaStar SSD202), lo que lo convierte en un emisor intencional bajo las regulaciones de radiofrecuencia a nivel mundial.
Responsabilidad del constructor
Es responsabilidad exclusiva del constructor asegurar que cualquier dispositivo construido a partir de estos disenos cumpla con todas las regulaciones de radiofrecuencia aplicables en su jurisdiccion.
Es responsabilidad exclusiva del constructor asegurar que cualquier dispositivo construido a partir de estos disenos cumpla con todas las regulaciones de radiofrecuencia aplicables en su jurisdiccion.