Jste zde

HW server představuje: Paralelní port - LPT (IEEE 1284)

Soubor všech potřebných informací, návody, tipy a triky, katalogové listy aj.

Obsah

Úvod

Paralelní port LPT je standardní součástí běžných počítačů PC pro paralelní komunikaci (paralelní přenos bitů signálu) s periferiemy pomocí 17 digitálních linek, které lze rozdělit na 8 datových signálů a 9 signálů pro řízení komunikace (handshaking) . PC s periferií lze spolehlivě propojit na vzdálenost 2m, v praxi lze komunikovat i na vzdálenost max. 5m, při správném stínění datových vodičů komunikačního kabelu.

Původně byl paralelní port pro PC účelově vytvořen pro komunikaci s tiskárnou, tedy jednosměrný přenos dat od PC do tiskárny. Později však byl dalšími módy uzpůsoben i pro obousměrný přenos dat rychlostí až jednotek MB/s. Paralelní port byl v roce 1994 standardizován pod IEEE 1284. Tento standard definuje 5 módů činnosti:  

1. SPP mode - Compatibility Mode (Centronics mode).
2. Nibble Mode.
3. Byte Mode.
4. EPP Mode (Enhanced Parallel Port).
5. ECP Mode (Extended Capabilities Mode).

Zapojení konektorů pro LPT

Pro paralelní port se nejčastěji používají 2 typy konektorů:

  • 25 pin D-sub female konektor (obrázek 1.), který je dnes obvykle součástí základní desky PC
  • 36 pin Centronics female konektor, který se obvykle vyskytuje na tiskárnách a jiných periferních zařízeních.

V tabulce 1. je popis jednotlivých pinů, signálů, které je reprezentují, a příslušnost k danému ovládacímu registru PC (Data, Status, Control) obou konektorů. Ve standardu IEEE 1284 definuje dále 36 pinový port podobný Centronics, ale menších rozměrů.

Obr. 1. Přiřazení signálů LPT portu 25 pinovému D-SUB konektoru
 
Pin číslo
(D-Sub)
Pin číslo
(Centronics)
Signál
Směr In/out
Registr
Hardverově invertovaný
1
1
nStrobe
In/Out
Control
ano
2
2
Data 0
Out
Data
 
3
3
Data 1
Out
Data
 
4
4
Data 2
Out
Data
 
5
5
Data 3
Out
Data
 
6
6
Data 4
Out
Data
 
7
7
Data 5
Out
Data
 
8
8
Data 6
Out
Data
 
9
9
Data 7
Out
Data
 
10
10
nAck
In
Status
 
11
11
Busy
In
Status
ano
12
12
Paper-Out / Paper-End
In
Status
 
13
13
Select
In
Status
 
14
14
nAuto-Linefeed
In/Out
Control
ano
15
32
nError / nFault
In
Status
 
16
31
nInitialize
In/Out
Control
 
17
36
nSelect-Printer / nSelect-In
In/Out
Control
ano
18 - 25
19-30
Ground
Gnd
 
 
Tab 1. Přiřazení pinů D-Type 25 pin konektoru paralelní portu
 

 

Poznámka: Tabulku pinů konektorů pro LPT s názvy v podobě pdf dokumentu lze stáhnout v Dokumentech nebo i s obrázky rozložení pinů Centronics konektorů v Rozložení pinů portů pro LPT dané standardem IEEE 1284 .

Definice signálů

Výstupní signály paralelního portu jsou definovány klasickou TTL logickou úrovní signálů, tzn. log. 1. odpovídá hladině +3.5V až +5V a log. 0 hladině 0V až +0.4V (viz obrázek 2.).

Rozdílné hodnoty maximálních zátěžových proudů paralelního portu, které se liší v závislosti na fyzické realizaci paralelního portu. Maximální hodnoty odebíraného proudu se mohou pohybovat od 4mA až po 20mA. Proto je vždy nejvýhodnější na paralelním rozhraní s PC komunikujícího zařízení využít oddělovací buffer.

Obr. 2. Definice napěť. úrovní pro TTL (vstupní napětí- input voltage, výstupní napětí - output voltage)


 

Zásady bezpečné práce proti zničení portu Adresy portů PC

Narozdíl od sériového portu je paralelní port možné docela snadno nevědomky zničit, protože výstupy nejsou obvykle chráněny proti přetížení a statické elektřině. Proto je vhodné dodržovat následující bezpečnostní opatření:

  • Zařízení se smějí k paralelnímu portu připojovat jen při vypnutém napájení počítače.
  • Na vstupy se smí přivést jen napětí mezi hodnotami +0 až +5V.
  • Výstupy se nesmí zkratovat nebo připojit na jiné výstupy.
  • Výstupy nesmí přijít do styku s cizím napětím.
  • Při práci s paralelním portem dodržovat zásady pro minimalizaci statické elektřiny.
Pro paralelní porty PC se obvykle definují a užívají 3 základní adresy, které ukazuje tabulka 2.

Adresa
Funkce
3BCh - 3BFh
Využité pro paralelní porty, které byly vestavěné například do dřívejších video karet pro ISA sběrnici, nepodporují ECP adresy
378h - 37Fh
Obvyklá adresa pro LPT 1
278h - 27Fh
Obvyklá adresa pro LPT 2
Tab 2. Adresy LPT portů v PC

Adresa 3BCh byla původně určena pro dřívejší Video karty a dnes se již téměř nevyužívá.
V BIOSu lze najít adresy portů v paměti dle tabulky 3.

Start (základní) Adresa
Funkce
0000:0408
Bázová adresa pro LPT 1
0000:040A
Bázová adresa pro LPT 2
0000:040C
Bázová adresa pro LPT 3
0000:040E
Bázová adresa pro LPT 4
Tab 3. Adresy LPT portů v datové oblasti BIOSu

 

Zapojení nejčastěji používaných kabelů

Tiskový kabel (Centronic)
Použití: připojení tiskárny k LPT portu.

Redukce Centronic - LapLink
Použití: spojení dvou PC tiskovým kabelem (Centronic) jako LapLinkovým
LapLink kabel
Použití: propojení dvou PC


25 pin D-sub konektor
(Do PC )
 

36 pin Centornics konektor
(Do tiskárny)

Jméno
25-DSub 36-Cen
Strobe
1
1
Data Bit 0
2
2
Data Bit 1
3
3
Data Bit 2
4
4
Data Bit 3
5
5
Data Bit 4
6
6
Data Bit 5
7
7
Data Bit 6
8
8
Data Bit 7
9
9
Acknowledge
10
10
Busy
11
11
Paper Out
12
12
Select
13
13
Autofeed
14
14
Error
15
32
Reset
16
31
Select
17
36
Signal Ground
18
33
Signal Ground
19
19,20
Signal Ground
20
21,22
Signal Ground
21
23,24
Signal Ground
22
25,26
Signal Ground
23
27
Signal Ground
24
28,29
Signal Ground
25
30,16
Shield
Shield
Shield+17

Pro zvětšení kliknětě na obrázekj

Pro zvětšení klikněte na obrázek


36 pin Centornics konektor
(Do tiskového kabelu od PC 1)
 

25 pin D-sub konektor
(Do PC 2)
 
Jméno Cen DSub Jméno
Data Bit 0
2
15
Error
Data Bit 1
3
13
Select
Data Bit 2
4
12
Paper Out
Data Bit 3
5
10
Acknowledge
Data Bit 4
6
11
Busy
Acknowledge
10
5
Data Bit 3
Busy
11
6
Data Bit 4
Paper Out
12
4
Data Bit 2
Select
13
3
Data Bit 1
Error
32
2
Data Bit 0
Reset
16
16
Reset
Select
17
17
Select
Signal Ground
19-30+33
18-25
Signal Ground


25 pin D-sub konektor
(Do PC 1)
 

25 pin D-sub konektor
(Do PC 2)

Jméno Pin Pin Jméno
Data Bit 0
2
15
Error
Data Bit 1
3
13
Select
Data Bit 2
4
12
Paper Out
Data Bit 3
5
10
Acknowledge
Data Bit 4
6
11
Busy
Acknowledge
10
5
Data Bit 3
Busy
11
6
Data Bit 4
Paper Out
12
4
Data Bit 2
Select
13
3
Data Bit 1
Error
15
2
Data Bit 0
Reset
16
16
Reset
Select
17
17
Select
Signal Ground
25
25
Signal Ground

Pro zvětšení klikněte na obrázek

Zásady pro vytváření komunikačních kabelů

Pro jakýkoliv datový kabel a pro kabel na paralelní port dvojnásobně platí, že každý datový vodič by měl být od sousedního kryt zemním vodičem (GND) nebo stíněním. Lze se tak vyhnout "přeslechům" mezi jednotlivými datovými vodiči a kabel bude možno používat pro vyšší přenosovou rychlost i na větší vzdálenost. Pokud se využívá plochého vodiče, vyplývá toto doporučení už z vlastního zapojení pinů paralelního portu. Pokud se používá svazek vodičů, je optimální použití kabelu, kde jsou vždy dvě žíly smotány dohromady, a jednu z nich použít jako další zemní vodič. Toto by se mělo dodržovat alespoň u datových vodičů.

Komunikační módy LPT portu

SPP Mode - Compatibility Mode

Tento mód je taky často označován jako Centronics mode a je to základní mód pro standardní paralelní port původně určen pouze pro komunikaci PC s tiskárnou. Definován je jen přenos typu forward, tedy od PC k periferii, a  rychlost přenosu se pohybuje jen do 150KB/s. Průběh komunikace je popsán následujícím obrázkem 3. 

Obr. 3. Časový průběh komunikace v klasickém SPP módu

Popis fází přenosu :

  1. Zápis dat do datového registru.
  2. Program přečte stavový registr, aby zkontroloval zda tiskárna není zaneprázdněna (signál BUSY).
  3. Když není zaneprázdněna, pak zápis do Control registru způsobí stav low na lince nSTROBE
  4. Tiskárna přijme data a potvrdí příjem signálem nACK (stav low). 

Mnoho dnešních integrovaných 1284 I/O řadičů má implementový tzv. Fast Centronics nebo Parallel Port FIFO Mode, kdy se i v tomto režimu využívá FIFO bufferů pro přenos. Pak data zapsané  do FIFO portu budou přenesena k tiskárně s využitím hardwarově generovaných handshake signálů a tím se zvýší přenosová rychlost až na 500KB/s. Tento mód ale není definován standardem IEEE 1284. 

SPP registrové rozhraní

Základní SPP mód paralelního portu je řízen 3 základními registry:

  • Datový registr (Data Register) - určený pro zápis vysílaných dat
  • Stavový registr (Status Register) - určený pro čtení stavů na lince
  • Řídící registr (Control Register) - určený pro řízení perfierie, které jsou data vysílána

Přiřazení jednotlivých registru pinům portu je na následujícím obrázku 4.

Obr. 4. Přiřazení pinů portu k danému registru

Offset
Jméno
Čtení/Zápis
Bit číslo
Název - Vlastnost
Báze + 0
Data Port (Datový port)
Zápis
Bit 7
Data 7
Bit 6
Data 6
Bit 5
Data 5
Bit 4
Data 4
Bit 3
Data 3
Bit 2
Data 2
Bit 1
Data 1
Bit 0
Data 0

Tab 4. Datový registr (Data Registr)

Na základní (base) adrese se vyskuje datový registr pro vyslání 8bitové hodnoty na linku. Tento registr je v tomto módu určený pouze pro zápis. Při případném čtení bude přečten poslední vyslaný bajt.
 

Offset
Jméno
Čtení / Zápis
Bit Číslo
Název - Vlastnost
Báze + 1
Status Port (Stavový port)
Pouze čtení
Bit 7
Busy
Bit 6
Ack
Bit 5
Paper Out
Bit 4
Select In
Bit 3
Error
Bit 2
IRQ
Bit 1
Rezervovaný
Bit 0
Rezervovaný

Tab. 5. Stavový registr (Status Register)

Stavový registr s adresou +1 od bázové adesy je určen pouze pro čtení a popisuje stav komunikující periferie (tiskárny).

 

Offset
Jméno
Čtení/Zápis
Bit číslo
Název - Vlastnost
Báze + 2
Control Port (Řídící port)
Čtení/Zápis
Bit 7
Nevyužívaný
Bit 6
Nevyužívaný
Bit 5
Povoluje obousměrný port
Bit 4
Povoluje IRQ přes Ack linku
Bit 3
Select-Printer / Select-In
Bit 2
Initialize
Bit 1
Auto Linefeed
Bit 0
Strobe

Tab. 6. Řídící registr (Control Register)

Řídící register (Tab. 6.) je určen pro zápis a umožňuje řídít komunikující periferii (tiskárnu) prostřednictvím 5 výstupních bitů.

Nibble Mode

Nibble mode je cesta, jak získat zpětný kanál, resp. obousměrnou komunikaci mezi periferií a PC, přímo z klasického SPP Compatible módu bez hardwarových úprav. Nutná je tedy jen podpora softwarová. Proto je limit v rychlosti přenosu na 100KB/s. Výhodou je schopnost používat tuto obousměrnou komunikaci na všech PC s LPT. 

K přenosu se využívá 5 vstupních linek portu do PC primárně určené pro handshake. 4 z nich se však využívají pro přenos dat do PC. Využitím těchto linek může periferie vyslat byte jako posloupnost 2 tzv. nibblů (4 bity) ve dvou po sobě následujících datových cyklech. Oba přenosové cykly popisuje obrázek 5. a tabulka signálů 7. 

Obr. 5. Časový průběh komunikace v obousměrném Nibble módu

SPP Signál
Nibble Mód
In/Out
Popis -- Využití signálů v Nibble Mode přenosu dat
nSTROBE
nSTROBE
Out
Není využíván pro zpětný přenos dat
nAUTOFEED
HostBusy
Out
Nibble mód handshake signál. Nastavený do log.0 indikuje, že PC je připraven pro přenos. Nastaven do log.1 indikuje příjmutí dat.
nSELECTIN
1284Active
Out
Nastaven do log.1, když PC je v 1284 transfer módu.
nINIT
nINIT
Out
Nevyužíván pro zpětný přenos dat.
nACK
PtrClk
In
Nastaven do log.0 indikuje platná data, nastaven do log.1 v odpovědi k HostBusy going high.
BUSY
PtrBusy
In
Používán pro datový bit 3, pak 7
PE
AckDataReq
In
Používán pro datový bit 2, pak 6
SELECT
Xflag
In
Používán pro datový bit 1, pak 5
nERROR
nDataAvail
In
Používán pro datový bit 0, pak 4
DATA[8:1]
Nevyužit
 
 

Tab. 7. Přiřazení signálů v Nibble módu

Byte Mode

Po implementaci rozhraní paralelního portu, někteří výrobci v čele s IBM zvýšili kapacitu přenosu vypuštěním budiče datových linek a umožnili tak obousměrnou 8bitovou komunikaci přes datové linky. Přenosová rychlost je 100 až 200 KB/s. Obrázek 6. ukazuje jeden přenosový cyklus v tomto módu a tabulka 8. popisuje jednotlivé signály.


Obr. 6. Časový průběh komunikace v obousněrném Byte módu

SPP Signál
Byte Mód
In/Out

Popis -- Využití signálů v Byte Mode přenosu dat

nSTROBE
HostClk
Out
Puls log. 0 v každém konci každého Byte mode přenosu dat indicuje příjem bajtu. Potvrzovací signál.
nAUTOFEED
HostBusy
Out
Nastaven do log. 0 k indikaci, že zařízení očekává bajt. Nasteven do log. 1 k indikaci, že bajt byl přijat. Handshake signál.
nSELECTIN
1284Active
Out
Nastaven do log. 1, když zařízení je v 1284 přenosovém módu.
nINIT
nINIT
Out
Nevyužívá se. Nastaven na log.1.
nACK
PtrClk
In
Nastaven do log. 0 k indikaci platných dat na datových linkách, nastaven do log. 1 pro odpověď na HostBusy v log. 1.
BUSY
PtrBusy
In
Stav zaneprázdnění dopředného kanálu.
PE
AckDataReq
In
Následuje nDataAvail
SELECT
Xflag
In
Extensibility flag. Nevyužívá se v Byte mode.
nERROR
nDataAvail
In
Nastaven do log. 0 periferií k indikaci, že zpětná data jsou připravena.
DATA[8:]
DATA[8:1]
Bi-Di
Přenos dat - datový buffer.

Tab. 8. Přiřazení signálů v Byte módu

EPP Mode

EPP - Enhanced Parallel Port protocol byl původně vyvinut firmou Intel, Xircom a Zenith Data Systems, aby poskytnul výkonné propojení přes paralelní port a přitom byl kompatibilní se standardním paralelním portem. Tento protokol byl poprvé implementován v 386SL chipsetu (82360 I/O chip). Poté byl přijat jako do standardu IEEE 1284 jako pokročilý (advanced) mód.

Efekt tohoto módu je rychlost přenosu mezi 500KB/s až 2MB/s. Přenos se však vždy uskuteční  vždy přenosovou rychlostí toho nejpomalejšího komunikujícího zařízení. To si obě komunikující zařízení zjistí z výměn a odezev na handshake signály nWait a nDataStrobe (viz. dále - obrázek 7.).  

EPP protokol poskytuje 4 přenosové cykly:

  1. Data Write Cycle
  2. Data Read Cycle
  3. Adress Write Cycle
  4. Adress Read Cycle

Data cykly jsou určené pro přenos (transfer) dat mezi PC a periferií. Adresové cykly jsou určené k přenosu adresy kanálu, nebo příkazu a řídící informace. Oba je nutné zobrazit jako dva rozdílné přenosové (transfer) cykly.

SPP Signál

EPP Mód

In/Out

Popis -- Využití signálů v EPP Mode přenosu dat

nSTROBE
nWRITE
Out
Aktivní v log.0 indikuje zápisovou operaci, zatímco v log.1 indikuje cyklus čtení.
nAUTOFEED
nDATASTB
Out
Aktivní v log.0 a indikuje čtení dat resp. zápis dat.
nSELECTIN
nADDRSTB
Out
Aktivní v log.0 a indikuje operaci čtecí adresy, resp operaci zápisu adresy.
nINIT
nRESET
Out
Aktivní v log. 0. Reset periferií.
nACK
nINTR
In
Přerušení od periferií. Užívá se k generování přerušení od periferie.
BUSY
nWAIT
In
Handshake signál. Když je v log.0 indikuje OK stav pro začátek cyklu, když log.1 indikuje OK stav pro ukončení cyklu
D[8:1]
AD[8:1]
Bi-Di
Obousměrné adresové / datové linky.
PE
definován uživatelem
In
Může být využit rozdílně dle každé periferie.
SELECT
definován uživatelem
In
Může být využit rozdílně dle každé periferie.
nERROR
definován uživatelem
In
Může být využit rozdílně dle každé periferie.

Tab. 9. Přiřazení a popis signálů v EPP módu

Obrázek 5. je ukázka jednoho datového zápisového cyklu . CPU signál nIOW zvýrazňuje celý handshake, který nastává v jednom I/O cyklu.


Obr. 7. Časový průběh komunikace v rozšířeném EPP módu (datový zápisový cyklus)

Popis fází přenosu v datovém zápisovém cyklu (Data-Write cycle):

  1. Program vykoná I/O zápisový cyklus na port 4 (EPP Data Port)
  2. nWrite linka uvolní zapisovací operaci a data jsou vyslána na paralelní port
  3. nDataStrobe zahájí indikaci zápisové operace dokud je nWAIT signál low
  4. Port čeká na potvrzení od přijímacího zařízení, dokud je nWAIT signál high
  5. nDataStrobe indikuje konec operace přenosu
  6. I/O cykl končí
  7. nWAIT indikuje možnost začátku dalšího cyklu

 

Obr. 8. Časový průběh komunikace v rozšířeném EPP módu (datový čtecí cyklus)

Poznámka: Paralelní porty s EPP před standardizací IEEE 1284, mohou mít trošku odlišný průběh některých handshake signálů.

EEP Registrové rozhraní

Následující tabulka 10. popisuje rozšíření registrů proti standardnímu SPP módu. Jak bylo uvedeno výše, SPP mode používá 3 registry: datový, stavový a řídící. EPP mód to rozšiřuje o několik dalších registrů viz. tabulka 10., která uvádí offset registrů od bázové adresy portu.

Jméno Portu Offset Mód Čtení (Read) / Zápis (Write) Popis
SPP Data Port
+0
SPP/EPP
W
Standardní SPP datový port. Nepodporuje autostrobing.
SPP Status Port
+1
SPP/EPP
R
Čte vstupní stavové linky interfacu.
SPP Control Port
+2
SPP/EPP
W
Nastavuje stav řídících (control) výstupních linek.
EPP Address Port
+3
EPP
R/W
Generuje adresy čtecího nebo zápisového cyklu.
EPP Data Port
+4
EPP
R/W
Generuje data čtecího nebo zápisového cyklu.
Nedefinováno
+5 to +7
EPP
N/A
Využívá se různě v závislosti na implementaci. Mohou být použity pro 16 bit nebo 32 bit I/O.

Tab. 10. Tabulka registrů využívaných v EPP módu

Jednoduchým pokusem o zápis na adresu bázová_adresa+4, lze zjistit zda zařízení tento režim komunikace podporuje.

ECP Mode

Extended Capability Port protocol byl stvořen firmami Hewlett Packard a Microsoft jako pokročilý mód pro obousměrnou komunikaci PC s dalšími periferiemi jako je například scaner.  Přenosová rychlost v tomto módu je až 800 KB/s bez využití DMA ( Direct Memory Access) a až 2MB/s s pomocí DMA. To platí při implementaci na ISA sběrnici. Dnes však při implementaci na PCI sběrnici PC lze dosáhnout 3 až 5 MB/s. Někdy se udává i až 8MB/s.

 ECP protokol poskytuje dva komunikační cykly:

  1. Datové cykly (Data cycles)
  2. Příkazové cykly (Command cycles)

Plná registrová implementace a popis lze nalézt v dokumentu Microsoft: "The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard" (ecp_reg.pdf). Tento dokument definuje vlastnosti a implementaci, které IEEE 1284 standard nepostihuje. Jako například Run_Length_Encoding (RLE) datovou kompresi, FIFO buffery, DMA i programování.  

RLE umožňuje real-time datovou kompresi s poměrem až 64:1, ale musí být povolena na obou komunikujících zařízeních. To je výhodné například při přenosu velkého množství dat obrázku ze scaneru. Adresování kanálů je také odlišné od EPP módu. ECP adresování (Channel addressing) je zde je určen k adresování mnoha logických zařízení jedním fyzickým zařízením. Například k jednomu paralelnímu portu jsou připojeny FAX, tiskárna a modem. Užitím ECP channel addressing lze přistoupit ke každému zařízení. Lze například přijímat data z modemu během doby, kdy datový kanál je busy vlivem tisku tiskárny.

V základním komunikačním módu nelze během signálu busy od tiskárny provádět jinou komunikaci. V ECP módu stačí jen adresovat jiný logický kanál a komunikace muže probíhat.

Stejně jako jiné 1284 rozšiřující módy, ECP protokol předefinovává klasické SSP signály a přidává další pro ECP handshake.

SPP Signál
ECP Mód
In/Out
Popis -- Využití signálů v ECP Mode přenosu dat
nSTROBE
HostClk
Out
Používán spolu s PeriphAck k přenosu dat a informace o adrese v přímém směru přenosu.
nAUTOFEED
HostAck
Out
Poskytuje Command/Data status (Příkaz / Data stav) v přímém směru přenosu. Používán spolu s PeriphClk k přenosu dat ve zpětném směru přenosu .
nSELECTIN
1284Active
Out
Nastavený do log.1, když zařízení je v 1284 transfer módu.
nINIT
nReverseRequest
Out
Nastaven do log.0, když je kanál v zpětném směru přenosu.
nACK
PeriphClk
In
Použiván společně s HostAck k přenosu dat ve zpětném směru přenosu.
BUSY
PeriphAck
In
Používán s HostClk k přenosu dat nebo adresové informaci v přímém směru přenosu dat. Poskytuje Command/Data stav ve zpětném směru.
PE
nAckReverse
In
Nastaven do log.0 k potvzení nReverseRequest signálu.
SELECT
Xflag
In
Extensibility flag.
nERROR
nPeriphRequest
In
Nastavený do log.0 periferií k indikaci, že zpětná data jsou dostupná.
Data[8:1]
Data[8:1]
Bi-Di
Používaná k přenosou dat mezi periferií a PC.

Tab. 11. Přiřazení a popis signálů v ECP módu

Obrázek 9. ukazuje průběh dvou dopředných cyklů přenosu (forward transfer cycles). V prvním cyklu se přenášejí data (forward channel data cycle), ve druhém příkazy (forward channel command cycle). To řídí signál HostAck. Když se nastavený stav high, indikuje začátek datového cyklu, když nastavený stav do low, indikuje počátek command cyklu. 8.bit datového bajtu je využit k indikování RLE vs. Channel addressing. Když je tento bit v log.0, pak předchozích 7 bitů reprezentuje tzv. Run_Length Count (0-127), když v log.1, reprezentují adresu kanálu (Channel address) 0-127.   

 

Obr. 9. Časový průběh komunikace v ECP módu pro dopředný přenos dat (forward data transfer)

Poznámka: Protože se využívá FIFO bufferů je nutné podoknout, že příjímací zařízení má v FIFO bufferu data platná až časovém bodě 4, tedy po přechodu signálu HostClk do stavu high. Mezi body 3 a 4 je možné přenos přerušit. Pak ale nelze zaručit, že data byla úspěšně přenesena. 

Obrázek 10. pak ukazuje zpětný přenosový cyklus (reverse transfer cycles), kde první je datový cyklus (reverse channel data cycle) následovaný příkazovým cyklem (reverse channel command cycle). V obrázku není zobrazen I/O read/write signál. To je díky ECP FIFO bufferům, které ruší vazbu ISA datových transferů, DMA nebo programovaných I/O od aktuálního PC/periferie přenosu dat. Větší bloky dat jsou přesouvány pomocí DMA (Direct Memory Access) a díky zrušené vazbě, softwarové drivery nepoznají, zda je vysílán 123 bajt nebo 342000 bajt. Pak například v případě tiskáren, software se o přenos nemusí starat, pouze hlídá, zda přenos je kompletní. Zároveň tento obrázek ukazuje rozdíl ECP módu od EPP módu. V EPP totiž software může libovolně mixovat režim čtení a zápis na linku. Naopak v módu ECP musí zařízení žádat o zpětný (reverse) přenos pomocí signálů nReverseRequest a nAckReverse. Navíc se případně musí čekat na ukončení přenosu DMA nebo přerušení od DMA.

Obr. 10. Časový průběh komunikace v ECP módu pro zpětný přenos dat (reverse data transfer)

ECP Software a registrové rozhraní

Specifikace Microsoftu "The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard" (ecp_reg.pdf) definuje registrové rozhraní adaptéry ISA s ECP založené na 1284.  Tato specifikace definuje i operační módy, pod kterými může adaptér pracovat. Ty uvádí následující tabulka 12.

Mód
Popis
000
SPP mode
001
Bi-directional mode (Byte mode)
010
Fast Centronics
011
ECP Parallel Port mode
100
EPP Parallel Port mode
101
(reserved)
110
Test mode
111
Configuration mode
Tab. 12. Tabulka módů registrů v ECP módu (nastavují se v ECR registru - viz. Tab. 13.)

Poznámka: Mód EPP není specifikován protokolem ECP, ale takto bývá implementován většinou řadičů.

Registrový model pro ECP port vychází ze standardního paralelního portu, ale definuje 6 registrů. Následující tabulka 13 je popisuje. Důležité je, že definice registru závisí na právě nastaveném ECP módu (viz. předchozí tabulka 12.).

Offset
Jméno
Čtení (Read) / Zápis (Write)
ECP Mode
Funkce
000
Data
R/W
000-001
Data Register (Datový Registr)
000
ecpAfifo
R/W
011
ECP Address FIFO
001
dsr
R/W
všechny
Status Register (Stavový registr)
002
dcr
R/W
všechny
Control Register (Řídící registr)
400
cFifo
R/W
010
Parallel Port Data FIFO
400
ecpDfifo
R/W
011
ECP Data FIFO
400
tfifo
R/W
110
Test FIFO
400
cnfgA
R
111
Configuration Register A
401
cnfgB
R/W
111
Configuration Register B
402
ecr
R/W
všechny
Extended Control Register (Rozšířený řídící registr)

Tab. 13. Tabulka registrů využívaných v ECP módu dle zvoleného módu registrů

Z důvodu obsáhlosti tématu, zde již nebudu popisovat jednotlivé definice bitů v každém ze 6 registrů. Zájemce odkazuji na velmi podrobný popis ve specifikaci Microsoftu: "The Extended Capabilities Port Protocol and ISA Interface Standard", která je součástí dokumentu ecp_reg.pdf, případně datasheet konkrétního I/O řadiče.

Programový přístup na LPT

Pro programování
DOS / Windows 95, 98, Me Windows NT4, 2000, XP

Pro programový přístup pod OS MS-DOS stačí využít příkazů pro přímý zápis do registrů LPT pro konkrétní programovací jazyk.

Souhrn příkazů pro zápis pro Pascal, C, asembler x86 a Basic je popsán v následujícím textovém souboru pristup.txt.

Pro programový přístup pod OS Windows 95/98/Me lze na internetu najít mnoho univerzálních driverů pro potřeby uživatelů a programátorů pro přímé programování pod Windows 95/98. Například:

  • port.dll - port.zip - výborný driver pro přístup v nechráněném režimu (lze tedy použít pro Windows 95 a 98). Driver je i součástí CD knihy: Burkhard Kainka, Hans-Joachim Berndt : Využití rozhraní PC pod Windows, Vykladatelství HELL a v prodeji BEN. Kniha obsahuje i mnoho praktických zdrojových programů pro Visual Basic a Delphi.

 

S příchodem OS Windows na bázi NT však nastávají problémy s přístupem na paralelním port. Programy s přístupem na LPT psané klasickým způsobem v kapitole pro DOS / Windows 95, 98, Me nelze použít, protože vyvolávají chybovou hlášku (viz. obrázek) a program je přerušen. To je způsobenou ochrannou OS, který pracuje v tzv. chráněném módu, který přiděluje práva k přístupu jen některým programům. Ten rozděluje všechny programy do dvou kategorií User mode (běží v ring3 módu) a Kernel mode (běží v ring0 módu). Běžně psané programy spadají právě do User mode, který neumožňuje přístup na porty příkazy IN, OUT apod. V kernel módu tyto omezení nejsou, proto je nutné použít driver, který zde běží. Tento driver pak může využít běžící uživatelský program pro přístup na port. 

Na internetu lze najít mnoho univerzálních driverů pro potřeby uživatelů a programátorů. Například:

Programový test funkce čtení a zápisu na LPT port 0x378 pro jednotlivé drivery jsem prováděl v programovacím jazyku C++ (program C++ Builder 5).

Zde je zdrojový program, který lze použít i jako příklad jednoho možného řešení využívání dll driverů pro C++.

 
Pro starší programy pod Windows NT4/2000/XP
Obecně Některé programy

Jak již bylo popsáno výše, programy využívající jakýkoliv přístup na paralelní port PC programované klasickým způsobem pro OS DOS nebo Windows 95/98, nelze samostaně pod OS Windows NT4/2000/XP provozovat. K jejich správné funkci je však možné využít některý univerzálních ovladačů (programů), které běží na pozadí a umožňují spuštění i takových to starších programů.

Více podrobných informací na toto téma se lze dočíst v článcích HW serveru:

Přímý přístup na IO porty počítače pod Windows 2000/XP

Provozování aplikací na operačních systémech Windows NT/2000/XP

  • UserPort - userport.zip - program pro programový přístup na LPT port pod Windows 2000/XP pro jinak nefunkční programy (balicek obsahuje i zdrojový program s drivery pro Windows).
  • PortTalk - porttalk22.zip - program pro programový přístup na LPT port pod Windows 2000/XP pro jinak nefunkční programy. Balicek obsahuje i zdrojový program s drivery pro Windows včetně příkladu přístupu v jazyku C.

Podrobnější popis obou ovladačů lze najít v článku

Přímý přístup na IO porty počítače pod Windows 2000/XP

Poznámka: Oba programy jsem otestoval jako funkční pod Windows XP

Programy pro ovládání LPT

DOS / Windows 95, 98, Me Windows NT4, 2000, XP
  • Ka - ka.zip - program pro čtení a nastavování (pinů paralelních portů PC) + další operace (generátor TTL apod.), program pracuje i pod Windows XP
Program Ka
  • DLPortIO - port95nt.exe - program pro čtení a zápis dat na zvolený LPT port v podobě Byte či Word (balicek obsahuje i drivery pro Windows).

Poznámka : Programy zde uvedené byly odzkoušeny jako plně funkční v OS Windows 98 nebo XP (dle programu).

IO pro LPT / IEEE 1284

Obecně

LPT (IEEE 1284) port a komunikace nabízí obecně jednoduché využití již tím, že komunikace probíhá pomocí klasického TTL signálu. To umožňuje nenákladně vytvořit rozhraní libovolného zařízení pro komunikaci s PC. Stačí na straně zařízení použít IO oddělovač pro ochranu LPT portu PC nebo nějaký 8-bit buffer / driver (např. 74LS244, 74LS367 / UL2803) či 8-bit posuvný registr (např. 74HC165).

Pro využití všech výhod a módů protokolu IEEE 1284 je však nutné použít složitější integrovaný obvod (například viz. seznam vlevo).

Katalogové listy obvodů pro IEEE 1284

 

DOWNLOAD & Související odkazy

Programy a drivery
Dokumentace
  • Podrobný popis pinů konektorů pro LPT (1 strana) - pppinout.pdf
  • Podrobý popis paralelního portu a jejich módů (17 stran) - parallel.pdf
  • Velmi podrobný popis LPT módu ECP i s popisy registrů (53 stran anglicky) - ecp_reg.pdf
Katalogové listy

 

Literatura k LPT

  • Götz Sören, Mende Reiner : Měření, řízení a regulace s Delphi, BEN 2004 - popis využití LPT portu v módu EPP
  • Matoušek David : Udělejte si z PC... 1. díl , BEN 2004 - programový přístup na LPT pod Windows i DOS
  • Matoušek David : Udělejte si z PC v Delphi..., 1.díl, BEN 2003 - programový přístup na LPT v módu SPP
  • Matoušek David : Udělejte si z PC... 2. díl , BEN 2004 - LPT port ve standadrdu SPP/EPP/ECP
  • Burkhard Kainka, Hans-Joachim Berndt : Využití rozhraní PC pod Windows, HEL 2000 - využití LPT portu pod Windows 95/98
  • Vlach Jaroslav : Počítačová rozhraní, BEN 2000 - obecný popis LPT portu

Další zajímavé odkazy

Stránky na HW Serveru

Web stránky v angličtině:

Web stránky v češtině:

Web stránky v němčině:

 

Hodnocení článku: 

Komentáře

Zaujimalo by ma, ako to funguje s portmi LPT a COM, ktore nie su priamo na pocitaci ale su realizovane adapterom cez USB.

Spravte si RLE umožňuje real-time datovou kompresy -> kompresi, jinak vcelku dobrý článek...