Intelligenter Modemadapter für den PC

Jürgen Hasch, DG1SCR, Meisenstr. 23, 73066 Uhingen

Motivation

Möchte man an einem PC mehrere Modems betreiben, so hat man die Wahl zwischen einer quasi-passiven Lösung wie der USCC-Karte oder externen TNCs, die mittels serieller Schnittstelle angeschlossen werden. Bei hohen Datenraten stoßen beide Möglichkeiten an ihre Grenzen, denn entweder steigt die zur Bedienung der Modemports benötigte Rechenleistung stark an oder man bekommt die Daten gar nicht mehr über die relativ langsame serielle Schnittstelle übertragen. Deshalb wurde eine Möglichkeit gesucht, den Prozessor des PCs zu entlasten und trotzdem mehrere Modems betreiben zu können.

Von Zilog ist seit einiger Zeit ein „Intelligent Peripherial Controller“, der Z80182 erhältlich. Er gaukelt dem PC eine serielle Schnittstelle mit FIFO vor, so daß die Kompatibiltät zu bestehenden Anwendungen gewahrt bleibt. Auf der anderen Seite besitzt er einen ESCC, der eine schnelle synchrone Schnittstelle zur Verfügung stellt.

Durch entsprechende Treibersoftware ist zusätzlich eine Datenübertragung per DMA möglich, womit eine weitgehende Entlastung des PCs ermöglicht wird.

Der Z80182

Der Kern des Z80182 basiert auf einer Z180 CPU, ist also eine 8 Bit CPU. Der Befehlssatz entspricht dem eines Z80, jedoch ist die Rechenleistung etwa 20% höher (was immer noch keine Hochleistungs-CPU ergibt...). Der Systemtakt ist kann je nach Type zwischen 20MHz und 33MHz betragen.

Der physikalische Adressraum ist 1MByte groß, also viel größer als die Z180-CPU mit ihrer 16Bit-Adressierung direkt ansprechen kann. Aus diesem Grund ist eine MMU integriert, mittels derer der physikalische Adressraum in den dem Prozessor sichtbaren Adressraum von 64k Größe eingeblendet werden kann.

Durch die integrierte 16550 MIMIC kann der Z80182 direkt an den ISA-Bus eines PCs angeschlossen werden, es wird lediglich noch eine Adressdekodierung benötigt. Dem PC wird dabei eine „normgerechte“ serielle Schnittstelle vorgespielt, d.h. die Baugruppe wird als 16550 UART erkannt.

Die MIMIC besitzt den kompletten Registersatz, sowie die Interrupt-Struktur, eines 16550 UART-Bausteins. Die Datenübertragung zwischen MIMIC und PC wird durch zwei 16 Zeichen tiefe FIFOs gepuffert, der Zugriff kann von beiden Seiten aus gleichzeitig erfolgen. Der Empfänger-FIFO puffert zusätzlich auch die „virtuellen“ Status-Register, somit ist es möglich den Status transparent mit den übertragenen Daten zu verknüpfen.

Der Programmierer am PC sieht also eine „ganz normale“ serielle Schnittstelle und kann diese auch wie gewohnt programmieren. Vorteil dieser Methode ist natürlich, daß alle Programme die auf die serielle Schnittstelle aufsetzen, direkt weiterverwendet werden können.

Möchte man die Datenübertragung optimieren, kann man aber die auf maximale Kompatibilität getrimmte Linie verlassen und sich die erweiterten Möglichkeiten zunutze machen.

Da die MIMIC zum PC hin auch DMA-fähig ist können, bei entsprechender Ansteuerung, ganze Datenpakete direkt zwischen PC-Hauptspeicher und Z80182 transferriert werden. Ein PC-Treiber müsste also nur angeben, an welcher Stelle im Hauptspeicher er das nächste Datenpaket haben möchte und sobald sich der Z80182 wieder das nächste Mal (per Interrupt) meldet, ist der Datentransfer schon abgeschlossen.

Die synchrone serielle Schnittstelle (in Richtung Modem) ist durch den eingebauten ESCC-Controller gegeben. Dieser ist eine Weiterentwicklung des Z80-SIO bzw. 8530-SCC. Er besitzt einen 4 Byte tiefen Sendepuffer, einen 8 Byte tiefen Empfangspuffer und kann Datenraten bis 5MBit/s verarbeiten.

Durch die eingebaute HDLC-Unterstützung kann er HDLC-Pakete direkt verarbeiten, d.h. Flags werden automatisch erkannt und das Bitstuffing geschieht unsichtbar für den Benutzer. Die CRC-Berechnung ist ebenfalls eingebaut, so daß der Protokoll-Overhead auf ein Minumum reduziert werden kann.

Im Z80182 sind außerdem zwei 16Bit-Zeitgeber, zwei (langsame) asynchrone serielle Schnittstellen und eine Menge I/O-Ports integriert.

Mittlerweile ist auch der große Bruder des Z80182, der Z80382 verfügbar. Basierend auf dem 32Bit-Kern des Z380 integriert er drei ESCC-Kanäle, ein PNP ISA-Interface und zwei asynchrone serielle Schnittstellen. Für die hier vorgesehene Anwendung erschien der Einsatz dieses Typs jedoch überdimensioniert.

Hardware

Das Blockschaltbild zeigt die wichtigsten Komponenten der realisierten Hardware, das Schaltbild der Einsteckkarte ist in Anhang A abgebildet:

DrawObject


Abbildung 1: Blockschaltbild des Modemadapters

Wichtigstes Bauelement ist natürlich der Z80182-Prozessor. Zur Adressdekodierung bei Zugriff des PCs kommt ein GAL 20V8 zum Einsatz. Dieses sorgt außerdem für die richtige Ansteuerung der Interrupt- und DMA-Signale am ISA-Bus.

Da kein interner Speicher vorhanden ist, wird externer Speicher benötigt. Die notwendige Ansteuerlogik ist im Z80182 schon eingebaut, somit können Speicherbausteine direkt angeschlossen werden. Als RAM-Speicher wurde ein statisches RAM 628128 mit einger Größe von 128k*8 verwendet, als ROM kommt ein Flash-PROM AM29F010 in derselben Speichergröße zum Einsatz. Der Flash-Speicher ist so beschaltet, daß er in der Schaltung umprogrammiert werden kann.

Da der Z80182 im MIMIC-Betrieb nur eine ESCC zur Verfügung stellt, ist eine externe ESCC 85230 im PLCC44-Gehäuse vorgesehen, insgesamt können damit bis zu drei Modems mit synchroner serieller Schnittstelle angeschlossen werden. Die Steckerbelegung der Modem-Anschlüsse entspricht dem Standard nach [2].

Um Programmabstürzen vorzubeugen ist eine Watchdog-Schaltung mit dem LT1232 vergesehen, die alle etwa 2 Sekunden einen Impuls vom Prozessor erwartet, sonst wird auf die CPU (nicht der PC!) zurückgesetzt.

Verschiedene LEDs zeigen den aktuellen Betriebszustand (DCD, PTT) der Modem-Schnittstellen an.

Software

Zur Zeit existiert ein Download-Programm um Programme vom PC aus in den Z80182-Prozessor zu laden, ein Monitorprogramm für Debuggung-Zwecke wird gerade an die gegebene Hardware angepaßt. Die Tabelle zeigt die Befehle des Monitors:

Befehl

Beschreibung

?

Hilfe anzeigen

: <Intel hex.>

Zeile im Intel Hex-Format einlesen

B [addr [count]]

Breakpoint setzen/löschen

D [addr [length]]

Speicherinhalt anzeigen

G [addr]

Programm ausfügren

I port

Wert von IO-Port einlesen

O port

Wert in IO-Port schreiben

N [count]

Nächste n Befehle ausführen

R

Registerinhalt anzeigen



Durch die Verwendung eines Flash-Bausteins als ROM ist es möglich neue Betriebssoftware einzuspielen, ohne den PC aufschrauben zu müssen.



Ausblick

Ein Flexnet-Treiber ist im Entwurfsstadium, weitere Betriebsprogramme sind ebenfalls in der Planung. So ist eine Implementierung von 6pack oder TheFirmware denkbar, genauso wie die Emulation eines Telefonmodems (AT-Befehle). Auf aktuelle Neuigkeiten wird im Vortrag eingegangen.

Schließt man die Z80182-Karte an eine vom PC unabhängige Spannungsversorgung an, kann die Software auf der Karte weiterlaufen, auch wenn der PC abgeschaltet wird. Somit können eingehende Connects beantwortet werden, damit hat man quasi ein TNC als PC-Einsteckkarte.

Benutzt man die auf dem Prozessor integrierte asynchrone serielle Schnittstelle zur Verbindung mit dem PC, ist sogar ein Betrieb der Karte außerhalb des PCs denkbar...

Literatur

  1. Z80182 data sheet
    Zilog Inc., http://www.zilog.com

  2. W.-H. Rech: Modernes FSK-Modem - kompatibel zum Standard nach G3RUH
    ADACOM-Magazin 2/1992

Anhang A: Bestückungsplan der Prozessorkarte

Bestückungsplan
Bild der Karte

Anhang B: Schaltbild der Prozessorkarte

Schaltbild