tranZPUterFusionX

Panoramica

Il tranZPUterFusionX e un concetto derivato dalla serie tranZPUter. Condivide lo stesso scopo: sostituire lo Z80 fisico in un sistema Sharp o simile e fornire funzionalita come un processore piu veloce, piu memoria, dispositivi virtuali, caricamento rapido delle applicazioni dalla scheda SD e, tramite l'uso di una scheda figlia, grafica e audio migliori.
La scheda FusionX puo anche essere utilizzata per alimentare CPU alternative sull'host per test, sviluppo e per fornire una piattaforma software e applicazioni completamente diverse. Puo utilizzare la tastiera, il monitor e l'I/O dell'host sottostante e inoltre la grafica e il suono migliorati forniti dal FusionX.
Condivide somiglianze con il tranZPUterFusion ma invece di realizzarlo in hardware tramite un FPGA, lo realizza in software come applicazione. Cio e reso possibile da un SOM (System On a Module), non molto piu grande di un dispositivo FPGA ma che offre un'abbondanza di funzionalita: CPU ARM Cortex-A7 dual-core a 1,2 GHz, 128 MB di RAM, 256 MB di FlashRAM, WiFi, video HD, scheda SD, porta USB e sistema operativo Linux.
Utilizzando lo stesso design di base del tranZPUterFusion, incorpora un CPLD per interfacciare l'host Z80 al SOM e fornire un timing Z80 preciso al ciclo. Il SOM si interfaccia al CPLD tramite un canale SPI a 72 MHz e un bus a 8 bit per interrogare lo stato dei segnali e avviare transazioni Z80.
In configurazione Z80, un driver del kernel Linux istanzia un'emulazione Z80 che realizza una CPU Z80 in software, la quale a sua volta puo comandare e controllare il sistema host. Il driver del kernel, insieme a un'applicazione di controllo, puo fornire una moltitudine di funzionalita all'host attraverso questo meccanismo. Il SOM e anche collegato a un'unita SD e una porta USB 2.0, quindi non ci sono limiti alle funzionalita che possono essere fornite.
Come il tranZPUterFusion, il tranZPUterFusionX puo fornire video e audio migliorati all'host. Il SOM incorpora doppio DAC audio e una GPU 2D con risoluzioni configurabili, commutate sulle uscite video e audio dell'host sotto controllo software.
La scheda FusionX e ideale per qualsiasi sviluppatore che desideri programmare fisicamente e interagire con hardware retro utilizzando una piattaforma Linux con connettivita WiFi e porta USB/seriale.
Per la maggior parte degli utenti retro, nelle prime fasi dello sviluppo del FusionX, la scheda non avra molto utilizzo. Man mano che il progetto matura, una scheda puo essere ottenuta e installata nello zoccolo Z80 del loro sistema Sharp o simile basato su Z80 (a condizione che ci sia spazio sufficiente per ospitare questa scheda) e utilizzare le funzionalita migliorate, come:
  • Specifiche originali dell'host
    - la macchina si comporta come se avesse uno Z80 fisico al suo interno. Potrebbero esserci lievi differenze nella funzionalita Z80 poiche e implementata in software, ma il timing hardware dello Z80 e preciso.
  • Acceleratore
    - lo Z80 puo funzionare a velocita molto superiori grazie all'abbondanza di memoria e al processore dual-core da 1,2 GHz, che tipicamente vedrebbe prestazioni fino a quelle di uno Z80 a 500 MHz.
  • Emulazione
    - emulazione di tutte le macchine della serie Sharp MZ, sperimentandole attraverso la tastiera, il monitor e l'I/O del sistema host.
  • Grafica
    - tutti i modi grafici originali Sharp MZ, indipendentemente dall'host, incluse risoluzioni aggiuntive fino all'HD, sono disponibili tramite la configurazione della GPU e possono essere selezionati e programmati sull'host in linguaggi come Basic.
  • Audio
    - l'host avra accesso ai convertitori DAC stereo, che possono riprodurre audio di qualita CD a 48 KHz o emulare l'SN76489 o il suono base bit/timer della serie Sharp. La registrazione audio e anche possibile tramite l'ingresso microfono.
  • Processori
    - esistono molte implementazioni software di CPU che possono essere portate per funzionare su questa piattaforma, per esempio le emulazioni di CPU ARM della piattaforma BBC PiCoPro possono essere facilmente portate. Questo a sua volta permette potenzialmente ad altre macchine, utilizzando la grafica e il suono avanzati del SOM come necessario, di eseguire emulazioni di macchine come il BBC su questo host Sharp.
  • Linux
    - utilizzando la tastiera, l'altoparlante, il monitor ecc. dell'host, una versione completa di Linux, incluso il WiFi, puo essere utilizzata sulla console dell'host.

Hardware

La versione 1.0 e la prima release ufficiale del design del tranZPUterFusionX.
La scheda FusionX si basa su un'interfaccia host Z80 collaudata che utilizza il dispositivo CPLD Altera 7000A MAX. Il CPLD non solo interfaccia i segnali host Z80 a 5V con i segnali a 3,3V sui dispositivi piu recenti, ma incorpora anche la logica per eseguire un timing Z80 preciso utilizzando un clock a 50 MHz per campionare il clock host Z80 e attivare i segnali secondo i diagrammi di stato pubblicati dello Z80.
Inoltre, il FusionX include un System-On-a-Module SigmaStar, un piccolo dispositivo tipo francobollo da 29mm x 29mm che incorpora una CPU Cortex-A7 dual-core, 128 MB di DRAM, 256 MB di FlashNAND e un ricetrasmettitore WiFi. Il SOM SigmaStar e in grado di produrre grafica 2D in formato RGB 888 con risoluzione selezionabile fino al formato HD. E anche capace di uscita audio DAC stereo a 48 KHz. Clicca per visualizzare la scheda prodotto completa del SigmaStar.
Utilizzando l'esperienza acquisita con il tranZPUter SW-700, e stato scelto un VideoDAC a 30 bit per renderizzare il video del SOM SigmaStar piuttosto che una scala R-2R, e inoltre e incluso un DAC a 8 bit per la resa dei livelli di contrasto del monitor monocromatico per gestire le sfumature di colore sui monitor CRT monocromatici presenti nel MZ-80A/MZ-2000.
Il design hardware e incentrato su un circuito stampato principale che contiene tutti i circuiti primari e un certo numero di schede figlia, ciascuna scheda figlia dedicata a un host (cioe MZ-700, MZ-80A, MZ-2000). La scheda figlia intercetta il sottosistema video/audio dell'host e supporta la commutazione del video/audio dell'host e della scheda principale verso il monitor/altoparlante dell'host. La scheda principale puo essere utilizzata senza schede figlia; queste ultime sono utilizzate solo quando il video/audio del SOM e richiesto.
Questa sezione illustra gli schemi e il design del circuito stampato della scheda principale del tranZPUterFusionX.

Schemi

Schema 1 - Socket host Z80 verso CPLD
Lo schema interfaccia lo Z80 al CPLD. Il CPLD e tollerante a 5V e opera internamente a 3,3V. Le uscite sono selezionate come TTL a bassa tensione, il che significa che un '1' e rappresentato da 3,3V invece di 5V nel sistema host. Le specifiche del TTL 5V vedono la soglia di commutazione a circa 2,4V, quindi il CPLD e in grado di pilotare circuiti a 5V con corrente di pilotaggio sufficiente di 25 mA per pin.
Le macchine a stati interne del CPLD sono temporizzate da un oscillatore esterno a 50 MHz, questo permette un campionamento e un cambio di stato adeguati per un host Z80 tipico da 1 MHz a 6 MHz.

FusionX Schematic2

Schema 2 - I/O (Audio, UART, USB)
Il SOM e ricco di periferiche e questo circuito ne interfaccia alcune per l'uso nel FusionX, tra cui:
  • Ingresso microfono audio stereo
    - e disponibile anche un ingresso microfono digitale ma i pin sono utilizzati nell'interfaccia CPLD.
  • Uscita DAC audio stereo
    - doppio convertitore digitale-analogico per l'uscita audio che puo essere temporizzato a 48 KHz.
  • Antenna WiFi
    - un ricetrasmettitore WiFi SSW101B 20/40 MHz IEEE 802.11 b/g/n/e/l/n/w operante nella banda 2,4 GHz con una portata di 500 m. Il SOM include anche un PHY ETH a 100 MHz ma questo non e utilizzato in questo design poiche l'ethernet cablato non e pratico per una scheda situata all'interno di una macchina retro.
  • USB Seriale
    - quando Linux e in esecuzione, la console e presentata su un dispositivo seriale UART. Questo dispositivo seriale e convertito in USB per facilita d'uso per visualizzare e connettersi con la console Linux.
  • USB
    - una porta USB collegata a Linux che consente l'espansione dei dispositivi, come storage aggiuntivo, mouse ecc.
  • UART veloce
    - UART full duplex ad alta velocita con handshake hardware.
  • UART
    - UART standard a 2 pin operante fino a 500 KHz.
  • Scheda SD
    - il SOM dispone di FlashNAND integrata e puo quindi ospitare un semplice filesystem Linux; l'aggiunta di una scheda SD consente un maggiore spazio di archiviazione per le applicazioni host e le utility Linux. Una scheda SD facilita anche gli aggiornamenti poiche il SOM eseguira l'aggiornamento automatico quando una scheda SD adeguatamente preparata e presente all'avvio.

FusionX Schematic2

Schema 3 - Video (VideoDAC, DAC di contrasto)
Il SOM produce segnali TTL RGB con 8 bit per colore. Questo e interfacciato a un VideoDAC a 30 bit con i 2 bit piu bassi, per colore, controllati dal CPLD.
Inoltre, per pilotare i monitor monocromatici interni degli Sharp MZ-80A/MZ-80B/MZ-2000, e aggiunto un VideoDAC a 8 bit che produce un segnale video nell'intervallo 4V-5V utilizzando un ingresso colore RGB 332, l'ingresso colore essendo il MSB dell'uscita TTL 888 del SOM. Lo chiamo il DAC di contrasto, poiche invia il segnale video con informazioni di colore come segnale di contrasto controllato in tensione che si presenta sul monitor come livelli di contrasto diversi, simulando cosi il colore come livelli di grigio.
Per ottenere un nero vero, il CPLD crea un segnale di blanking, MONO.BLANK, che e accoppiato con un clamp MUX a 0V sulla scheda figlia che pilota il monitor monocromatico; l'RGB332 e visto come 0V quando e presente 00000000, poi varia tra 4,01V-5V quando non zero.

FusionX Schematic4

Schema 4 - Alimentazione (3,3V, USB)
L'alimentazione, per il SOM e il CPLD, converte i 5V presenti sullo zoccolo Z80 in 3,3V utilizzando un convertitore buck ad alta efficienza. Questo e necessario per minimizzare il calore e fornire la massima corrente al SOM/CPLD.
Inoltre, e installato un interruttore di alimentazione USB controllato via software per abilitare (e ripristinare se necessario) l'alimentazione +5V alla porta di espansione USB.

FusionX Schematic5

Schema 5 - Interfaccia CPLD
L'ultimo schema e l'interfaccia tra il SOM e il CPLD. Originariamente doveva essere un bus bidirezionale a 16 bit con segnali di lettura/scrittura e strobe, ma dopo i test, il tempo di setup per un segnale a 16 bit con commutazione tri-state era molto piu lento di una connessione SPI a causa del layout dei registri GPIO e del funzionamento all'interno del SOM e della velocita delle operazioni di I/O all'interno del SOM.
La soluzione utilizzata e avere un bus SPI bidirezionale a 72 MHz tra il SOM e il CPLD per trasmettere le richieste di transazioni Z80 e un bus parallelo a sola lettura a 8 bit per una lettura piu rapida dei dati Z80 e informazioni di stato Z80 separate.

FusionX Schematic6

PCB

Il PCB e stato progettato con le dimensioni minime come requisito primario per le varie macchine in cui sarebbe stato installato. Doveva anche essere compatibile con il tranZPUterFusion per l'intercambiabilita.
Una preoccupazione importante era la dissipazione del calore poiche il PCB, quando installato in un MZ-700, e molto vicino ai componenti esistenti della scheda madre che generano molto calore senza circolazione d'aria in un contenitore compatto sigillato. Cio significava che i componenti attivi non potevano essere posizionati sul lato inferiore del PCB poiche la generazione di calore avrebbe portato a instabilita e guasti, il che a sua volta ha portato a un aumento delle dimensioni finali del PCB.
Sono stati utilizzati i componenti piu piccoli che potessero essere assemblati manualmente, cioe componenti passivi 0402/0603 e passo CI di 0,5 mm per ridurre le dimensioni complessive, e un impilamento a 4 strati selezionato per ospitare tutti i componenti richiesti.
Vista superiore del PCB

FusionX PCB Top

Vista inferiore del PCB

FusionX PCB Bottom

Panoramica del routing a 4 strati del PCB

FusionX Routing

PCB assemblato

FusionX Assembled

FusionX Assembled

Posizionamento componenti e distinta base del PCB
Clicca qui per visualizzare un diagramma interattivo di posizionamento dei componenti e la distinta base.

Setup automatizzato e build (raccomandato)

Il modo piu rapido per costruire ogni componente FusionX — le ROM in assembly Z80, TZFS e CP/M, i moduli kernel Linux e gli strumenti SPI, i bit stream del CPLD e l'immagine SD Linux completa per SigmaStar SSD202 — e lo script di setup incluso per la propria piattaforma. Ogni script e autonomo: copiare solo quel file ed eseguirlo. Installa gli strumenti richiesti, clona il repository con i suoi sottomoduli (in ~/FusionX per impostazione predefinita), scarica il bundle di contenuti SharpSoft (TZFS_Files.zip, ~110 MB), prepara la toolchain e propone di eseguire il primo build. I passi manuali, componente per componente, rimangono disponibili per gli utenti avanzati e le ricompilazioni parziali.
Script Platform Notes
setup_FusionX.sh Linux (native) / macOS (Docker) Installs base tools; on Linux offers a native tool chain (Java JRE + the Linaro gcc-linaro-5.5.0-2017.10-arm-linux-gnueabihf cross toolchain to /opt/arm-linux-gnueabihf + kernel build deps) or reproducible Docker images (fusionx-build:latest, fusionx-quartus:13.0.1); on macOS uses Docker. The CPLD always builds via the Quartus Docker image (MAX7000AE).
setup_FusionX_windows.cmd Windows 10/11 Double-click launcher — runs the native PowerShell setup with all output logged. No Docker, no WSL2.
setup_FusionX_windows_native.ps1 Windows 10/11 (native, no WSL2) winget-installs Git for Windows + Temurin 17 JRE; locates an existing Quartus II 13.x (MAX7000AE — warns if absent, not auto-installed); sets up a WSL1 distro (default Ubuntu) for the Linux-only components.
setup_FusionX_wsl1.sh WSL1 / Ubuntu (called by the Windows script) Provisions the WSL1 distro: build deps, image extras, 32-bit libs, python2 for the SigmaStar SDK, and the Linaro ARM toolchain; writes /etc/profile.d/fusionx.sh (CROSS_COMPILE, ARCH).
Linux / macOS:
chmod +x setup_FusionX.sh
./setup_FusionX.sh
Windows 10/11 — doppio clic su setup_FusionX_windows.cmd, oppure da un prompt PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_FusionX_windows_native.ps1
Il build stesso e guidato da build.sh, che sceglie una toolchain nativa, un'immagine Docker o una distribuzione WSL1 per componente a seconda dell'host (Linux: tutto nativo; macOS: tutto Docker; Windows: ROM/CPLD nativi + WSL1 per le parti solo-Linux). Costruire tutto, oppure passare uno o piu flag per un singolo componente:
build.sh flag Builds Output
--asm --tzfs --cpm Z80 ROMs / TZFS / CP/M (Java + GLASS glass-0.5.1.jar) software/roms/*.bin (incl. cpm223_*.bin)
--drivers z80drv / ttymz kernel modules + apps arm-linux-gnueabihf objects
--spi SPI tools mspi_main
--cpld CPLD bit streams (MZ80A/MZ700/MZ2000/PCW8256, Quartus Docker) .pof under CPLD/v1.0/<machine>/build/output_files/
--image full SigmaStar SSD202 Linux SD image (u-boot + kernel 4.9 + Buildroot) image under software/linux/.../images
(none) / --all everything
./build.sh                 # all components
./build.sh --cpld          # just the CPLD bit streams
./build.sh --help          # list all options
Override utili dell'ambiente (tutti opzionali):
Variable Purpose
FUSIONX_REPO_URL Repository to clone (default https://git.eaw.app/eaw/tzpuFusionX.git).
FUSIONX_METHOD Force one build method for all components: native, docker or wsl.
FUSIONX_FILES_URL SharpSoft content bundle URL (default the shared TZFS_Files.zip).
FUSIONX_TOOLCHAIN_URL / FUSIONX_TOOLCHAIN_DIR Linaro ARM toolchain download URL / install directory (default /opt/arm-linux-gnueabihf).
FUSIONX_DIR Build in an existing checkout instead of cloning.
FUSIONX_WSL_DISTRO WSL1 distro name (default Ubuntu).
FUSIONX_ASSUME_YES Accept all prompts non-interactively (used by the Windows launcher).
Per i dettagli di build manuale componente per componente — incluso il build dell'immagine di basso livello Build_FusionX.sh — consultare la pagina del progetto in inglese.

Per la documentazione tecnica completa riguardante il CPLD, il software, l’architettura, l’emulatore Z80, le schede figlia, i siti di riferimento, i manuali, le anteprime del progetto, i crediti, le licenze e l’avviso normativo wireless, consultare la pagina del progetto in inglese, che contiene tutte le specifiche tecniche dettagliate, gli schemi FSM del bus, le descrizioni dell’interfaccia SOM, le istruzioni di compilazione, le configurazioni dei moduli del kernel, le schede figlia per MZ-700/MZ-2000/MZ-80A e i video dimostrativi.


Crediti

L'emulazione Z80 utilizzata nel FusionX e (c) 1999-2022 Manuel Sainz de Baranda y Goni, rilasciata sotto licenza LGPL v3, il codice sorgente si trova su Gitea.
Il sistema di compilazione SSD202/SOM2D0X e basato su Linux con estensioni di SigmaStar e Industio, le licenze si trovano nei relativi file sorgente aggiornati.

Licenze

Questo design, hardware e software (componenti attribuibili escludendo il software con licenza separata) e rilasciato sotto la GNU Public Licence v3 e libero per l'uso, l'adattamento e la modifica da parte di individui, gruppi e istituti educativi.
Nessun uso commerciale deve essere fatto di questo design o di qualsiasi componente hardware/firmware senza l'esplicita autorizzazione dell'autore.

Avviso normativo wireless

Questo dispositivo incorpora un ricetrasmettitore wireless SSW101B 2,4 GHz IEEE 802.11 b/g/n (integrato nel SOM SigmaStar SSD202), rendendolo un emettitore intenzionale secondo le normative sulle radiofrequenze a livello mondiale (inclusa la FCC Part 15 Subpart C negli Stati Uniti e la Direttiva sulle apparecchiature radio 2014/53/EU nell'Unione Europea).
Sebbene il modulo SOM possieda certificazioni normative preesistenti, tali certificazioni a livello di modulo non si estendono automaticamente a un prodotto finito che incorpora il modulo. L'esenzione per moduli pre-certificati consente agli hobbisti individuali di costruire un numero limitato di dispositivi per uso personale, sperimentale o educativo senza ottenere un'autorizzazione separata per l'apparecchiatura.
Limitazioni importanti
  • I dispositivi assemblati non devono essere venduti, offerti in vendita, regalati o altrimenti distribuiti a terzi a meno che il prodotto finito non sia stato testato indipendentemente e gli sia stata concessa la propria autorizzazione per l'apparecchiatura (ad es. FCC ID, marcatura CE con valutazione di un Organismo Notificato) nella giurisdizione pertinente.
  • La costruzione di questo progetto per uso personale in quantita limitate e generalmente consentita ai sensi delle disposizioni per hobbisti e uso sperimentale (ad es. FCC § 15.23), a condizione che il dispositivo non causi interferenze dannose.
  • I requisiti normativi variano da paese a paese. I costruttori al di fuori degli Stati Uniti dovrebbero consultare la propria autorita nazionale per le radiofrequenze per le regole applicabili.
Responsabilita del costruttore
E responsabilita esclusiva del costruttore assicurarsi che qualsiasi dispositivo costruito sulla base di questi progetti sia conforme a tutte le normative sulle radiofrequenze applicabili nella propria giurisdizione. L'autore fornisce questi progetti per uso personale, educativo e hobbistico e non garantisce che un dispositivo costruito sulla base di essi soddisfi i requisiti normativi per la distribuzione commerciale.