tranZPUter SW
Vorwort
Der tranZPUter SW ist ein Ableger des tranZPUter-Projekts und verwendet einen Freescale K64F-Prozessor als IO-Steuerungsprozessor anstelle der ZPU im urspruenglichen tranZPUter-Projekt.
Waehrend des Tests des tranZPUter v1.0 und mit dem Aufkommen des RFS v2.0 Upgrades mit CP/M wurde festgestellt, dass der tranZPUter aktualisiert werden sollte, damit der Z80 ueber zusaetzlichen Speicher verfuegt und mit hoeheren Taktfrequenzen laufen kann. Er sollte auch unabhaengig vom steuernden IO-Prozessor laufen, d.h. der ZPU Evo auf FPGA-Fabric oder dem K64F.
V1.0 des tranZPUter hatte Designbeschraenkungen, die ehrlich gesagt das Projekt viel schwieriger machen. Um das Konzept und Design weiterzuentwickeln, nahm ich einen Schritt zurueck und entschied mich fuer ein leistungsstarkes Mini-Entwicklungsboard, den Teensy 3.5, der mehr als genug allgemeine I/O-Pins hat und 5V-tolerant ist -- daher dieses Zwischendesign (das tatsaechlich besser fuer jeden ist, der Softwareprogrammierer ist und sich mit Elektronik oder VHDL nicht auskennt, aber trotzdem eine Z80-Maschine erweitern moechte).
Alles wird in C/C++ geschrieben und sobald es funktioniert, kann ich den mutigen Schritt unternehmen, einen tranZPUter v2.0 mit einem BGA zu spezifizieren, da die ZPU die gesamte soeben geschriebene Software ausfuehren wird.
Ueberblick
Das Upgrade erweitert auch die Z80-Hardwarefaehigkeiten durch zusaetzliches RAM fuer eine 64K-Version von CP/M und zur Erhoehung der Prozessorgeschwindigkeit bei gleichzeitiger Beibehaltung der Originalgeschwindigkeit beim Zugriff auf die Sharp MZ80A Motherboard-Peripheriegeraete.
Dieses Design ist in Arbeit und arbeitet parallel zum tranZPUter. Die in C/C++ geschriebene Steuersoftware fuer den tranZPUter SW soll auch auf dem tranZPUter unter der ZPU laufen.
Da das Design einen Z80 vor Ort ersetzt, ist es nicht auf den MZ80A beschraenkt, sondern kann in jedem Z80-basierten Computer mit den richtigen Softwareanpassungen verwendet werden, z.B. dem MZ-700 oder MZ-80B.
tranZPUter SW
Der tranZPUter SW baut auf dem tranZPUter-Design in seinen Zielen auf und verbessert gleichzeitig die zugrunde liegende Z80-Hardware. Er verwendet einen Freescale K64F ARM Cortex-M4 anstelle der ZPU Evo, da der tranZPUter SW eher eine Softwareloesung fuer die Anforderung ist. Das Projekt fuegt das Suffix SW fuer *S*oft*W*are hinzu, um die beiden Designs zu unterscheiden.
Um verschiedene CPUs bereitzustellen, muessen lediglich vorhandene CPU-Emulatoren genommen und angepasst werden, um die CPU-Signale auf dem MZ80A-Bus ueber die Schnittstelle dieses Designs zu verwenden.
Hardware
Bus-Mastering wird verwendet, um die Kontrolle ueber den Z80-Bus zu uebernehmen und Daten zwischen dem Hauptspeicher und einer SD-Karte oder zwischen dem I/O-Prozessor und dem Videoanzeigepuffer fuer die Darstellung von Menues zu uebertragen. Es wird auch verwendet, wenn ein Soft-Prozessor den Hardware-Z80 vollstaendig in den Leerlauf versetzt und als Haupt-Computer-CPU fungiert.
Das Design dreht sich darum, den originalen Z80 auf eine Tochterkarte zu heben und mehrere seiner Signale umzuleiten, sodass sie nach Bedarf gesteuert werden koennen.
v1.0 Z80 Upgrade Schaltplan

v1.0 Teensy 3.5 Schaltplan

v1.1 Z80 Upgrade Schaltplan
Weitere Hardware-Revisionen (v1.1, v2.0, v2.1, v2.2) mit PCB-Layouts und Schaltplaenen sind in der englischen Version dokumentiert.
Design-Details
K64F Z80 Host API
Die vollstaendige API-Struktur, Befehlsliste und Ergebnisliste sind identisch mit der englischen Version und werden dort dokumentiert.
Die Kommunikation wird vollstaendig vom Z80 initiiert. Wenn er einen Dienst benoetigt, schreibt er einen Befehl in das svcControl.cmd-Feld und setzt das svcControl.result-Feld auf REQUEST. Der Z80 schreibt dann an einen Ausgangsport (konfigurierbar, aber typischerweise 0x68), der wiederum einen Interrupt an den K64F sendet.
GPIO-Organisation
Wenn erweiterte Dienste wie SD-Kartenzugriff oder Hardware-Emulation benoetigt werden, braucht es den K64F, um diese Dienste bereitzustellen. Der Z80 sieht den K64F als Hardware-Erweiterung -- er macht eine I/O-Anfrage und erhaelt Funktionalitaet zurueck.
Die vollstaendigen GPIO-Zuordnungstabellen (K64F-Port- und Bit-Zuordnung, GPIO-Bits zu Z80-Adress- und Datenleitungszuordnung) sind identisch mit der englischen Version.
Speicher-Modi
Die vollstaendige Speicher-Modi-Tabelle (Modi 0-14 einschliesslich Original, TZFS, CP/M, MZ-700 und MZ-80B) ist identisch mit der englischen Version.
Z80 CPU Frequenzumschaltung
Eines der Hauptprobleme bei der Frequenzumschaltung ist, dass der zugrunde liegende Host seine Frequenz nicht aendern kann -- der Host erzeugt in der Regel den Takt und seine Schaltungen sind fuer den Betrieb innerhalb seiner Takttoleranzen ausgelegt.
Um die Anforderung einer umschaltbaren Z80-CPU-Frequenz zu erfuellen, wurde ein positiv-flankengetriggerter Frequenzumschalter implementiert, der die Host-Frequenz als einen Eingang und einen Rechteckwellengenerator vom K64F als zweiten Eingang verwendet.
Aktuelle Tests auf einer CMOS Z84C0020 20MHz CPU zeigen folgende Beobachtungen:
- tranZPUter zuverlaessig im Bereich 1Hz bis 20MHz fuer alle Funktionalitaet.
- tranZPUter zuverlaessig bei 24MHz auf dem tranZPUter v2.1 Board.
| 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. |
Systemkonfiguration
Das CPLD haelt ein internes Konfigurationsregister, um zu aendern, wie es mit dem zugrunde liegenden Host arbeitet. Die Konfigurationsregister-Tabellen (System Configuration Register 0x6E und System Information Register 0x6F) sind identisch mit der englischen Version.
Sharp MZ-700 Modus
Die Vergleichstabelle der Unterschiede zwischen MZ-80A und MZ-700 sowie die Details zur Implementierung der Kompatibilitaet (tranZPUter v1.1 und v2.1) sind in der englischen Version dokumentiert.
Sharp MZ-80B Modus
Die Details zum MZ-80B-Kompatibilitaetsmodus sind in der englischen Version dokumentiert.
Hardware-Beschreibungssprache
Complex Logic Device - MAX 7000A
Die CPLD-Details und Build-Anweisungen fuer den Bitstream sind in der englischen Version dokumentiert.
Software
zOS
*T*ran*Z*puter *F*iling *S*ystem
Die vollstaendigen TZFS-Befehle und -Details sind in der englischen Version dokumentiert.
CP/M
Die CP/M-Befehle und -Details sind in der englischen Version dokumentiert.
TZFS Monitor
Die vollstaendige TZFS-Monitor-Befehlsreferenz ist in der englischen Version dokumentiert.
Sharp BASIC SA-5510
Die Details zu Sharp BASIC auf dem tranZPUter sind in der englischen Version dokumentiert.
Microsoft BASIC
Die Details zu Microsoft BASIC auf dem tranZPUter sind in der englischen Version dokumentiert.
Memory Decoder Tool
Das Memory-Decoder-Tool wird verwendet, um die Flash-RAM-Speicherdecodierungstabellen zu generieren. Die vollstaendigen Details sind in der englischen Version dokumentiert.
tranZPUter SW Software erstellen
Pfade
Die vollstaendige Pfadtabelle ist in der englischen Version dokumentiert.
Werkzeuge
Die erforderlichen Werkzeuge sind in der englischen Version dokumentiert.
zOS erstellen
Die Build-Anweisungen fuer zOS sind in der englischen Version dokumentiert.
TZFS erstellen
Die Build-Anweisungen fuer TZFS sind in der englischen Version dokumentiert.
Memory Decoder erstellen
Die Build-Anweisungen fuer den Memory Decoder sind in der englischen Version dokumentiert.
CPM erstellen
Die Build-Anweisungen fuer CPM sind in der englischen Version dokumentiert.
Ein typischer Build
Die Beschreibung eines typischen Build-Vorgangs ist in der englischen Version dokumentiert.
K64F MPU flashen
Die Anweisungen zum Flashen des K64F sind in der englischen Version dokumentiert.
Teensy3.5 flashen
Die Anweisungen zum Flashen des Teensy3.5 sind in der englischen Version dokumentiert.
Danksagungen
Danksagungen und Lizenzen sind identisch mit der englischen Version.
Lizenzen
Die GNU Public License v3
Dieses Projekt steht unter der GPLv3. Details finden Sie in der englischen Version.