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
Impressum nach § 5 TMG