tranZPUter SW-700 — Entwicklerhandbuch

English

Entwicklerhandbuch fuer den tranZPUter SW-700

Dieses Handbuch ist eine detaillierte Anleitung zum Quellcode und zur Entwicklungsumgebung des tranZPUter SW-700. Es fuehrt in VHDL fuer Entwickler ein, die mit der Sprache nicht vertraut sind, geht jedes wichtige Quellmodul durch, dokumentiert die CPLD- und FPGA-Designs, erklaert die Speicherabbildung und CPU-Umschaltungsarchitektur und zeigt, wie man die Firmware baut, Unterstuetzung fuer neue Sharp MZ-Maschinen hinzufuegt und Hardwareprobleme debuggt.
Fuer die Hardware-Architektur und Schaltplaene siehe die tranZPUter SW-700 Seite. Fuer benutzerseitige Bedienung und TZFS-Befehle siehe das TZFS Benutzerhandbuch.

Einfuehrung in VHDL fuer Nicht-HDL-Programmierer

Die gesamte digitale Logik des tranZPUter SW-700 — die CPLD-Verbindungslogik und die FPGA-Video- und Soft-CPU-Kerne — ist in VHDL (VHSIC Hardware Description Language) geschrieben. Anders als Software beschreibt VHDL keine Abfolge von Schritten, die ein Prozessor nacheinander ausfuehrt. Es beschreibt Hardware: Sammlungen von Logikgattern, Flipflops und Zustandsmaschinen, die alle gleichzeitig arbeiten. Jeder process in einer VHDL-Datei laeuft parallel zu jedem anderen Prozess; Signale aendern ihren Wert alle gleichzeitig an jeder Taktflanke.

ENTITY und ARCHITECTURE
Jedes VHDL-Modul besteht aus zwei Teilen:
  • ENTITY deklariert die Schnittstelle des Moduls — seine Ein- und Ausgangspins. Man kann es sich als Funktionssignatur in einer Softwaresprache vorstellen.
  • ARCHITECTURE enthaelt die Implementierung — die internen Signale, Komponenteninstanziierungen und Prozesse, die beschreiben, wie Ausgaenge aus Eingaengen berechnet werden.
entity coreMZ is
    port (
        CLOCK_50   : in  std_logic;                      -- 50 MHz base clock
        VZ80_ADDR  : inout std_logic_vector(15 downto 0); -- Z80 address bus
        VGA_R      : out std_logic_vector(3 downto 0)    -- VGA red channel
        -- ... further ports ...
    );
end entity;

architecture rtl of coreMZ is
    signal PLL_LOCKED : std_logic := '0';  -- internal signal
begin
    -- concurrent statements and processes go here
end architecture;

SIGNALe
Signale sind die internen Leitungen eines VHDL-Moduls — sie verbinden Prozesse miteinander und mit den Ports. Die gaengigsten Typen in diesem Design sind:
  • std_logic — ein einzelnes Bit, das '0', '1', 'Z' (Hochohmig / Tristate) oder verschiedene andere Simulationswerte sein kann.
  • std_logic_vector(N downto 0) — ein Bus aus N+1 Bits.
  • unsigned / integer — numerische Typen fuer Zaehler und Arithmetik.

PROCESS
Ein process ist ein Block sequenzieller VHDL-Anweisungen, der bei jeder Aenderung eines Signals in seiner Empfindlichkeitsliste erneut ausgefuehrt wird. Prozesse sind der fundamentale Baustein synchroner Logik.
process(SYS_CLK, RESETn)
begin
    if RESETn = '0' then
        MY_REGISTER <= (others => '0');
    elsif rising_edge(SYS_CLK) then
        MY_REGISTER <= NEXT_VALUE;
    end if;
end process;

Quellbaum

Der gesamte Quellcode ist unter dem tranZPUter-Repository organisiert. Die wichtigsten Pfade und Dateien sind in der folgenden Tabelle aufgefuehrt.

Automatisches Setup und Build (empfohlen)

Bevor Sie die manuellen Quartus- und Docker-Schritte durcharbeiten, die folgen, beachten Sie, dass die gesamte Umgebung fuer Sie eingerichtet werden kann. Das mitgelieferte Setup-Skript fuer Ihre Plattform installiert die Basis-Werkzeuge, installiert Java (JRE) fuer den GLASS-Z80-Assembler und Docker, baut die drei Quartus-Docker-Images, die im Abschnitt Docker-Build-Umgebung beschrieben sind, klont das Repository mit --recurse-submodules (TZFS, zSoft/zOS, zpu) und bietet an, den ersten Build auszufuehren (./build.sh -t all). Quartus wird nicht auf dem Host installiert — die CPLD- und FPGA-Builds laufen innerhalb der Docker-Images. Jedes Skript ist eigenstaendig.
Skript Plattform Hinweise
setup_tranZPUter.sh Linux / macOS Installiert Basis-Werkzeuge + Java (JRE) + Docker, baut die drei Quartus-Images, klont nach ~/tranZPUter, bietet ./build.sh -t all an.
setup_tranZPUter_windows.cmd Windows 10 / 11 Doppelklick-Starter — fuehrt die .ps1 nicht-interaktiv aus und protokolliert nach setup_tranZPUter_log.txt.
setup_tranZPUter_windows_native.ps1 Windows 10 / 11 winget installiert Git for Windows + Docker Desktop, baut die Quartus-Images, klont nach %HOME%\tranZPUter, fuehrt ./build.sh -t all ueber Git Bash aus.

Linux / macOS:

chmod +x setup_tranZPUter.sh
./setup_tranZPUter.sh

Windows — Doppelklick auf setup_tranZPUter_windows.cmd oder aus PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_tranZPUter_windows_native.ps1
Die drei gebauten Images sind tzpu-quartus:13.0.1 (MAX7000-CPLDs), tzpu-quartus:13.1 (Cyclone III, SW-700 v1.2) und tzpu-quartus:17.1 (Cyclone IV, SW-700 v1.3 / Fusion) — alle kostenlose Web/Lite Edition, keine Lizenz. Der Build wird von build.sh gesteuert, das Quartus nativ ausfuehrt, wenn eine passende Version gefunden wird, andernfalls innerhalb dieser Images (Java/GLASS laeuft immer nativ). Die Ausgaben (.pof, .sof, .jic-Boot-Flash, ROM/TZFS/CP/M-Images) werden unter ./build/output/ gesammelt.
./build.sh -t all        # CPLD + FPGA + software (default: -V v1.3 -M all -D E115 -C emuMZ)
./build.sh -t fpga -V v1.2   # just the v1.2 (Cyclone III) FPGA bitstream
./build.sh -h            # list all targets and options

Nuetzliche Umgebungs-Overrides:

Variable (Alias) Zweck
TZPU_REPO_URL (tranZPUter_REPO_URL) Zu klonende Repository-URL. Standard https://git.eaw.app/eaw/tranZPUter.git.
TZPU_DIR (tranZPUter_DIR) In einem vorhandenen Checkout bauen, anstatt zu klonen.
TZPU_ASSUME_YES (tranZPUter_ASSUME_YES)=1 Nicht-interaktiv; alle Standardwerte akzeptieren.
TZPU_QUARTUS_CPLD_IMAGE (tranZPUter_CPLD_IMAGE) Ueberschreibt das CPLD-Image (Standard tzpu-quartus:13.0.1).
TZPU_QUARTUS_C3_IMAGE (tranZPUter_FPGA_IMAGE) Ueberschreibt das Cyclone-III-Image (Standard tzpu-quartus:13.1).
TZPU_QUARTUS_C4_IMAGE Ueberschreibt das Cyclone-IV-Image (Standard tzpu-quartus:17.1).
Die manuellen FPGA-, CPLD- und Docker-Build-Schritte unten werden fuer fortgeschrittene Benutzer und Teil-Rebuilds weiterhin vollstaendig unterstuetzt.

Referenzseiten

Resource Link
tranZPUter SW-700 project page /tranzputer-sw-700/
tranZPUter SW-700 User Manual /tranzputer-sw-700-usermanual/
tranZPUter SW-700 Technical Guide /tranzputer-sw-700-technicalguide/