Vorstellung des neuen KC85-Modules, welches den KC85 netzwerkfähig macht und zukünftig die Nutzung verschiedener USB-Geräte am KC ermöglicht.

Einleitung

Nach der offiziellen Vorstellung und Demonstration zum KC-Clubtreffen 2009 in Schönwalde bei Berlin, sollen im folgenden Beitrag der grundsätzliche Aufbau des M052 und die neuen Möglichkeiten für das KC85 System vorgestellt werden, welche zum heutigen Zeitpunkt schon genutzt werden können und welche sich zukünftig vielleicht einmal nutzen lassen könnten.

Die Vorgeschichte des Modules kann man indirekt im Projektbereich des KC85 Labors nachlesen. Die Vorarbeit für den USB-Teil des Modules wurde seit Ende 2007 von Mario Leubner geleistet, mit dem Netzwerkanschluss war Ralf Kästner seit Ende 2006 mit einer längeren Unterbrechung ziemlich beschäftigt und nach der Fertigstellung der Hardwareprototypen und erfolgreichen Tests von Hard- und Software mit KC85-Systemen begannen die Vorarbeiten für das M052 im Sommer 2008. Das Layout wurde wie immer von Enrico Grämer in die Hand genommen, welcher auch wieder die Bausätze zusammenstellen und vertreiben wird.

Bereits seit einigen Jahren wünschen sich viele KC-Benutzer eine USB-Schnittstelle am KC85. Was mit der gängigen PC-Technik so einfach aussieht und heute nach der Überwindung von Kinderkrankheiten in der ersten Zeit auch recht gut funktioniert, ist technisch ziemlich kompliziert und umfangreich. Sowohl die Hardware, noch mehr aber die Software eines kompletten USB-Stacks ist für einen 8-Bit Rechner eigentlich eine unüberwindliche Hürde.

Man benötigt daher, wie so oft, etwas Hilfe aus der Welt der Mikrocontroller. 2007 gab es die ersten Informationen über den Vinculum VNC1L USB Host-Controller IC der Firma FTDI, welcher auch im M052 dem Z80 unter die Arme greift. FTDI ist seit vielen Jahren anerkannter Spezialist für USB-IC's und der VNC1L bietet ausreichend Spielraum für viele weitere Experimente mit verschiedenen USB-Geräten.

Den KC85 an ein richtiges Netzwerk zu bekommen, steht ebenfalls schon lange auf der Wunschliste mancher KC85 Anwender und entsprechende Lösungsansätze wurden auch schon oft angedacht, diskutiert und bisher immer wieder verworfen. Mit dem Internet wurde TCPIP der Standard für eine universelle Kommunikation und mit DSL ist Ethernet in der Regel das Standard-Medium für die Datenübertragung im Heimnetzwerk.

Leider liegt ein frei programmierbarer (und damit frei nutzbarer) Software TCPIP-Stack, welcher noch etwas von der Geschwindigkeit des Ethernet beim Benutzer des Systems ankommen lässt, ebenfalls ausserhalb der Möglichkeiten eines KC85 Systems mit einer 1,75 MHz Z80-CPU. Auch für diese Aufgabe benötigen wir deshalb externe Hardware, welche uns die Firma WIZnet in Form eines Hardware-TCPIP-Stacks, welcher an einem integrierten Ethernet-Controller betrieben wird, zur Verfügung stellt.

In den meisten Fällen ist die Modularität des KC85 Systems der Hauptgrund für die vielen existierenden Erweiterungen und bequem zu benutzenden Peripheriegeräte. Ein grosses Manko existiert aber bis heute - wer nicht im Besitz einer Diskettenerweiterung D004 ist, muss mit der Kassettenschnittstelle als Programmlieferant nach dem Einschalten des KC-Grundgerätes leben. Diesen Nachteil des Gesamtsystems beseitigt ein M052 ebenfalls.

Da sich ohne Software weder USB noch Netzwerk in Betrieb nehmen lassen, enthält das M052 einen elektrisch wiederbeschreibbaren EEPROM, durch den sofort nach dem Einschalten des Systems der Zugriff auf beide Schnittstellen möglich wird. Die EEPROM-Software gestattet zur Zeit die Nutzung von USB-Massenspeichern oder Netzwerk-Ressourcen für das direkte Nachladen und Starten von Programmen und schickt damit die Audiokassette als Datenträger endlich in den verdienten Ruhestand. Mit der „Plug&Play“ USB- und Netzwerk-Fähigkeit nimmt der KC85 dadurch eine Spitzenstellung unter vergleichbaren Heimcomputersystemen ein!



Hardware

Bevor etwas näher auf die Modul-Hardware eingegangen wird, nachfolgend erst einmal ein Foto von der Bestückungsseite des fertig aufgebauten Prototypen. Wie man auf dem Bild bereits erkennen kann, wird fast die gesamte Fläche der Modulleiterplatte von bestückten Bauteilen eingenommen.

Hier hat sich Enrico Grämer wieder einmal selbst übertroffen und ganze Arbeit leisten müssen. Wie er selbst sagt, weist das M052 die höchste Packungsdichte auf, welche er bisher layoutet hat. Mit 0,15 mm Leiterbahnbreite und Abstand, DK's von 0,3/0,6 mm innen/aussen und bis zu 4 Leiterbahnen zwischen zwei Pins hindurch war das diesmal im Grenzbereich. Letztendlich hat er aber alle Wünsche der Entwickler umgesetzt, so dass mit dem M052 ein KC-Modul mit einer bisher nie erreichten Funktionalität zur Verfügung steht.


Prototyp M052 Bestückungsseite

 

M052 BS



Zum KC-Treffen 2009 wurde von Enrico Grämer und Frank Dachselt der letzte offene Punkt, Schutz der internen 5V gegen Kurzschluss und Überstrom durch externe Geräte an USB bzw. PS2, geklärt. Daher wird es noch eine kleine Änderung im Bereich der beiden USB-Buchsen geben aber im Wesentlichen entspricht das Foto einem fertig aufgebauten M052.

Die beiden "weissen Flecken" oben links und in der Mitte werden durch den Bausatz nicht mit abgedeckt. Das sind die ISP-Schnittstelle für den eingesetzten AVR-Controller (wird vorprogrammiert ausgeliefert) und die serielle Schnittstelle für das Diagnose-Terminal der Controller-Firmware, welche man für die reine Nutzung des Moduls nicht benötigt. Wer diese beiden Sachen benutzen möchte, muss sich die Bauteile selbst besorgen und nachbestücken.

Die gesamte linke Hälfte der Platine wird durch die Bauteile für den Netzwerkanschluss belegt. In der ersten Reihe von oben befinden sich der Reset-IC für den ATmega, zwei Gatterschaltkreise und die Z80-PIO, welche die Schaltung des KCNET-Interface an den Bus des KC85 anschliesst. Darunter befinden sich der AVR-Controller ATmega 162 mit Taktgenerator und das Adresslatch 74HCT573 (nicht sichtbar, unter dem AVR). Danach kommt das WIZnet-Netzwerkmodul WIZ810MJ. Die RJ45-Buchse, welche normalerweise auf dem Modul sitzt, muss auf die Modulplatine wandern. Das ist leider notwendig, da die Bauhöhe eines KC85-Modules für die Montage des WIZ810MJ mit Netzwerkbuchse nicht ausreicht.

Die obere Hälfte des mittleren Bereiches der Platine nehmen 6 DIL-Schaltkreise ein. Dort befinden sich 2 GAL's, ein 74HCT574, ein 74HCT74 und 2 Gatterschaltkreise, welche die Modulsteuerung und Modullogik des KC85-Modules umsetzen und u.a. für die parallele Ansteuerung des VNC1L durch die Z80-PIO benötigt werden.

Oben rechts befindet sich der 32 kB EEPROM 28C256 für die Modulsoftware und etwas höher ein ganz wichtiges Teil - der Jumper J3. Mit dem gibt man "zu Fuss" das Schreibsignal für den EEPROM frei - erst dann kann der KC mit Hilfe eines kleinen Dienstprogrammes Software in den EEPROM schreiben. Das dafür vorgesehene Schreibschutzbit im Steuerbyte eines Modules ist einfach nicht sicher genug. Schliesslich stürzt auch ein KC85 mal ab und könnte dann unbeabsichtigt den Inhalt des EEPROM's zerstören.

Unter dem EEPROM befindet sich die USB-PIO, welche direkt mit dem Vinculum VNC1L USB Host-Controller parallel kommuniziert. Dafür werden lediglich noch 4 weitere Logikgatter benötigt, welche die Handshake-Signale von PIO und VNC1L so beeinflussen, dass sich beide Seiten verstehen, leider passen dort VNC1L und Z80-PIO nicht direkt zusammen.

Die lange grüne Platine ist das verwendete USB-Modul VDIP2 mit dem VNC1L, auch dort müssen die Buchsen wegen der Bauhöhe entfernt werden. Das Modul besitzt neben der USB-Hardware auch noch ein kleines 200 mA Netzteil für 3,3V, welches im M052 die Spannungsversorgung für den WIZnet-Chip des Netzwerkmodules übernimmt. Das passte sehr gut in unser Konzept, da dadurch eine ganze Menge Platz im Layout eingespart werden konnte.

Die 3 gelben PTC's (selbst rückstellende Polymer-Sicherungen) entfallen im endgültigen Modul und werden durch einen richtigen elektronischen Überstromschutz ersetzt, welcher mit Hilfe eines Strombegrenzer-Schaltkreises einen sehr schnellen und genau dimensionierbaren Schutz des KC-Netzteiles gewährleistet.

Ganz unten befinden sich schliesslich alle Anzeigen und Anschlüsse, welche an der Frontplatte des M052 sichtbar sind, siehe folgendes Foto.


Frontansicht M052

 

M052 Front



Ganz links sieht man die übliche AKTIV-LED des Modules. Beim M052 kommt dort eine LED mit 3 Farben zum Einsatz, welche getrennt über den Schaltzustand des Speichers (grün) sowie den Zustand der I/O-Schaltungbestandteile (rot) informiert. Wenn beide Bestandteile des Moduls aktiv sind, leuchtet diese LED gelb.

Daneben befindet sich der Netzwerkanschluss für das Ethernet-Netzwerk. In der RJ45-Buchse befinden sich ebenfalls 2 LED's. Die grüne zeigt den LINK-Status an. Wenn sie leuchtet, ist die physische Verbindung zum Netzwerk in Ordnung. Wenn sie nach dem Anstecken des Netzwerk-Kabels nicht leuchtet, besteht ein Problem mit dem Kabel, Stecker oder der Gegenseite und das Netzwerk wird dann auch nicht funktionieren! Die gelbe LED hat nur Informationscharakter, sobald Daten gesendet oder empfangen werden, wird sie aktiv.

Die kleine Klinkenbuchse mit dem schwarzen Gehäuse ist nur bei den beiden Prototypen für Testzwecke vorhanden, bitte nicht weiter beachten.

Dann kommt ein PS2-Anschluss in Form einer sechspoligen Mini DIN Buchse - wozu das, wird man sich jetzt fragen. Im Bausatz wird das auf jeden Fall mit enthalten sein, da sich der Hardwareaufwand auf genau 9 Bauteile beschränkt. Eine Funktion hat dieser Anschluss im Moment noch nicht, man muss ihn also auch nicht unbedingt bestücken. Der Grund liegt in einer angekündigten Funktion der Firmware des Vinculum-Controllers. Irgendwann soll mit Hilfe dieser Software ein unkomplizierter Betrieb von Mäusen und/oder Tastaturen per PS2-Anschluss möglich werden.

Dort sind wir aber vom Zeitpunkt der Implementierung dieser Funktionen durch die Firma FTDI abhängig. Solange es keine Befehle in der Firmware gibt, um auf Geräte an der PS2-Schnittstelle zugreifen zu können, sind dem Z80 und seiner Software auf der anderen Seite des Chips die Hände gebunden.

Rechts befinden sich die beiden USB-Anschlüsse, welche durch den Vinculum-Controller bereitgestellt werden. Zu jedem Anschluss gehört eine Zustands-LED. Die jeweilige LED muss nach dem Einschalten des KC85 Systems immer grün leuchten, ansonsten gibt es ein Problem mit der Betriebsspannung am USB-Anschluss.

Wenn sie beispielsweise nach dem Anstecken von USB-Geräten ausgeht, sollte man das Gerät sofort wieder entfernen, da mit hoher Wahrscheinlichkeit entweder ein Gerätedefekt vorliegt oder die zulässige Stromaufnahme für die USB+PS2-Geräte von ca. 500 mA überschritten wird.

Wenn die LED gelb leuchtet, sind Aktivitäten auf dem USB-Bus vorhanden. Dieser Zustand sollte nach dem Anstecken und Erkennen von USB-Geräten durch den Vinculum und beim Gebrauch entsprechender KC85 Programme zu sehen sein, wenn auf die USB-Geräte zugegriffen wird.



Technische Daten

Das Netzwerk & USB Modul M052 kann prinzipiell in jedem Modulsteckplatz betrieben werden, wobei jedoch die Modulpriorität in der gewählten Systemkonfiguration zu berücksichtigen ist. Die Modulprioritätskette muss geschlossen bleiben. Modulsteckplätze sind zuerst im Grundgerät ab Steckplatz 08 in aufsteigender Reihenfolge lückenlos über weitere Steckplätze in Erweiterungsaufsätzen zu belegen. Das Stecken und Entfernen des Modules darf nur im ausgeschalteten Zustand des Systems vorgenommen werden!

Das Modul M052 ist ein Hybridmodul, welches neben den I/O-Schnittstellen zusätzlich einen wiederbeschreibbaren Speicher-EEPROM enthält. Dieser Speicher ist in 4 Segmente zu je 8 kB aufgeteilt, welche für Software gedacht sind, um die im Modul vorhandenen Schnittstellen nach dem Einschalten des KC85 sofort benutzen zu können. Es kann immer nur 1 Segment in den Adressbereich der CPU eingeblendet und vom System gelesen werden, wenn kein anderer Speicherblock intern oder in anderen Modulen höher priorisiert ist.

Das M052 hat im KC-System vier Betriebszustände:

INAKTIV Modul-LED leuchtet nicht, I/O und ROM sind vom System getrennt
I/O AKTIV Modul-LED leuchtet rot, falls es die Modulpriorität erlaubt, können über die aktivierten Schnittstellen Daten gesendet und/oder empfangen werden
ROM AKTIV
Modul-LED leuchtet grün, falls es die Modulpriorität erlaubt, kann vom System das aktivierte ROM-Speichersegment gelesen werden
I/O und ROM AKTIV
Modul-LED leuchtet gelb, falls es die Modulpriorität erlaubt, können über die aktivierten Schnittstellen Daten gesendet und/oder empfangen und vom System das aktivierte ROM-Speichersegment gelesen werden


Der gewünschte Betriebszustand wird über das CAOS-Kommando "SWITCH mm kk" oder von Anwendungsprogrammen mit CAOS-UP 26H eingestellt. "mm" gibt den Modulschacht des KC-Systems an, wo das M052 gesteckt ist und "kk" das Steuerbyte für den gewünschten Betriebszustand. Mit dem Kommando "SWITCH mm" kann das aktuelle Steuerbyte des Modules ausgelesen und auf dem Bildschirm angezeigt werden.

Das Modul besitzt das charakteristische Strukturbyte 0FDH und wird dadurch wie ein logisches Speichermodul vom Gesamtsystem gesehen. Das bedeutet beispielsweise, dass es ab CAOS 4.3 vom Kommando "JUMP FC" automatisch deaktiviert wird, so dass die PC-Betriebsart problemlos gestartet werden kann.

In der nachfolgenden Tabelle werden das Strukturbyte und der genaue Aufbau des Steuerbytes zusammenfassend dargestellt, eine Deaktivierung des kompletten Modules ist wie üblich durch das Kommando "SWITCH mm 0" möglich:

Strukturbyte:
0FD H (Modulkennung)
Steuerbyte: Bit 7 6 5 4 3
2
1
0
Bedeutung
ROM ROM AKTIV
X nicht verwendet
I/O
I/O AKTIV
S S Segment-Nummer 0 bis 3
A A A ROM-Basisadresse in 8 kB Schritten


Damit Programme, welche sich im eingebauten EEPROM befinden, im CAOS-Menü aufgelistet und gestartet werden können, muss das richtige Segment ab Adresse 0C000H in den Speicher des Systems eingeblendet und aktiviert werden. Es kann immer nur auf ein 8 kB Segment zugegriffen werden, die 4 Segmente sind demzufolge wie ein Stapel im Speicher angeordnet.

Der KC85/3 aktiviert auf 0C000H standardmässig den BASIC-Interpreter, welcher mit SWITCH 2 0 ausgeschaltet werden muss. Da er eine höhere Priorität als der Speicher des M052 hat, überdeckt er sonst die EEPROM-Segmente.

Das Steuerbyte legt die Basisadresse in Bit 5-7 (zur Zeit für alle Programme immer 0C000H) und das gewünschte Segment in Bit 3-4 fest. Der ROM selbst wird in Bit 0 aktiviert. Daher ist stets nur ein SWITCH-Befehl notwendig, um die auf das M052 bezogen notwendigen Voraussetzungen für den Start der Programme zu erfüllen.

Die folgende Aufstellung zeigt die momentan 4 sinnvollen Kombinationen des Steuerbytes für eine Aktivierung, einmal mit I/O und einmal ohne I/O, in der Regel stellen sich die Programme den I/O-Zustand selbst richtig ein, so dass man sich als Anwender um das Bit 2 des Steuerbytes keine Gedanken machen muss.

Segment ROM aktiv ab 0C000H und I/O nicht aktiv
0 C1 1100 0001
1 C9 1100 1001
2 D1 1101 0001
3 D9 1101 1001
ROM aktiv ab 0C000H und I/O aktiv
0
C5 1100 0101
1 CD 1100 1101
2 D5 1101 0101
3 DD 1101 1101


Die Verteilung von Software auf die einzelnen Segmente ist prinzipiell egal, da durch die identische Basisadresse alle Programme in jedem Segment funktionieren. Im Interesse eines einheitlichen Steuerbytes sollte die nachfolgende Zusammenstellung allerdings beibehalten werden!

Das EEPROM-Segment 0 enthaelt die USB-Software, die Segmente 1 bis 3 werden in der ersten Version der Modulsoftware mit
CAOS-Programmen fuer das Netzwerk beschrieben. Daraus ergeben sich dann die folgenden Steuerbytes, wenn man eine bestimmte Funktionalität benutzen möchte:

USB - Software in Segment 0 :
SWITCH Modulschacht C1
Netzwerkkonfiguration in Segment 1 :
SWITCH Modulschacht C9
PING - Programm in Segment 2 :
SWITCH Modulschacht D1
TFTP - Software in Segment 3 :
SWITCH Modulschacht D9


Für das Beschreiben des EEPROM's steht das CAOS-Programm EEPROM.KCC von Mario Leubner zur Verfügung, damit kann die Software direkt mit einem KC85 in das Modul gebracht werden, so dass man keine externen Geräte benötigt. Genauso lässt sich später alles erneuern, wenn es verbesserte oder andere Versionen bzw. Programme für das Modul geben sollte.

Eine Schritt für Schritt Anleitung für das "Brennen" mit einem KC85 ist in der Software-Dokumentation zur Netzwerk-Software enthalten.



USB

Um den USB-Controller per Software ansprechen zu können, enthält das M052 eine Z80-PIO für die parallele Ein- und Ausgabe von Daten, welche für die bidrektionale Betriebsart (Mode 2) programmiert werden muss. Kanal A wird sowohl für die Byteausgabe als auch Byteeingabe der Daten zum/vom VNC1L verwendet. Kanal B muss dann im Bitbetrieb (Mode 3) genutzt werden und steuert mit den Leitungen an Bit 0-3 den Datenverkehr entsprechend der Vorgaben des parallelen FIFO-Protokolls laut VNC1L-Datenblatt. Die USB-PIO kann voll interruptgesteuert im KC-System betrieben werden.

Für die USB-PIO sind die folgenden I/O-Adressen im KC85 System reserviert:

I/O Adresse PIO Kanal Bedeutung
2C H
A Datenwort
2D H
B
Datenwort
2E H
A
Steuerwort
2F H
B
Steuerwort


Detaillierte Angaben zur Programmierung des KC85, den vorgeschriebenen Übertragungsprotokollen der Hardware und zur Programmierung des USB-Controllers kann man beispielsweise den folgenden Quellen entnehmen:

  • Datenblatt der Z80-PIO bzw. entsprechende Fachliteratur
  • Datenblatt des VDIP2 (Vinculum VNC1L Prototyping Module) von www.vinculum.com
  • Datenblatt des Vinculum VNC1L (Embedded USB Host Controller IC) von www.vinculum.com
  • Vinculum Firmware User Manual von www.vinculum.com
  • Beispielprogramme (application notes) der Firma FTDI für den VNC1L von www.vinculum.com
  • Quelltexte der USB-Software für das M052 im Downloadbereich.

Der VNC1L ist ein hochkomplexes Bauteil, welches intern ein komplettes Mikroprozessorsystem mit CPU, 64 kB E-FLASH-Speicher, 4 kB RAM, einen numerischen Co-Prozessor für beschleunigte 32-Bit Arithmetik sowie einen dualen DMA-Controller enthält. Er wickelt für den KC85 das komplette USB-Protokoll einiger ausgewählter USB-Geräteklassen ab.

Da intern die Hardware nicht fest verdrahtet ist, sondern wiederum von einer integrierten Software - der Firmware des VNC1L - gesteuert wird, bestehen dort verschiedene Möglichkeiten. Erstens gibt es unterschiedliche Firmware-Pakete, welche die beiden USB-Anschlüsse mit verschiedenen Funktionalitäten ausstatten und zweitens kann diese Firmware durch das Einspielen einer neuen Version auch aktualisiert werden.

Im VDIP2 des M052 verwenden wir das sogenannte VDAP-Firmwarepaket ('V'inculum 'D'isk 'A'nd 'P'eripherals), welches am universellsten ausgelegt ist und vor allem für den Betrieb des VNC1L als Hostcontroller für Flash-Speicher (USB-Stick u.ä.) und für allgemeine USB Peripherie-Geräte gedacht ist.

Um eine Aktualisierung der VDAP-Version durchzuführen, kopiert man einfach die neue Image-Datei (festgelegten Namen für Updatedatei beachten) von FTDI in das Hauptverzeichnis des USB-Sticks und steckt ihn am M052 an - der Aktualisierungsvorgang läuft dann vollkommen automatisch an und ab.

Ein KC85-Programm kann nun mit Hilfe der PIO der VDAP-Firmware Befehle erteilen und damit beispielsweise Daten zu USB-Geräten schicken bzw. von ihnen lesen. Die verfügbaren Befehle und Parameter stehen im Handbuch der Firmware und die allgemeine Vorgehensweise wurde von Mario in den Projektartikeln zum USB-Projekt bereits erklärt.

Das Thema USB-Stick bzw. allgemein die USB Geräteklasse "BOMS" ist durch seine Software sowohl unter CAOS als auch CP/M bereits erledigt und solche USB-Geräte können sofort mit einem M052 komfortabel als externe Datenträger benutzt werden. Es gibt dort zwar einige Bedingungen zu beachten aber die Masse der preiswerten USB-Sticks sollte problemlos funktionieren:

  • Dateisystem FAT12, FAT16 oder FAT32
  • Sektorgrösse 512 Byte
  • BOMS Geräte müssen den SCSI- oder AT-Kommando-Befehlssatz unterstützen
  • bei Geräten mit mehreren logischen Gerätenummern (LUNs) wird nur die primäre LUN 0 unterstützt, das kann beispielsweise bei den USB-Kartenlesern mit mehreren Kartenschächten auftreten
  • der VNC1L kann nur auf die primäre Partition eines Massenspeichers zugreifen.

Die VDAP Firmware und damit auch das M052 bietet aber noch viel mehr Möglichkeiten, wenn entsprechende Software für den KC85 entwickelt wird. Dafür gibt es die folgende Tabelle im Firmwarehandbuch:

USB Anschluss M052 1 (links)
2 (rechts)
BOMS (Bulk Only Mass Storage) Nein
Ja
FTDI (FTDI Peripheral IC's)
Ja Ja
HID (Human Interface Device) Ja Ja
PRINTER Ja Ja
HUB Ja Ja
CDC (Communication Device Class) Ja Ja


Wie man dieser Tabelle entnehmen kann, sollte der VNC1L mit der VDAP-Firmware an der linken (1) oder rechten (2) Buchse beliebige USB-Geräte der angegebenen Klassen erkennen - ausser bei der BOMS-Klasse !!! Man sollte daher USB-Sticks oder ähnliche Datenträger auch nur an der rechten Buchse betreiben - auch wenn die Anschlüsse gleich aussehen, sind sie es durch die dahinter liegende Technik nicht ganz!

Damit kann man nun sicherlich auch erkennen, dass der verwendete USB-Controller noch viel Luft nach oben lässt, um andere Geräte per USB auch mit einem KC85 betreiben zu können. Dafür wird natürlich auch immer entsprechende Software im KC85 System benötigt, welche sich nicht von allein entwickelt, die technische Grundlage ist aber mit dem M052 jetzt vorhanden.

Abschliessend noch 2 Bilder aus der Testphase der beiden Prototypen. Da Mario für den Test nur ein VDIP1-USB-Modul zur Verfügung hatte, gab es von Enrico noch etwas Spezialhardware onboard dazu - die entfällt mit VDIP2 natürlich!

M052 USB-Test





M052 USB-Test




 


Netzwerk

Grundlage für die Netzwerkschnittstelle des M052 bildet das Projekt "KCNET", welches im Projektbereich der Website ausführlich beschrieben wird. Das M052 enthält dafür eine zweite PIO, an der die KCNET-Hardware angeschlossen ist, welche sich nun auf der Modulplatine befindet.

Genauso wie bei der USB-Ankopplung erfolgt über die Z80-PIO die parallele Ein- und Ausgabe von Daten. Kanal A wird wieder bidirektional für die Byteaus- und Eingabe der Daten zum/vom KCNET verwendet. Kanal B muss wieder im Bitbetrieb programmiert werden.

Wenn die PIO-Kommunikation im Polling erfolgt, kann die KC Software mit Bit 0 bzw. 7 von Kanal B das Handshake der Aus- bzw. Eingabe von Datenbytes abwickeln. Mit der Ausgabe eines Datenbyte über Kanal A zum KCNET wird Bit 0 von Kanal B gesetzt und nach der Übernahme des Byte durch das KCNET zurückgesetzt, anschliessend kann der KC das nächste Byte ausgeben. Der Empfang eines Datenbyte vom KCNET wird durch ein gesetztes Bit 7 von B signalisiert. Nachdem die KC Software Kanal A gelesen hat, wird Bit 7 von B wieder 0 und das KCNET kann das nächste Byte senden.

Die KCNET-PIO kann aber auch voll interruptgesteuert im KC-System betrieben werden. Der Quelltext des CP/M Treibers NETKI.MAC für das D001 zeigt eine mögliche Programmierung für die PIO-Kommunikation per Interrupt.

Für die KCNET-PIO sind die folgenden I/O-Adressen im KC85 System reserviert:

I/O Adresse PIO Kanal Bedeutung
28 H
A Datenwort
29 H
B
Datenwort
2A H
A
Steuerwort
2B H
B
Steuerwort


Detaillierte Angaben zur Programmierung der Z80-PIO und der KC85 Netzwerkschnittstelle kann man den folgenden Quellen entnehmen:

  • Datenblatt der Z80-PIO bzw. entsprechende Fachliteratur
  • KCNET-Protokoll als PDF-Dokument im Downloadbereich (Beschreibung der zulässigen Befehle und Parameter der Hardware-Schnittstelle des KCNET)
  • Assembler Include-Datei M052NET.INC (CAOS-Treiber für KCNET-Schnittstelle des M052 mit Polling)
  • Assembler Include-Datei NETKP.MAC (CP/M Koppel-Treiber D001 für KCNET-Schnittstelle des M052 mit Polling)
  • Assembler Include-Datei NETKI.MAC (CP/M Koppel-Treiber D001 für KCNET-Schnittstelle des M052 mit Interrupt)
  • Assembler Include-Datei NETDP.MAC (CP/M DRV-Treiber D001 für KCNET-Schnittstelle des M052 mit Polling)
  • Assembler Include-Datei W5100-xx.INC (allgemeiner Z80 TCPIP- und Socket-Treiber für das KCNET-Interface)
  • Assembler Include-Datei DNSC-xx.INC (allgemeiner Z80 DNS-Client nach RFC 1034 für das KCNET-Interface)
  • Datenblatt des WIZnet W5100 (Hardware TCPIP-Stack) von www.wiznet.co.kr
  • Beispielprogramme (application notes) der Firma WIZnet für den W5100 von www.wiznet.co.kr (zu finden im Bereich LIBRARY -> DOWNLOAD CENTER der Website)
  • Quelltexte der Netzwerk-Software für das M052 im Downloadbereich.


Der Hardware TCPIP-Stack W5100 ist fest verdrahtete Hardware und kann im Gegensatz zum USB-Controller auch nicht aktualisiert werden.

Der AVR-Controller ATmega 162 des KCNET-Interface enthält keinerlei Netzwerksoftware, er hat im Wesentlichen 2 Hauptaufgaben. Einerseits realisiert er die einfache Ankopplung an ein beliebiges Z80-System mit Hilfe einer PIO. Die Software im AVR implementiert dazu das Handshake Protokoll einer Z80-PIO direkt, so dass auf der Z80 Seite kein weiterer Aufwand erforderlich wird. Zweitens dient er als "verlängerte Werkbank" des Z80-Systems, indem er Lese- und Schreibbefehle des Z80 auf den TCPIP-Stack vollkommen transparent 1:1 weiterleitet.

Auf diese Art und Weise kann der KC85 den W5100 vollkommen frei programmieren, als ob er direkt am Systembus angeschlossen wäre. Sämtliche Software für die Nutzung der TCPIP-Funktionalitäten des W5100 läuft daher im Z80 System und mittlerweile ist die Programmierung der Basis-Software für den Betrieb des KC85 im TCPIP-Netzwerk per Ethernet abgeschlossen.

Der KC verfügt über ein getestetes dreistufiges Treibersystem zur Programmierung von Netzwerkprogrammen auf der TCP/UDP-Transportschicht eines TCPIP-Stacks unter CAOS oder CP/M. Die logische Schnittstelle bilden die von anderen Betriebssystemen bekannten Socket-Funktionen, welche vom High-Level-Treiber zur Verfügung gestellt werden.

Zum heutigen Zeitpunkt steht fertige Netzwerksoftware für die Konfiguration der Netzwerk-Einstellungen, ein PING-Programm und TFTP-Software für die Datenübertragung im lokalen Netzwerk zur Verfügung. Unter CAOS befinden sich diese Programme direkt im EEPROM des M052, unter CP/M werden sie von der Kommandozeile als normale COM-Programme gestartet.

Speziell für den Test der Netzwerkschnittstelle gibt es auch noch ein Programm für CAOS oder CP/M, welches bei Problemen zahlreiche Test-Funktionen auf allen drei Treiberebenen zur Verfügung stellt. Damit sollte der Aufbau und die Inbetriebnahme der Netzwerk-Hardware des M052 schnell und einfach zu erledigen sein.

Mit einem frei programmierbaren TCPIP-Stack stehen dem KC85 System damit theoretisch alle Möglichkeiten offen, wie sie von anderen Betriebssystemen bekannt sind. Praktisch sind natürlich nur Netzwerkanwendungen bzw. Dienste sinnvoll, welche mit einem Z80, 64 kByte RAM und 4 gleichzeitig nutzbaren Sockets (Hardware-Limit des W5100) programmierbar sind.

Viele Standard RFC-Netzwerk-Protokolle basieren auf einem Austausch von einfachen Textnachrichten, das ist auch für den KC85 kein Problem. Das Netzwerk lässt sich auch für eigene Kreationen benutzen, denn Ethernet ist sehr schnell. Die Übertragungsgeschwindigkeit der Schnittstelle im M052 beträgt Brutto auf dem TCP/UDP-Layer fast 30 kByte pro Sekunde!

Da Netzwerk-Protokolle in der Regel systemunabhängig sind, eröffnet das M052 dem KC85 System eine universelle Möglichkeit zu kommunizieren. Das trifft auf alle Teilnehmer eines TCPIP-Netzwerkes zu, welche das gleiche Protokoll beherrschen. Wenn es ein funktionierendes KC85-Programm für ein bestimmtes Netzwerk-Protokoll gibt, kann man mit allen Netzwerk-Teilnehmern, per Internet auch weltweit, kommunizieren. Die TFTP-Software ermöglicht beispielsweise einen Datenaustausch mit Windows-PC's, Linux-PC's, Unix-PC's UND AUCH ANDEREN KC85-Systemen mit M052 (als TFTP-Server zur Zeit nur unter CP/M).

Auch vom Test des anderen Prototypen dann noch zwei Fotos, wo er zum Beispiel gerade zeigen muss, ob dass Handshake zwischen PIO und KCNET auch richtig funktioniert.

M052 Netzwerk-Test





M052 Netzwerk-Test



 

 


Aufbau

Wie schon geschrieben, wurde die letzte Änderung an der Modul-Hardware der Prototypen zum KC-Clubtreffen 2009 durchgeführt und getestet. Damit ist das M052 fertig und es wurde bereits eine erste Kleinserie für alle Interessenten aufgelegt.

Die Unterlagen zur Hardware des Modules mit Stromlaufplan und Stückliste befinden sich im Downloadbereich.

Durch die dichte Bestückung, einige spezielle Bauteile und die fertigen Module für USB und Netzwerk, welche leider angepasst werden müssen, ist der Aufbau des Gesamtmodules etwas schwieriger aber immer noch mit den üblichen Hilfsmitteln des Hobby-Elektronikers problemlos zu schaffen.

Das Ziel, ohne SMD-Bauteile auszukommen, konnten wir durch die letzte Änderung mit dem Strombegrenzer-IC leider nicht erreichen. Dort gab aber letztlich den Ausschlag, dass die Betriebssicherheit des Gesamtsystems wichtiger ist. Wenn beispielsweise ein USB-Gerät so viel Strom zieht, dass die 5V einbrechen, stürzt leider auch der KC85 ab und das sollte nicht passieren! Diesen IC gibt es leider nur als SMD-Bauteil - es ist aber auch das Einzige.

Für die Besonderheiten und empfohlene Reihenfolge bzw. Vorgehensweise bei der Bestückung gibt es eine Bau- und Montageanleitung. Man sollte sich auf alle Fälle genügend Zeit einplanen und nicht hektisch vorgehen, bei Enrico haben die beiden ersten Prototypen auf Anhieb funktioniert!

Problematisch könnte für manche Interessenten das Entlöten der Buchsen von den beiden Fertigmodulen werden. Das sind Multilayer-Leiterplatten, welche auf keinen Fall beschädigt werden dürfen. Die Module sind leider auch nicht ganz billig, immerhin machen sie fast die Hälfte des Bausatzpreises aus. Wer sich das also nicht zutraut, sollte fremde Hilfe in Anspruch nehmen.

Ein weiteres, leider nicht vermeidbares Problem, wird durch die (standardisierte) Bauhöhe der Buchsen für das Ethernet und USB hervorgerufen. Die Buchsen sind für die Innenhöhe des Modulgehäuses etwa 0,5 mm bis knapp 1 mm zu hoch.

Man muss also beim Oberteil ein Stück herausfräsen bzw. feilen, also von innen her die Wandung etwas dünner machen, sonst
würde das Modul-Gehäuse zu stark beulen und nicht mehr in den Modulschacht des D00x-Gerätes passen. Enrico hat das ausprobiert und es hat ganz gut geklappt.

Ganz wichtig ist auch noch der folgende Hinweis - eine Lieferung von Komplett-Bausätzen schliesst natürlich NICHT das schwarze KC85 Modul-Gehäuse ein. Dafür sollte man ein vielleicht noch vorhandenes Leergehäuse zur Verfügung haben oder das Gehäuse von einem nicht mehr benutzten anderen KC-Modul dem M052 überlassen können.

Wer den Aufbau dann fehlerfrei so weit schafft, wie auf dem folgenden Foto, ist stolzer Besitzer und hoffentlich auch Anwender des M052 mit seinem eigenen KC85 System!

M052 Prototyp Zwillingspaar