Parallelschnittstellen (LPT-Ports): SPP - EPP - ECP
SPP: Standard Parallel Port
-------------------------------------------------------------------------
Spezifikationen:
4 Kontrolleitungen STROBE, AUTOFEED, SELECTIN, INIT (Ausgang)
5 Statusleitungen ACK, BUSY, PAPER EMPTY, SELECT, ERROR (Eingang)
8 Datenleitungen D0-D7 (Ausgang)
Der SPP stellt den Parallelport dar, wie ihn IBM 1981 für den PC
ausgewiesen hat. Die Datenausgabe über die Datenleitungen D0-D7 sind
unidirektional, also nur in eine Richtung definiert. Mit dem SPP sind
nur folgende Betriebsarten (nach IEEE1284) möglich:
COMPATIBLE MODE:
Dieser Modus stellt die 8bit Parallelübertragung gemäß den
Spezifikationen von IBM dar, der den Betrieb von reinen Ausgabegeräten
wie z.B. Druckern oder Plottern erlaubt, die als Rückmeldung gerade
mal die nötigsten Meldungen durch Signalleitungen zur Verfügung haben.
Damit werden die wesentlichen Signale der CENTRONICS-Schnittstelle
abgedeckt.
NIBBLE MODE:
Um wenigstens eine halbwegs schnelle Bidirektionalität des eigentlich
unidirektionalen SPP herzustellen fielen Programmierer auf den Trick
zurück, die 5 Statusleitungen (Eingang) der SPP zum Datenaustausch
zweckzuentfremden. Vier Statusleitungen werden als Dateneingang
verwendet. Daraus resultiert eine 4bit (=Nibble) Parallelübertragung von
der Peripherie zum Host (Rückwärtskanal) und eine 8bit (=Byte) Parallel-
übertragung vom Host zur Peripherie (Vorwärtskanal).
ANMERKUNG: Eine ähnliche Vorgehensweise wie beim IEEE1284-Nibblemode
wurde auch bei Programmen wie INTERLINK/LAPLINK/KIRSCHBAUMLINK
bewerkstelligt, mit dem Unterschied, daß hier auch beim
Vorwärtskanal eine 4bit (=Nibble) Parallelübertragung ge-
wählt wurde. Damit wird dem Rechnung getragen, daß die
Gegenstelle (ebenfalls ein PC mit SPP) ja auch nur 4 Eingangs-
leitungen vorweisen kann. Somit reduziert sich auch der
Leitungsaufwand beim INTERLINK-Kabel.
BYTE MODE:
Bei späteren Ausführungen des SPP statteten einige Hersteller, angeführt
von IBM bei seinen PS/2-Modellen, die SPP mit bidirektionalen
Datenleitungen aus. Dadurch wurde auch auf dem derart erweiterten SPP
eine 8bit (=Byte) Parallelübertragung möglich. Hierfür werden keine
Steuerleitungen mehr als Datenleitungen bequemt.
-------------------------------------------------------------------------
EPP: Enhanced Parallel Port
-------------------------------------------------------------------------
Spezifikationen:
4 Kontrolleitungen WRITE, DATASTB, ADDRSTB, RESET (Ausgang)
5 Statusleitungen INTR, WAIT, USER DEF, USER DEF, USER DEF (Eingang)
8 Adress-/Datenleitungen D0-D7 (Ein+Aus)
- Handshake mit eigener Hardware. Nur ein Portzugriff pro uebertragenem
Byte. (Und nicht vier bis sechs 8-bittige Zugriffe wie sonst.)
- Busy-Signal hat gleiche Funktion wie IOCHRDY am ISA-Bus und kann Waits
direkt am Prozessor einleiten (Time-Out erforderlich).
- Ueber Address-Strobe 256 verschiedene Geraete adressierbar.
- 32bittige Schreibzugriffe auf den Port moeglich.
- Schnelle Adressierung ueber Local Bus und CMOS-Pegel statt OpenCollector
bei den Steuerleitungen (von den Denkvaetern des EPPs) empfohlen.
vier Arten von Datenübertragungszyklen:
* Data Write Cycle
* Data Read Cycle
* Adress Write Cycle
* Adress Read Cycle
Das EPP-Protokoll wurde von Intel, Xircom und Zenith Data Systems
entwickelt und stellt eine Hochgeschwindigkeits-Parallelschnittstelle
dar, welche sich aber noch mit SPP verträgt. Dieses Protokoll wurde
von Intel in den 386SL (82360 I/O Chip) implementiert und schließlich
zum IEEE1284-Standard erhoben. Bleibt anzumerken, daß es bei EPP leider
zwei Versionen gibt: Eine ältere EPP V1.7 und die neuere EPP-1284.
Eine Peripherie nach EPP-1284 arbeitet sauber an einem EPP V1.7 Host,
leider aber eine EPP V1.7 Peripherie nicht am EPP-1284 Host !
Die zusätzlichen EPP-Register können durch BASE + 03h, +04h, +05h
adressiert werden. (BASE= 3BCh, 378h oder 278h). Mittels EPP können
Datenraten von 500KB/s bis zu 2MB/s erreicht werden.
-------------------------------------------------------------------------
ECP: Extended Capability Port
-------------------------------------------------------------------------
Spezifikationen:
4 Kontrolleitungen HOSTCLK, HOSTACK, 1284ACTIVE, REVERSEREQUEST (Ausgang)
5 Statusleitungen PERIPHCLK, PERIPHACK, ACKREV, XFLAG, PERIRQ (Eingang)
8 Adress-/Datenleitungen D0-D7 (Ein+Aus)
- 16-Byte-FIFO mit Interrupt und DMA-Moeglichkeiten.
- schnelles Hardware-Handshake.
- mehrere Geraete adressierbar.
- Daten-Komprimierung nach RLE-Verfahren unterstuetzt.
zwei Arten von bidirektionalen Datenübertragungszyklen:
* Data Cycles
* Command Cycles
Das ECP-Protokoll wurde von Hewlett Packard und Microsoft als
modifizierte Kommunikation zwischen Druckern und Scannern ausgewiesen.
Genau wie das EPP-Protokoll unterstützt ECP eine Hochgeschwindigkeits-
Parallelübertragung zwischen Host-Adapter und Peripherie.
Ferner sieht ECP einen eigenen DMA-Kanal vor, FIFO-Pufferung für Hin-
und Rückkanal und Datenkompression nach dem Run_Lenght-Encoding (RLE)
Verfahren. Die zusätzlich erforderlichen ECP-Register können durch
aufaddieren von 400h auf die Basisadressen (3BCh, 378h oder 278h)
adressiert werden.
-------------------------------------------------------------------------
+------------+-------------+------------+------------+------------+-----+
| SPP-Signal | NIBBLE-Mode | BYTE-Mode | EPP-Signal | ECP-Signal | I/O |
+------------+-------------+------------+------------+------------+-----+
|nSTROBE |nSTROBE | HOSTCLK |nWRITE | HOSTCLK | out |
|nAUTOFEED | HOSTBUSY | HOSTBUSY |nDATASTB | HOSTACK | out |
|nSELECTIN | 1284ACTIVE | 1284ACTIVE |nADDRSTB | 1284ACTIVE | out |
|nINIT |nINIT |nINIT |nRESET |nRESERVERQ | out |
|nACK | PTRCLK | PTRCLK |nINTR | PERIPHCLK | in |
| BUSY | DATA b3+b7 i| PTRBUSY |nWAIT | PERIPHACK | in |
| PAPEREMPTY | DATA b2+b6 i| ACKDATAREQ | USER DEF |nACKREVERSE | in |
| SELECT | DATA b1+b5 i| XFLAG | USER DEF | XFLAG | in |
|nERROR | DATA b0+b4 i|nDATAAVAIL | USER DEF |nPERIPHRQ | in |
+------------+-------------+------------+------------+------------+-----+
| DATA b0 out| DATA b0 out| DATA b0 i/o| ADR/DATA b0| ADR/DATA b0| i/o |
| DATA b1 out| DATA b1 out| DATA b1 i/o| ADR/DATA b1| ADR/DATA b1| i/o |
| DATA b2 out| DATA b2 out| DATA b2 i/o| ADR/DATA b2| ADR/DATA b2| i/o |
| DATA b3 out| DATA b3 out| DATA b3 i/o| ADR/DATA b3| ADR/DATA b3| i/o |
| DATA b4 out| DATA b4 out| DATA b4 i/o| ADR/DATA b4| ADR/DATA b4| i/o |
| DATA b5 out| DATA b5 out| DATA b5 i/o| ADR/DATA b5| ADR/DATA b5| i/o |
| DATA b6 out| DATA b6 out| DATA b6 i/o| ADR/DATA b6| ADR/DATA b6| i/o |
| DATA b7 out| DATA b7 out| DATA b7 i/o| ADR/DATA b7| ADR/DATA b7| i/o |
+------------+-------------+------------+------------+------------+-----+
| Legende: "n" steht für active-low Signal, "i" = in, "o" = out |
+-----------------------------------------------------------------------+
Tab.1: Signalvariationen der LPT-Schnittstellen und LPT-Modi
+-----------------------------------------------------------------------+
| NIBBLE Mode Signals |
+----------------+------------------------------------------------------+
|nSTROBE | wird nicht benutzt bei rückwärtigem Datentransfer |
| HOSTBUSY | Host Handshake: low=Ready for Nibble, high=Received |
| 1284ACTIVE | high=Host ist in 1284 Transfermodus |
|nINIT | wird nicht benutzt bei rückwärtigem Datentransfer |
| PTRCLK | low=gültiges Nibble, high=Antwort auf HOSTBUSY=high |
+----------------+------------------------------------------------------+
| BYTE Mode Signals |
+----------------+------------------------------------------------------+
| HOSTCLK | low-Puls nach dem Empfang eines Bytes (ACKNOWLEDGE) |
| HOSTBUSY | Host Handshake: low=Ready for Nibble, high=Received |
| 1284ACTIVE | high=Host ist in 1284 Transfermodus |
|nINIT | wird nicht benutzt, daher auf high gesetzt |
| PTRCLK | low=gültiges Nibble, high=Antwort auf HOSTBUSY=high |
| PTRBUSY | Vorwärtskanal BUSY-Status |
| ACKDATAREQ | folgt nDATAAVAIL |
| XFLAG | Extensibility FLAG, wird im Byte Mode nicht benutzt |
|nDATAAVAIL | setzt Peripherie auf low und zeigt daß BYTE anliegt |
+----------------+------------------------------------------------------+
| EPP Mode Signals |
+----------------+------------------------------------------------------+
|nWRITE | low=Schreiboperation, high=Leseoperation |
|nDATASTB | zeigt Daten Lese-/Schreiboperation an |
|aADDRSTB | zeigt Adress Lese-/Schreiboperation an |
|nRESET | Peripherie RESET |
|nINTR | INT-Leitung der Peripherie löst im Host IRQ aus |
|nWAIT | Handshake, low=Zyklus kann beginnen, high=kann enden |
| USER DEF | kann individuell von der Peripherie benutzt werden |
+----------------+------------------------------------------------------+
| ECP Mode Signals |
+----------------+------------------------------------------------------+
| HOSTCLK | zusammen mit PERIPHACK zum Adress-/Datentransfer |
| HOSTACK | zusammen mit PERIPHCLK zum Kommando-/Datentransfer |
| 1284ACTIVE | high=Host ist in 1284 Transfermodus |
|nREVERSEREQUEST | low=rückwärtige Transferrichtung, high=vorwärtige |
| PERIPHCLK | zusammen mit HOSTACK für rückwärtige Transfers |
| PERIPHACK | Adress-/Daten vorwärts, Kommando-/Daten rückwärts |
|nACKREVERSE | low=Bestätige nREVERSEREQUEST (ACKNOWLEDGE) |
| XFLAG | Extensibility FLAG |
|nPERIPHREQUEST | setzt Peripherie auf low und zeigt daß BYTE anliegt |
+----------------+------------------------------------------------------+
| Legende: "n" steht für active-low Signal |
+-----------------------------------------------------------------------+
Tab.2: Signalarten und Klartextaufschlüsselung der LPT-Modi
Fragen oder Kritik richten Sie bitte privat an: tramp@pipeline.rhein-neckar.de
TRAMP findet man in folgenden NewsGroups: de.comp.sys.ibm-pc und z-netz.rechner.ibm.hardware
zurück zur TRAMPs Info Homepage