tranZPUter SW
Prefazione
Il tranZPUter SW e' un derivato del progetto tranZPUter e utilizza un processore Freescale K64F come processore di controllo IO al posto della ZPU nel progetto tranZPUter originale.
Durante i test del tranZPUter v1.0 e con l'avvento dell'upgrade RFS v2.0 con CP/M, e' stato stabilito che il tranZPUter doveva essere aggiornato in modo che lo Z80 avesse memoria aggiuntiva e potesse funzionare a frequenze di clock piu' elevate. Doveva anche funzionare indipendentemente dal processore IO di controllo, cioe' la ZPU Evo su fabric FPGA o il K64F.
La v1.0 del tranZPUter aveva limitazioni di design che francamente rendevano il progetto molto piu' difficile. Per portare avanti il concetto e il design, ho fatto un passo indietro e ho optato per una potente mini scheda di sviluppo, il Teensy 3.5, che ha piu' che sufficienti pin I/O generici ed e' tollerante a 5V -- da qui questo design intermedio (che in realta' e' migliore per chiunque sia un programmatore software e non abbia familiarita' con l'elettronica o il VHDL, ma voglia comunque espandere una macchina Z80).
Tutto e' scritto in C/C++ e una volta funzionante, posso fare il coraggioso passo di specificare un tranZPUter v2.0 con un BGA, poiche' la ZPU eseguira' tutto il software appena scritto.
Panoramica
L'upgrade estende anche le capacita' hardware dello Z80 con RAM aggiuntiva per una versione a 64K di CP/M e per aumentare la velocita' del processore mantenendo la velocita' originale quando si accede alle periferiche della scheda madre Sharp MZ80A.
Questo design e' un lavoro in corso e procede parallelamente al tranZPUter. Il software di controllo scritto in C/C++ per il tranZPUter SW e' destinato a funzionare anche sul tranZPUter sotto la ZPU.
Poiche' il design sostituisce uno Z80 in loco, non e' limitato al MZ80A ma puo' essere utilizzato in qualsiasi computer basato su Z80 con le opportune modifiche software, ad esempio il MZ-700 o MZ-80B.
tranZPUter SW
Il tranZPUter SW si basa sul design del tranZPUter nei suoi obiettivi migliorando al contempo l'hardware Z80 sottostante. Utilizza un Freescale K64F ARM Cortex-M4 al posto della ZPU Evo poiche' il tranZPUter SW e' piu' una soluzione software per il requisito. Il progetto aggiunge il suffisso SW per *S*oft*W*are per distinguere i due design.
Per fornire diverse CPU, e' sufficiente prendere emulatori di CPU esistenti e adattarli per utilizzare i segnali della CPU sul bus MZ80A tramite l'interfaccia di questo design.
Hardware
Il bus mastering viene utilizzato per prendere il controllo del bus Z80 e trasferire dati tra la memoria principale e una scheda SD o tra il processore I/O e il buffer del display video per la visualizzazione dei menu. Viene anche utilizzato quando un soft-processore mette completamente in idle lo Z80 hardware e agisce come CPU principale del computer.
Il design ruota attorno al sollevare lo Z80 originale su una scheda figlia e reindirizzare diversi dei suoi segnali in modo che possano essere controllati secondo necessita'.
Schema v1.0 Z80 Upgrade

Schema v1.0 Teensy 3.5

Schema v1.1 Z80 Upgrade
Ulteriori revisioni hardware (v1.1, v2.0, v2.1, v2.2) con layout PCB e schemi sono documentate nella versione inglese.
Dettagli del design
K64F Z80 Host API
La struttura completa dell’API, la lista dei comandi e la lista dei risultati sono identiche alla versione inglese e sono documentate li’.
La comunicazione e’ interamente iniziata dallo Z80. Quando necessita di un servizio, scrive un comando nel campo svcControl.cmd e imposta il campo svcControl.result su REQUEST. Lo Z80 scrive poi su una porta di uscita (configurabile, ma tipicamente 0x68), che a sua volta invia un interrupt al K64F.
Organizzazione GPIO
Quando sono necessari servizi avanzati come l'accesso alla scheda SD o l'emulazione hardware, e' necessario il K64F per fornire questi servizi. Lo Z80 vede il K64F come un'estensione hardware -- effettua una richiesta I/O e riceve funzionalita' in cambio.
Le tabelle complete di mappatura GPIO (mappatura porta e bit del K64F, mappatura bit GPIO alle linee di indirizzo e dati dello Z80) sono identiche alla versione inglese.
Modalita' di memoria
La tabella completa delle modalita’ di memoria (modalita’ 0-14 incluse Original, TZFS, CP/M, MZ-700 e MZ-80B) e’ identica alla versione inglese.
Commutazione della frequenza della CPU Z80
Uno dei principali problemi con la commutazione di frequenza e' che l'host sottostante non puo' cambiare la sua frequenza -- l'host tipicamente genera il clock e i suoi circuiti sono progettati per funzionare entro le sue tolleranze di clock.
Per soddisfare il requisito di una frequenza CPU Z80 commutabile, e' stato implementato un commutatore di frequenza attivato sul fronte positivo, che utilizza la frequenza dell'host come un ingresso e un generatore di onda quadra dal K64F come secondo ingresso.
I test attuali su una CPU CMOS Z84C0020 a 20MHz mostrano le seguenti osservazioni:
- tranZPUter affidabile nell’intervallo 1Hz - 20MHz per tutte le funzionalita’.
- tranZPUter affidabile a 24MHz sulla scheda tranZPUter v2.1.
| Port | Function |
|---|---|
| 0x62 | Switch Z80 CPU frequency to the second source, ie. the frequency generated by the K64F or external oscillator. |
| 0x64 | Switch Z80 CPU frequency to default host source. This is the default on RESET. |
Configurazione del sistema
Il CPLD mantiene un registro di configurazione interno per modificare il modo in cui opera con l’host sottostante. Le tabelle dei registri di configurazione (System Configuration Register 0x6E e System Information Register 0x6F) sono identiche alla versione inglese.
Modalita' Sharp MZ-700
La tabella comparativa delle differenze tra MZ-80A e MZ-700 e i dettagli sull’implementazione della compatibilita’ (tranZPUter v1.1 e v2.1) sono documentati nella versione inglese.
Modalita' Sharp MZ-80B
I dettagli sulla modalita’ di compatibilita’ MZ-80B sono documentati nella versione inglese.
Linguaggio di descrizione hardware
Complex Logic Device - MAX 7000A
I dettagli del CPLD e le istruzioni di build per il bitstream sono documentati nella versione inglese.
Software
zOS
*T*ran*Z*puter *F*iling *S*ystem
I comandi e i dettagli completi di TZFS sono documentati nella versione inglese.
CP/M
I comandi e i dettagli di CP/M sono documentati nella versione inglese.
TZFS Monitor
Il riferimento completo ai comandi del monitor TZFS e’ documentato nella versione inglese.
Sharp BASIC SA-5510
I dettagli su Sharp BASIC sul tranZPUter sono documentati nella versione inglese.
Microsoft BASIC
I dettagli su Microsoft BASIC sul tranZPUter sono documentati nella versione inglese.
Memory Decoder Tool
Il Memory Decoder Tool viene utilizzato per generare le tabelle di decodifica della memoria nella Flash RAM. I dettagli completi sono documentati nella versione inglese.
Build del software tranZPUter SW
Percorsi
La tabella completa dei percorsi e’ documentata nella versione inglese.
Strumenti
Gli strumenti necessari sono documentati nella versione inglese.
Build di zOS
Le istruzioni di build per zOS sono documentate nella versione inglese.
Build di TZFS
Le istruzioni di build per TZFS sono documentate nella versione inglese.
Build del Memory Decoder
Le istruzioni di build per il Memory Decoder sono documentate nella versione inglese.
Build di CPM
Le istruzioni di build per CPM sono documentate nella versione inglese.
Un build tipico
La descrizione di un tipico processo di build e’ documentata nella versione inglese.
Flashare il K64F MPU
Le istruzioni per flashare il K64F sono documentate nella versione inglese.
Flashare il Teensy3.5
Le istruzioni per flashare il Teensy3.5 sono documentate nella versione inglese.
Ringraziamenti
I ringraziamenti e le licenze sono identici alla versione inglese.
Licenze
La GNU Public License v3
Questo progetto e’ rilasciato sotto la GPLv3. I dettagli si trovano nella versione inglese.