der hobby entwickler

Startseite

z-meic = (z)80 - (m)odular (e)rweiterbarer e(i)nplatinen (c)omputer

1. Beschreibung der Arbeitsweise des z-meic

Kurzbescheibung

Der z-meic ist ein kleiner Einplatinencomputer (SBC, Single Board Computer). Das Board ist 10cm x 10cm groß und mit einem Z80 Prozessor, einem ATMEGA32A und einem 128KB-SRAM-Speicher (64KB davon werden genutzt) bestückt. Der z-meic läuft mit dem Betriebssystem CP/M 2.2. Die Installation eines anderen Betriebssystems ist möglich, aber derzeit nicht vorgesehen.

Für die Ein- und Ausgabeoperationen wird ein Mikrokontroller ATMEGA32A genutzt. Der ATMEGA32A ersetzt die in der Z80-Familie üblichen I/O-Bausteine Z80-PIO und/oder Z80-SIO. Der Mikrocontroller ist wesentlich leistungsfähiger, schneller und dazu noch günstiger in der Anschaffung.

Der z-meic kann im einfachsten Fall über einen USB-Serial-Adapter mit einem PC verbunden werden. Ein spezielles Terminal-Programm CONSOLE64.EXE übernimmt dann die Kommunikation zwischen z-meic und PC.

Die Besonderheiten des z-meic kommen aber erst mit der Nutzung von ITP3-Modulen zur Geltung. An den z-meic können 3 bis 5 ITP3-Module angeschlossen werden (die Anzahl ist davon abhängig, ob die serielle Schnittstelle zusätzlich genutzt weden soll oder nicht). Was anfangs nur eine Idee war, hat sich als eine kleine Revolution herausgestellt.

Die ITP3-Module werden für die Ausgaben (Monitor), die Eingaben (Tastatur), die Laufwerke (A: bis F:) oder den Drucker genutzt.

ITP3-Module können beliebig angesteckt und entfernt werden. Nach dem RESET fragt der ATMEGA 32A die serielle Schnittstelle und die ITP3-Module ab. Dabei wird die Belegung und die Art der Module ermittelt. Laufwerke werden nacheinander (Laufwerksbuchstaben von A: bis F:) zugewiesen und ebenfalls angezeigt. Danach erfolgt der Start des CP/M. Die erkannten Geräte werden auf dem Monitor mit einem eigenen Befehl angezeigt.

Der besondere Vorteil dieser Arbeisweise (mit der speziellen seriellen Schnittstelle und/oder den ITP3- Modulen) ist, dass das CP/M 2.2 Betriebssystem alle notwendigen Treiber bereits zur Verfügung hat. Die konkrete Umsetzung der Aufgaben (Ausgabe, Eingabe und Laufwerke) erfolgt weitgehendst innerhalb der ITP3-Module.

Diese Aufgaben können dann mit beliebiger Hard- und Software umgesetzt werden (z.B. ATMEGA, Arduino, Raspberry PI, PICO usw.). Da das ITP3-Protokoll in keiner Weise zeitlich determiniert ist (kein fester Takt vorhanden und erforderlich) sind die Anforderungen an die ITP3-Module sehr gering. Sie müssen nur das ITP3-Protokoll bedienen.

Entwickler können sich auf einzelne Module spezialisieren, ohne alle Teile des Systems kennen zu müssen.

Auf die Platine des z-meic wurden zusätzlich die beiden Flash-Schaltkreise 24LC512 und W25Q64 installiert, die ein lokales CP/M-Laufwerk bereitstellen. Dieses kann (muss aber nicht) genutzt werden (die Bestückung der beiden FLASH-Schaltkreise kann auch komplett - ohne Änderung der Software - entfallen).

Beschreibung anhand des Blockschaltbildes

Beschreibung anhand des Blockschaltbildes

Anhand des Blockschaltbildes soll die Arbeitsweise (im Betrieb) des z-meic erläutert werden.

Das Blockschaltbild ist an die klassische Betrachtung eines Mikrorechersystems mit CPU, Speicher und Ein- und Ausgabeeinheit angelehnt.

Die in der Z80-Mikroprozessor Familie üblichen Baugruppen PIO und SIO wurden hier dirch einen Mikrokontroller ATMEGA32A ersetzt. Diese Ersetzung wird mittlerweile bei vielen Einplatinencomputer mit Z80 genutzt, da die ATMEGA-Mikrocontroller deutlich leistungsfähiger sind als die Peripheriebausteine der Z80-Familie.

Die beiden Baugruppen "Z80 CPU" und "SRAM Speicher" arbeiten wie in klassischen Mikrorechnersystemen zusammen.

Die CPU lädt ihre Befehle aus dem Speicher, arbeitet sie ab, und führt eventuell Speicherveränderungen durch (Laden von Speicherzellen aus dem SRAM oder Speichern von Speicherzellen in den SRAM). Dabei ist der Adressbus (A0..A15) gerichtet von der CPU zum Speicher. Auch der Steuerbus mit den Leitungen /CS, /OE und /WE wird im normalen Betrieb nur von der CPU bedient.

Die Ein- und Ausgabeeinheit über den Mikrocontroller ATMEGA32A ist - wie es der Name schon sagt - für die Ein- und Ausgabeoperationen zuständig. Der ATMEGA32A bietet mit seiner eigenen Hardware und den 32MB Programmspeicher viel Platz für eine sehr komfortable EA-Baugruppe.

Bei der Entwicklung wurde Wert darauf gelegt, die im CP/M üblichen BIOS-Schnittstellen:

nur in geringem Umfang in Z80 Assembler geschrieben wurden. Die Aufgaben der BIOS-Schnittstellen wurden vorrangig in den Microcontroller ATMEGA32A verlegt. Das macht die Programmierung einfacher, da im ATMEGA32A mit PASCAL gearbeitet werden kann und reduziert den Speicherbedarf des CP/M-BIOS.

Der vom Z80-Prozessor adressierbare Arbeitsspeicher von 64KB wird somit nur mit 1KB CP/M-BIOS (ab F000H) belegt, da die Verarbeitung der CP/M-BIOS-Aufrufe an den ATMEGA32 weitergereicht werden.

Auf dem z-meic befindet sich zusätzlich ein CP/M-Laufwerk. Dafür werden die Schaltkreise 24LC512 (I2C) und W25Q64 (SPI) als lokales Flash-Laufwerk genutzt. Ist der Schaltkreis 24LC512 nicht bestückt wird das lokale CP/M-Laufwerk nicht benutzt.

Alle genutzten CP/M-Laufwerke (auch das über die serielle Schnittstelle und die ITP3-Module) haben ein einheitliches Format von 8MB.

Diese Vereinheitlichung ermöglicht ein einfaches Verwalten der internen und externen Laufwerke.

Stromversorgung

Der z-meic (ohne angeschlossene Module) benötigt eine Stromversorgung mit einer Spannung von 5V und einem Stromverbrauch von etwa 100mA.

Die Toleranz der Versorgungsspannung des z-meic entspricht theorethisch der Toleranz der Versorgungsspannung von Standard-TTL-Schaltkreisen mit 5%.

Die genauen Grenzen wurden nicht ausgetestet und sind auch sicher von den verwendeten Schaltkreisen abhängig.

Nach meinen Erfahrungen ist das System recht tolerant gegenüber niedrigeren Spannungen als 5V. Bei Überspannungen sollte man vorsichtig sein. Notfalls eine (oder mehrere) Dioden in die Spannungsversorgungsleitung legen.

Wichtiger Hinweis

Auf keinen Fall darf die Polarität der Spannung vertauscht werden!!!

Dies kann nach wenigen Sekunden zur Zerstörung vieler Bauelemente führen.

Nach eigenen Erfahrungen wird der ATMEGA sehr heiß und ist nach wenigen Sekunden nur noch Elektronikschrott.

Aber auch die anderen Schaltkreise sowie die ELKOs vertragen keine falsche Poolung!

Im den folgenden Abschnitten werden mehrere Varianten beschrieben, wie der z-meic mit Strom versorgt werden kann.

Wichtiger Hinweis

Trotz der vielen möglichen Varianten, darf immer nur ein Anschluss für die Stromversorgung genutzt werden. Werden mehrere Stromversorgungsanschlüsse glechzeitig betrieben, kann es bei den elektronisch stabilisierten Spannungsquellen zu sehr hohen Ausgleichsströmen kommen.

Dadurch kann die Elektronik des Netzteils oder des USB-Anschlusses zerstört werden.

Dabei kann es auch zu Bränden kommen.

Stromversorgung über USB-Serial-Adapter

Stromversorgung über USB-Serial-Adapter

Der einfachste Weg den z-meic mit Strom zu versorgen ist über den 5V-Anschluss des USB-Serial-Adapter.

Fast alle meine Adapter (es sind inzwischen etwa 10 Stück) haben den abgebildeten 4-pooligen Buchsenstecker für den Anschluss an das Board des z-meic.

Die Anschlussbelegung des 4-pooligen Buchsensteckers entspricht der Anschlussbelegung für die serielle Schnittstelle (Jumper J5) auf der Platine des z-meic.

Jumper J5

Wichtiger Hinweis

Es ist zu beachtet werden, dass sich die RX und TX-Leitungen einer seriellen Schnittstelle immer kreuzen müssen.

Dass heisst, dass der RXD-Anschluss vom z-meic mit dem TX-Anschluss des USB-Serial-Adapter verbunden wird. Und der TXD-Anschluss auf dem z-meic Board muss mit dem TX-Anschluss am USB-Serial-Adapter verbunden werden.

Wichtiger Hinweis

Unbedingt die Poolung des 4-pooligen Buchsensteckers beim Anschluss an den z-meic beachten.

Damit es nicht zur Verpoolung beim Anschluss des 4-pooligen Buchsensteckers kommt, habe ich den 4-pooligen Buchsenstecker mit etwas Pflaster (oder Isolierband) umwickelt und mit einem roten und einem schwarzen Filzstift die Anschlüsse von GND und +5V markiert (siehe Bild Stromversorgung über USB-Serial-Adapter).

Oft nutze ich die Stronversorgung über den USB-Serial-Adapter auch, wenn ich die serielle Schnittstelle gar nicht nutze.

Die Stromversorgung über den USB-Serial-Adapter funktioniert ebenfalls, wenn die beiden Jumper J9 und J10 auf DS3 und DS4 umgestellt sind und die serielle Schnittstelle damit außer Betrieb genommen wurde.

Setzen der Brücken (Jumper)

Die beiden Brücken (Jumper) J9 und J10 müssen immer gleichzeitig gesetzt werden. Durch sie werden die beiden Port-PINs des ATMEGA32A PD0 (PIN 14) und PD1 (PIN 15) entweder an die serielle Schnittstelle RXD und TXD oder an die beiden ITP3-Ports DS3 und DS4 weitergeleitet.

Jumper RXD/TXD

Die Grundeinstellung (siehe Bild) leitet den PIN 14 (PD0) an RXD und den PIN 15 (PD1) an TXD der seriellen Schnittstelle weiter.

Die Anschlüsse der beiden ITP3-Ports DS3 und DS4 sind in dieser Variante nicht beschaltet.

Jumper DS3/DS4

Wird die serielle Schnittstelle nicht benötigt, so können durch Umstecken der Brücken (Jumper) die beiden ITP3-Schnittstellen DS3 und DS4 zusätzlich genutzt werden.

Die 3 ITP3-Schnittstellen DS0 bis DS2 sind in beiden Steckvarianten der Brücken nutzbar.

Die Software des z-meic testet die angeschlossenen Schnittstellen automatisch ab und aktiviert (je nach Steckvariante der Brücken) entweder die serielle Schnittstelle oder die beiden ITP3-Schnittstellen DS3 und DS4.

Stromversorgung über einen ITP3-Adapter

Die GND und die +5V-Leitungen werden 1:1 auch auf den ITP3-Adapter geleitet.

Daher ist es kein Problem, die Stromversorgung auch über ein ITP3-Modul zu gewährleisten.

Wichtiger Hinweis

Trotz der vielen möglichen Varianten, darf immer nur ein Anschluss für die Stromversorgung genutzt werden (siehe oben).

Schnittstellen zur Außenwelt

Im Prinzip könnte man den z-meic mit einer Tastatur und einem LC-Display auf der Leiterplatte ausstatten und so einen vollständigen Einplatinencomputer entwerfen. Das Konzept des z-meic ist aber deutlich flexibler, wenn die Tastatur und der Monitor (oder ein LC-Display) über Schnittstellen angeschlossen werden.

Der Nachteil dieses Konzeptes ist, dass der z-meic immer über eine Schnittstelle betrieben werden muss. Genau genommen ist er dann kein Einplatinenrechner mehr (was aber die Arduinos, und alle Raspberry PIs ebenfalls genau genommen nicht sind).

Was passiert, wenn keine Schnittstelle angeschlossen wird?

Wird der z-meic nur mit der Stromversorgung und nicht mit einer Schnittstelle in Betrieb genommen, wird dies durch die Software während der Initialisierungsphase erkannt. Da der Anschluss eines CONOUT-Moduls zwingend erforderlich ist, läuft die Software in eine Fehlermeldungsschleife und die 5 frei ansteuerbaren LEDs auf der Platine blinken in einer Endlosschleife (etwa im Sekundentakt).

Als Schnittstellen werden auf dem z-meic derzeit genutzt:

Die Schnittstellen können sowohl einzeln, als auch zusammen genutzt werden. Nach dem Start des ATMEGA32A werden die angeschlossenen Schnittstellen automatisch erkannt. Währen des Kaltstarts des CP/M-BIOS wird die erkannte Konfiguration dann auf den Monitor (CONOUT) ausgegeben.

Im folgenden Abschnitt soll die Nutzung der Schnittstellen auf dem z-meic kurz beschrieben werden.

Betrieb über einen USB-Serial-Wandler und einen PC

In der einfachen Variante benötigt der z-meic nur einen einfachen USB-Serial-Wandler und einen PC.

z-meic_USB-Serial

Genutzt wird dabei die serielle Schnittstelle auf dem ATMEGA 32A um die Tastatur (CONIN) und den Monitor (CONOUT) des CP/M Computers z-meic zu bedienen. Zusätzlich wird auch das CP/M-Laufwerk des PCs über die serielle Schnittstelle angesprochen.

Anzeige über CONSOLE64 V4

Dies erfordert spezielle serielle Komandos, die derzeit nur vom PC-Programm CONSOLE64.EXE bedient werden.


Startseite