Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Sterowanie za pomocą bitów

Centronics - port równoległy

SPIS TREŚCI
Podrozdziały

Opis

obrazek
Dr An Wang

Port równoległy Centronics został opracowany w Wang Laboratories przez dr An Wanga, Roberta Howarda i Prentice Robinsona. Złącze to zostało opracowane głównie do transmisji danych pomiędzy komputerem a drukarką - jednakże później wykorzystywano je również do podłączania takich urządzeń jak skanery i plotery. Obecnie Centronics zaczyna przechodzić do historii - większość współczesnych urządzeń peryferyjnych jest podłączana do komputera za pomocą magistrali USB, która posiada dużo większą szybkość działania i możliwość jednoczesnej obsługi większej liczby urządzeń.

W telekomunikacji rozróżniamy dwa rodzaje transmisji danych:

  1. Transmisję szeregową (ang. serial transmission) - bity danych są wysyłane pojedynczo jeden po drugim. Zaletą takiego systemu jest mała liczba kanałów transmisyjnych. Upraszcza to budowę urządzeń nadawczo odbiorczych.
  2. Transmisję równoległą (ang. parallel transmission) - bity tworzące słowo danych (np. 8 bitów = bajt) są przesyłane jednocześnie w osobnych kanałach transmisyjnych. Zaletą jest duża szybkość transmisji, jednakże występuje komplikacja urządzeń nadawczo-odbiorczych.

Interfejs Centronics wykorzystuje transmisję równoległą. Magistrala interfejsu posiada 8 linii transmisji danych, 4 linie sygnałów sterujących oraz 5 linii statusu. Standard Centronics opisuje dokładnie norma IEEE 1284. Komputery IBM-PC są wyposażone w gniazdo Centronics typu DB-25 Female (żeńskie), które widzimy na poniższym obrazku po lewej stronie. Z gniazdem tym współpracuje wtyczka kabla Centronics typu DB-25 Male, którą widzimy po stronie lewej na środkowym obrazku. W drukarkach stosuje się złącze DB-36 Male, widoczne poniżej po stronie prawej:

Komputer IBM-PC Kabel łączący komputer z drukarką Drukarka
obrazek obrazek obrazek
DB-25 Female DB-25 Male DB-36 Male DB-36 Female

Na początek:  podrozdziału   strony 

Sygnały gniazda-wtyczki DB-25 i DB-36

Poszczególne wtyki posiadają w DB-25 następującą numerację (widok od strony wtyków, nie od strony lutów):

Komputer Kabel Kabel Drukarka
obrazek obrazek obrazek obrazek
Gniazdo DB-25 Female Wtyczka DB-25 Male Wtyczka DB-36 Male Gniazdko DB-36 Female

W poniższej tabeli zebraliśmy przypisania sygnałów do poszczególnych wtyków DB-25:

Nr wtyku Nazwa sygnału Kierunek transmisji Opis sygnału
1 STROBE PC → Druk. Sygnał zegarowy
2 D0 PC → Druk. 8 linii danych
3 D1 PC → Druk.
4 D2 PC → Druk.
5 D3 PC → Druk.
6 D4 PC → Druk.
7 D5 PC → Druk.
8 D6 PC → Druk.
9 D7 PC → Druk.
10 ACK PC ←  Druk. Potwierdzenie przyjęcia danych
11 BUSY PC ←  Druk. Drukarka jest zajęta
12 POUT PC ←  Druk. Skończył się papier w drukarce
13 SEL PC ←  Druk. Drukarka jest włączona
14 AUTOFEED PC → Druk. Automatyczne przesuwanie wiersza
15 ERROR PC ←  Druk. Wskazuje na błąd drukarki (lub jej wyłączenie)
16 RESET PC → Druk. Resetuje drukarkę, czyści jej bufor i inicjuje ją.
17 SLCT IN PC → Druk. Uaktywnia drukarkę lub ją dezaktywuje
18-25 GND N/A Masy dla sygnałów 1-12, w większości przypadków są to skrętki dwóch przewodów.

A tutaj mamy przypisania sygnałów do poszczególnych wtyków DB-36:

Nr wtyku Nazwa sygnału Kierunek transmisji Opis sygnału
1 STROBE PC → Druk. Sygnał zegarowy
2 D0 PC → Druk. 8 linii danych
3 D1 PC → Druk.
4 D2 PC → Druk.
5 D3 PC → Druk.
6 D4 PC → Druk.
7 D5 PC → Druk.
8 D6 PC → Druk.
9 D7 PC → Druk.
10 ACK PC ← Druk. Potwierdzenie przyjęcia danych
11 BUSY PC ← Druk. Drukarka jest zajęta
12 POUT PC ← Druk. Skończył się papier w drukarce
13 SEL PC ← Druk. Drukarka jest włączona
14 AUTOFEED PC → Druk. Automatyczne przesuwanie wiersza
15 n/c N/A Nie używane
16 0 V N/A Masa logiczna
17 CHASSIS GND N/A Masa osłony
18 +5 V PULLUP PC ← Druk. Napięcie stałe +5 V (maksymalnie 50 mA)
19-30 GND N/A Masy dla sygnałów 1-12, w większości przypadków są to skrętki dwóch przewodów.
31 RESET PC → Druk. Resetuje drukarkę, czyści jej bufor i inicjuje ją.
32 ERROR PC ← Druk. Wskazuje na błąd drukarki (lub jej wyłączenie)
33 0 V N/A Masa sygnałowa
34 N/C N/A Nie używane
35 +5 V PC ← Druk. Napięcie stałe +5 V
36 SELCTIN PC → Druk. Uaktywnia drukarkę lub ją dezaktywuje

Poszczególne sygnały portu Centronics posiadają następujące zastosowanie:

STROBE - Sygnał STROBE jest najważniejszym sygnałem portu Centronics, ponieważ informuje on drukarkę, że może odczytywać bajt z linii danych D0-D7. Zwykle STROBE ustawiony jest na 1 (ma napięcie 5V), a w momencie transmisji danych zmienia się na 0 (napięcie spada do około 0,5V). W tym momencie na liniach danych D0-D7 muszą być ustawione przesyłane bity. Ponieważ elementy cyfrowe posiadają różne czasy propagacji, sygnał STROBE powinien przechodzić w stan 0 z pewnym opóźnieniem, które gwarantuje ustalenie się napięć na wyjściach D0-D7. Opóźnienie to wynosi około pół mikrosekundy. Następnie sygnał STROBE przechodzi w stan niski na około 1 mikrosekundę. Po powrocie STROBE do stanu 1 dane na liniach D0-D7 utrzymują się jeszcze przez około pół mikrosekundy. Zatem całkowity czas przesłania 1 bajtu danych wynosi około dwóch mikrosekund.
D0-D7 - 8 linii danych przenosi informację od komputera do drukarki (w pierwotnym standardzie Centronics linie te były jednokierunkowe, później jednak zaczęto wprowadzać dwukierunkowe linie danych, które umożliwiały transmisję również w kierunku odwrotnym). Są to zwykle kody znaków oraz dane graficzne i kody sterujące (np. przejście na inny krój pisma, pismo pochyłe lub pogrubione, itp.). Każda linia przekazuje jeden bit informacji. Bity są reprezentowane przez zwykłe poziomy TTL: 1 - 5V, 0 - 0,5V.
ACK - Ten sygnał przekazuje komputerowi potwierdzenie, iż drukarka odczytała dane z linii D0-D7. Jest on aktywny w stanie niskim, tzn. utrzymuje napięcie 5V, które w momencie potwierdzenia spada do około 0,5V. W ten sposób komputer będzie wiedział, iż dane zostały przekazane do drukarki. Stan niski utrzymuje się typowo przez około 8 mikrosekund.
BUSY - Przesłanie każdego bajtu zajmuje około 2 mikrosekundy, co oznacza, iż do drukarki dociera strumień danych o szybkości 500.000 B na sekundę. Tak szybko drukarka nie potrafi drukować, dlatego zastosowano linię BUSY. Po odebraniu każdego bajtu drukarka ustawia tę linię na 1, aby powstrzymać transmisję następnych bajtów aż do momentu, gdy drukarka poradzi sobie z bajtem właśnie odebranym. Gdy linia przyjmie stan 0, komputer może kontynuować przesłanie kolejnego bajtu.
POUT - Jeśli w drukarce skończy się papier, to ustawia ona linię POUT na 1. W przeciwnym razie linia ta ma stan 0. Komputer, wykrywszy w ten sposób brak papieru, może odpowiednio poinformować swojego użytkownika. Gdy wystąpi taka sytuacja, linia BUSY również przechodzi w stan wysoki, aby komputer nie przesyłał dalszych danych aż do momentu rozwiązania tego problemu przez użytkownika. Oczywiście przy braku papieru na drukarce zapala się odpowiednie światełko, ale kto na nie patrzy...
SEL - Gdy drukarka jest włączona i gotowa do przyjmowania danych (mówimy, że jest online), ustawia sygnał SEL na 1. Jeśli sygnał ten ma wartość 0, to drukarka jest odłączona (mówimy offline) i komputer nie będzie przesyłał do niej danych.
AUTOFEED - Nie wszystkie drukarki traktują znak CR (ang. carriage return - powrót karetki - kod 13) w ten sam sposób. Niektóre z nich przesuną głowicę na początek drukowanego wiersza, a inne przesuną dodatkowo papier jeden wiersz w dół (lub w górę). Większość drukarek pozwala ustawić przełącznikami DIP lub w inny sposób, jak mają reagować na znak końca wiersza CR. Sygnał AUTOFEED załatwia tę sprawę. Gdy komputer ustawi ten sygnał na 0, to po odebraniu znaku CR drukarka automatycznie przewinie papier o jeden wiersz. Jeśli sygnał ten jest ustawiony na 1, to w celu przesunięcia papieru o jeden wiersz, komputer musi przesłać oprócz znaku CR również znak LF (ang. line feed - przesuw o wiersz - kod 10). Oczywiście całą sprawą zajmuje się oprogramowanie komunikujące się z drukarką - użytkownik często nawet nie jest świadomy tych problemów, bo i po co - dzisiaj większość drukarek pracuje w trybie graficznym drukując całą stroną.
ERROR - Ta linia informuje komputer o wystąpieniu błędu w drukarce. Rodzaj błędu nie jest określony. Jeśli drukarka nie wykryła błędów, ustawia linię ERROR na 1. W przypadku błędu linia ta przyjmuje stan 0.
RESET - Ten sygnał jest wykorzystywany przez komputer do ponownej inicjalizacji drukarki. Normalnie RESET ma stan 1. Przy inicjalizacji jest ustawiane na 0. Sygnał taki przydaje się do ustawienia drukarki w stan początkowy przy rozpoczynaniu sesji drukowania. Poprzednia sesja mogła przesłać do drukarki różne kody sterujące, które ustawiły ją w jakiś niepożądany stan: np. druk pisma pochyłego, pogrubionego, itp. Resetując drukarkę, pozbywamy się tych ustawień.
SELCTIN - Sygnał ten pozwala komputerowi aktywować (stan 0) i dezaktywować drukarkę (stan 1). Gdy drukarka jest w stanie offline, nie będzie przyjmowała danych od komputera.

Na początek:  podrozdziału   strony 

Tryby pracy portu Centronics

Port Centronics pierwotnie miał być wykorzystywany do połączenia komputera z drukarką. Jednakże bardzo szybko okazało się, iż może on przesyłać dane również pomiędzy innymi typami urządzeń. Aby usprawnić taką komunikację, rozszerzono definicję sygnałów w kolejnych wersjach interfejsu Centronics. Poniżej krótko opisujemy tryby pracy portu Centronics.

Tryb Kompatybilności - Compatibility Mode - SPP

Tryb ten jest używany do komunikacji komputerów osobistych z drukarkami. Często jest on opisywany skrótem SPP (ang. Standard Parallel Port - Standardowy Port Równoległy) lub jako tryb Centronics (ang. Centronics Mode). Poniższy rysunek przedstawia przebieg sygnałów na istotnych liniach portu Centronics w czasie transmisji danych od komputera do drukarki.

obrazek

Cykl przesyłu bajtu danych w trybie kompatybilności

  1. Komputer umieszcza bajt danych na liniach D0-D7.
  2. Komputer sprawdza status drukarki. Jeśli nie ma błędów, sprawdzany jest stan linii BUSY. W przypadku błędów transmisja jest przerywana. Czas ten jest również wykorzystywany do ustalenia się sygnałów na liniach danych.
  3. Jeśli linia BUSY ma stan 0, to komputer ustawia linię STROBE w stan 0. Powoduje to odczyt danych z linii D0-D7 przez drukarkę. Drukarka ustawia linię BUSY na stan 1 do momentu przetworzenia odczytanych danych.
  4. Komputer ustawia linię STROBE z powrotem na stan wysoki i czeka na potwierdzenie odbioru danych. Gdy drukarka odczyta dane, generuje ujemny impuls potwierdzający na linii ACK. Gdy dane zostaną przetworzone i drukarka stanie się gotowa do odczytu kolejnego bajtu, ustawia linię BUSY na stan 0.

Faza Negocjacji

Wszystkie następne tryby pracy interfejsu Centronics wymagają wstępnej negocjacji komputera z urządzeniem zewnętrznym, w wyniku której komputer otrzymuje informację zwrotną o możliwościach podłączonego przez port urządzenia oraz o rodzajach obsługiwanych przez niego trybów komunikacyjnych.

Negocjacja (ang. negotiation) jest ciągiem zdarzeń w porcie Centronics, które nie wpływają na pracę starszych urządzeń nie obsługujących negocjacji. Natomiast w przypadku nowszych urządzeń pozwalają na ich właściwą identyfikację. Negocjację przeprowadza się zawsze w trybie kompatybilności SPP. Jeśli dane urządzenie nie zareaguje odpowiednio na zdarzenia negocjacji, to komputer pozostawi port Centronics w trybie SPP, co umożliwi mu współpracę ze starszym sprzętem. Natomiast urządzenia standardu IEEE 1284 zareagują odpowiednio na tę sekwencję i komputer będzie dla nich mógł wybrać właściwy sposób funkcjonowania interfejsu.

W czasie fazy negocjacji komputer umieszcza tzw. bajt rozszerzenia (ang. Extensibility Data Byte) na liniach D0-D7 i inicjuje sekwencję negocjacji. Żądanie może dotyczyć przejścia interfejsu w określony tryb pracy lub pobrania numeru ID urządzenia zewnętrznego. Numerem identyfikacyjnym się tutaj nie zajmiemy, poniższy opis dotyczy natomiast podstawowej sekwencji negocjacji.

Poniższa tabela przedstawia bity bajtu rozszerzenia oraz ich znaczenie dla urządzenia peryferyjnego.

Bit Opis wartość
binarna
D7 Żądanie rozszerzonego połączenia 1000 0000
D6 Żądanie trybu EPP 0100 0000
D5 Żądane trybu ECP z RLE 0011 0000
D4 Żądanie trybu ECP bez RLE 0001 0000
D3 Zarezerwowane 0000 1000

D2

Żądanie numeru ID
Dane zwracane trybem:

Nibble

0000 0100

Byte

0000 0101

ECP bez RLE

0001 0100

ECP z RLE

0011 0100

D1 Zarezerwowane 0000 0010
D0 Tryb Byte 0000 0001
żaden Tryb Nibble 0000 0000

Na poniższym rysunku przedstawiono przebiegi sygnałów występujących podczas negocjacji komputera z urządzeniem zewnętrznym.

obrazek

  1. Komputer umieszcza na liniach danych D0-D7 bajt rozszerzenia.
  2. Następnie ustawia linie SELECTIN na 1 i AUTOFEED na 0, co jest informacją dla urządzenia zewnętrznego, iż nastąpi sekwencja negocjacji.
  3. Urządzenie obsługujące dodatkowe tryby odpowie przez ustawienie ACK na 0, a ERROR, POUT i SEL na 1. Urządzenia nie obsługujące nowych trybów transmisji nie zareagują - port pozostanie w trybie SPP.
  4. Teraz komputer ustawia linię STROBE na 0. Jest to sygnał dla urządzenia, że można odczytać bajt rozszerzenia z linii D0-D7.
  5. Komputer ustawia linie STROBE i AUTOFEED z powrotem na 1, aby zasygnalizować urządzeniu zewnętrznemu, że zostało rozpoznane jako urządzenie obsługujące dodatkowe tryby przesyłu danych.
  6. Urządzenie zewnętrzne odpowiada przez ustawienie POUT na 0. Pozostałe linie ERROR i SEL zostają ustawione na 0 lub 1 w zależności, od aktualnych możliwości urządzenia:
        ERROR na 0, jeśli urządzenie posiada dostępny kanał zwrotny,
        ERROR na 1, jeśli urządzenie nie ma kanału zwrotnego
        SEL na 1, jeśli żądany tryb jest dostępny
        SEL na 0, jeśli żądanego trybu urządzenie nie obsługuje.
  7. Teraz urządzenie zewnętrzne ustawia linię ACK na 1, aby zasygnalizować koniec sekwencji negocjacji i ustawienie linii portu w stan zgodny z pożądanym trybem transmisji.

Tryb Nibble

Termin angielski nibble oznacza czwórkę bitów - pół bajtu. Jeden bajt składa się z dwóch takich czwórek: starszej i młodszej:

← bajt →
b7 b6 b5 b4 b3 b2 b1 b0
starszy niblle młodszy nibble

Tryb Nibble jest najpopularniejszym sposobem uzyskania kanału zwrotnego z urządzenia podłączonego do portu Centronics, gdyż nie opiera się on na standardowym sposobie pracy poszczególnych linii sygnałowych - w innych trybach linie te muszą być zwykle dwukierunkowe, a to z kolei wymaga przebudowy elektroniki realizującej to połączenie. Tryb ten zwykle łączy się z trybem kompatybilności w celu stworzenia pełnego, dwukierunkowego kanału wymiany danych. Oczywiście, podłączone urządzenie do portu Centronics musi obsługiwać ten tryb. Komputer sprawdza w fazie negocjacji możliwości urządzenia podłączonego do portu Centronics.

Standardowy port Centronics udostępnia pięć linii sygnałowych, którymi urządzenie zewnętrzne może się komunikować z komputerem. Linie te służą normalnie do informowania komputera o statusie drukarki. Jednakże można je wykorzystać do przesłania bajtu danych jako dwóch nibble w dwóch kolejnych cyklach. Poniższa tabela definiuje nazwy sygnałów w trybie Nibble.

Sygnał w
trybie SPP
Nazwa w
trybie Nibble
We/Wy Opis wykorzystania sygnałów w trybie Nibble
STROBE STROBE Wy Nieużywane w transmisji zwrotnej.
AUTOFEED HostBusy Wy Sygnał potwierdzenia przyjęcia danych w trybie Nibble. Stan 0 oznacza gotowość komputera na przyjęcie danych.
SELECTIN 1284Active Wy Ustawione na 1 w trybie przesyłu Nibble.
INIT INIT Wy Nieużywane w transmisji zwrotnej.
ACK PtrClk We Ustawiane na 0 przy ważnym nibble, ustawiane na 1 w odpowiedzi na HostBusy 1.
BUSY PtrBusy We Przesyła bit nibble b3, później b7
PE AckDataReq We Przesyła bit nibble b2, później b6
SELECT Xflag We Przesyła bit nibble b1, później b5
ERROR DataAvail We Przesyła bit nibble b0, później b4
D0-D7 nieużywane    

Poniższy rysunek przedstawia  przebiegi sygnałów przy transmisji bajtu w trybie Nibble.

obrazek

  1. Komputer sygnalizuje gotowość na przyjęcie danych przez ustawienie linii HostBusy na 0.
  2. W odpowiedzi urządzenie zewnętrzne umieszcza bity młodszego nibble na liniach DataAvail, XFlag, AckDataReq i PtrBusy. W porcie Centronics są to linie statusu drukarki.
  3. Urządzenie zewnętrzne sygnalizuje komputerowi dostępność danych, ustawiając linię PtrClk na 0.
  4. Komputer odczytuje nibble i w odpowiedzi ustawia linię HostBusy na 1. Jest to sygnał dla urządzenia, że pierwszy nibble został odczytany.
  5. Urządzenie zewnętrzne ustawia linię PtrClk na 1, aby potwierdzić pierwszy nibble.
  6. Kroki od 1 do 5 zostają powtórzone dla starszego nibble.

Tryb nibble jest realizowany programowo. Ogranicza to maksymalną szybkość przesyłu danych do około 50 KB na sekundę. Nie stanowi to problemu w przypadku drukarek, lecz ogranicza inne urządzenia, które posiadają dużo większą szybkość transmisji danych (stacje dysków, modemy sieciowe, itp). Największą zaletą tego rozwiązania jest możliwość uzyskania tego trybu na wszystkich komputerach PC wyposażonych w standardowy port Centronics.

Tryb Byte

Późniejsze implementacje standardu Centronics, dokonane szczególnie przez IBM na modelach PS/2, dodały możliwość dwukierunkowej komunikacji poprzez linie danych D0-D7, zatem port Centronics mógł służyć zarówno do przesyłania danych od komputera jak i do ich odczytu z urządzenia zewnętrznego. Dzięki takiemu rozwiązaniu urządzenie zewnętrzne może przesyłać do komputera pełny bajt danych w jednym cyklu po liniach D0-D7. Tryb bajtowy również jest uaktywniany poprzez negocjację komputera z urządzeniem zewnętrznym.

Ten tryb pozwala urządzeniu zewnętrznemu przesyłać bajt danych do komputera PC z szybkością zbliżoną do trybu kompatybilności. Poniższa tablica przedstawia sygnały wykorzystywane w trybie Byte.

Sygnał w
trybie SPP
Sygnał w
trybie Byte
We/Wy Opis sygnałów w trybie Byte
STROBE HostClk Wy Ustawiane w stan 0 na końcu przesyłania każdego bajtu w celu zaznaczenia, że bajt został odczytany. Jest sygnałem potwierdzenia.
AUTOFEED HostBusy Wy Ustawiane na 0, gdy komputer jest gotowy do odczytu bajtu.. Ustawiane na 1, gdy bajt zostanie odczytany. Sygnał potwierdzenia odbioru.
SELECTIN 1284Active Wy Ustawione na 1, gdy komputer pracuje w trybie rozszerzonej transmisji.
INIT INIT Wy Nieużywane, ustawione na 1.
ACK PtrClk We Ustawione na 0, gdy dane są gotowe do odczytu z D0-D7. Ustawiane na 1 w odpowiedzi na przejście linii HostBusy w stan 1.
BUSY PtrBusy We Informuje o zajętości urządzenia.
PE AckDataReq We Występuje z DataAvail
SELECT Xflag We Znacznik rozszerzenia. W trybie Byte nie jest używany.
ERROR DataAvail We Ustawiane na 0 przez urządzenie zewnętrzne, gdy dane zwrotne są dostępne.
D0-D7 D0-D7 We/Wy Używane do przesyłu danych z urządzenia zewnętrznego do komputera.

obrazek

  1. Komputer sygnalizuje możliwość przyjęcia danych przez ustawienie linii HostBusy na 0.
  2. Urządzenie peryferyjne odpowiada przez umieszczenie bajtu danych na liniach D0-D7.
  3. Urządzenie informuje komputer o dostępności danych przez ustawienie linii PtrClk na 0.
  4. Komputer odczytuje bajt z linii D0-D7 i ustawia linię HostBusy na 1, aby poinformować urządzenie zewnętrzne, że odczytał dane, ale nie jest jeszcze gotowy na kolejny bajt.
  5. Urządzenie peryferyjne potwierdza przesłanie bajtu ustawiając PtrClk na 1. W tym czasie komputer tworzy ujemny impuls na linii HostClk, aby wysłać potwierdzenie do urządzenia zewnętrznego.
  6. Dla kolejnego bajtu powtarzane są kroki od 1 do 5.

Tryp EPP

EPP pochodzi od angielskiej nazwy Enhanced Parallel Port - Ulepszony Port Równoległy. Protokół EPP został opracowany przez firmy Intel, Xircom i Zenith Data Systems. Celem tego projektu było stworzenie portu równoległego o wysokich parametrach użytkowych, który byłby wciąż kompatybilny ze standardowym portem Centronics. Protokół EPP, oferując wiele korzyści wytwórcom urządzeń peryferyjnych sterowanych przez port równoległy, bardzo szybko się rozpowszechnił i stał się opcjonalnym sposobem przesyłu danych. Stało się to przed przyjęciem standardu IEEE 1284.

Protokół EPP udostępnia cztery typy cykli przesyłu danych:

  1. Cykl Zapisu Danych
  2. Cykl Odczytu Danych
  3. Cykl Zapisu Adresu
  4. Cykl Odczytu adresu

Cykle danych używane są do przesyłu danych pomiędzy komputerem a urządzeniem zewnętrznym. Cykle adresu służą do przekazywania adresu, kanału lub polecenia i informacji sterujących. W poniższej tabeli przedstawiamy sygnały używane przez tryb EPP wraz z ich odpowiednikami dla portu SPP.

Sygnał w
trybie SPP
Sygnał w
trybie EPP
We/Wy Opis sygnałów w trybie EPP
STROBE WRITE Wy Aktywny w stanie 0. Oznacza operację zapisu. W cyklu odczytu ma stan 1.
AUTOFEED DATASTB Wy Aktywny w stanie 0. Oznacza wykonywanie operacji odczytu lub zapisu danych.
SELECTIN ADDRSTB Wy Aktywny w stanie 0. Oznacza wykonywanie operacji odczytu lub zapisu adresu.
INIT RESET Wy Aktywny w stanie 0. Resetuje urządzenie zewnętrzne.
ACK INTR We Przerwanie z urządzenia zewnętrznego. Wykorzystywany do generacji przerwania w komputerze.
BUSY WAIT We Sygnał potwierdzenia. W stanie 0 oznacza zgodę na rozpoczęcie cyklu. W stanie 1 oznacza zgodę na zakończenie cyklu.
D0-D7 D0-D7 We/Wy Dwukierunkowe linie danych oraz adresów.
POUT definiowany We Może być używane w różny sposób przez każde urządzenie peryferyjne.
SELECT definiowany We Może być używane w różny sposób przez każde urządzenie peryferyjne.
ERROR definiowany We Może być używane w różny sposób przez każde urządzenie peryferyjne.

Na rysunku poniżej przedstawiamy przykładowy cykl zapisu danych - w cyklu adresu zamiast linii DATASTB jest używana w identyczny sposób linia ADDRSTB. W cyklu odczytu linia WRITE zachowuje stan 1 przez cały czas trwania cyklu. Sygnał IOW (ang. Input Output Write - Zapis Do Portu We/Wy) jest sygnałem mikroprocesora, a nie portu EPP. Znalazł się on na rysunku po to, aby pokazać, iż cały cykl zapisu EPP do urządzenia zewnętrznego odbywa się w czasie jednego cyklu we/wy wykonywanego przez procesor.

obrazek

  1. Mikroprocesor wykonuje cykl we/wy zapisu do portu danych EPP.
  2. Linia WRITE zostaje ustawiona w stan 0 i na liniach D0-D7 pojawiają się dane.
  3. Linia DATASTB przechodzi w stan 0, ponieważ linia WAIT posiada stan 0.
  4. Port czeka na potwierdzenie od urządzenia peryferyjnego (linia WAIT musi przejść w stan 1).
  5. Linia DATASTB powraca do stanu 1 i cykl EPP kończy się.
  6. Kończy się cykl we/wy mikroprocesora.
  7. Linia WAIT przechodzi w stan 0, co oznacza zgodę na rozpoczęcie kolejnego cyklu.

Ponieważ cykl przesyłu danych w porcie EPP odbywa się w ciągu jednego cyklu we/wy mikroprocesora, port ten może osiągnąć dużą szybkość przesyłu danych - od 500KB do 2MB na sekundę. Jest to jedna z głównych zalet trybu EPP.

Tryb ECP

ECP jest skrótem angielskiej nazwy Extended Capability Port - Port o Rozszerzonych Możliwościach. Standard ECP został opracowany wspólnie przez Microsoft i Hewlett Packard do współpracy z drukarkami i skanerami. Zapewnia on szybką, dwukierunkową wymianę danych pomiędzy komputerem a urządzeniem zewnętrznym. Protokół ECP umożliwia transmisję dwukierunkową dla danych oraz dla rozkazów. Zaimplementowano również kompresję danych typu RLE (ang. Run Length Encoding), dzięki której ilość przesyłanych danych może być istotnie mniejsza - jest to szczególnie pożądane przy urządzeniach, które wymagają przesyłania dużej liczby danych, takich jak drukarki laserowe i skanery. Jednakże tryb kompresji RLE musi być obsługiwany po obu stronach toru transmisyjnego, aby można było z niego skorzystać.

Kodowanie RLE polega na zastępowaniu powtarzających się ciągów znaków lub bajtów informacją o ich liczbie powtórzeń. Załóżmy, że mamy ciąg:

AAAAAAAAAABBBBBCCCCCCCCCCCCCCCDDDDDDDDDD

W ciągu tym występuje 40 znaków = 40 bajtów danych. Powtarzające się znaki zastępujemy znakiem oraz liczbą jedno bajtową, określającą ilość powtórzeń znaku. Otrzymamy:

A ( 10 ) B ( 5 ) C ( 15 ) D ( 10 )

Na niebiesko zaznaczyliśmy bajty, które zawierają liczbę powtórzeń poprzedzającego je czerwonego znaku. Teraz liczba bajtów wynosi tylko 8 - dane skompresowaliśmy do 20% pierwotnej objętości, czyli 5 do 1. Tego typu powtarzające się dane często występują w grafice - np. tło składa się z jednolitych, dużych obszarów, wypełnionych tym samym kolorem kolorem. Ponieważ ilość powtórzeń jest przesyłana w inny sposób niż znaki, przy znakach nie powtarzających się nie przesyłamy bajtu ilości powtórzeń. Taki system pozwala zawsze skompresować dane, jeśli zawierają powtórki. Przy danych różnorodnych nic nie tracimy.

Port ECP pozwala również na adresowanie kanałów, dzięki czemu komputer może komunikować się niezależnie z różnymi urządzeniami logicznymi, które fizycznie znajdują się w jednej obudowie - np. urządzenia wielofunkcyjne zawierające jednocześnie fax/modem, skaner i drukarkę. Adresowanie kanałów umożliwia komputerowi pobieranie danych z modemu w czasie, gdy kanał drukarki jest zajęty przetwarzaniem i wydrukiem dokumentu. W trybie kompatybilności CPP, gdy drukarka staje się zajęta przetwarzaniem danych, komunikacja z nią nie jest możliwa. W trybie ECP komputer ma możliwość odwołania się do innego kanału i transmisja może odbywać się dalej.

Protokół ECP zmienia definicje sygnałów SPP, aby były bardziej spójne z regułami transmisyjnymi w tym trybie. W poniższej tabeli zebraliśmy sygnały stosowane w trybie ECP.

Sygnał w
trybie SPP
Sygnał w
trybie ECP
We/Wy Opis sygnałów w trybie ECP
STROBE HostClk Wy Używane wraz z PeriphAck do przesyłu danych lub adresu do urządzenia peryferyjnego.
AUTOFEED HostAck Wy Udostępnia stan Rozkazu/Danych w transmisji do urządzenia. Używane z PeriphClkdo przesyłu danych w kierunku odwrotnym.
SELECTIN 1284Active Wy Ustawione na 1, gdy komputer obsługuje tryb transmisji rozszerzonej.
INIT ReverseRequest Wy Ustawiane na 0, aby przełączyć kanał na transmisję w odwrotnym kierunku.
ACK PeriphClk We Używane wraz z HostAck do przesyłu danych w kierunku odwrotnym.
BUSY PeriphAck We Używane z HostClk d przesyłu danych lub adresu do urządzenia.. W kierunku odwrotnym udostępnia stan Rozkazu/Danych.
PE AckReverse We Ustawiane na 0 w celu potwierdzenia dla ReverseRequest.
SELECT Xflag We Znacznik rozszerzenia.
ERROR PeriphRequest We Ustawiane na 0 przez urządzenia w celu poinformowania komputera o dostępności danych zwrotnych.
D0-D7 D0-D7 We/Wy Używane do przesyłu danych pomiędzy komputerem a urządzeniem zewnętrznym.

Na obrazku poniżej przedstawiono cykle przesyłu informacji od komputera do urządzenia zewnętrznego. Gdy linia HostAck jest ustawiona na 1, to przesyłane są dane. Gdy linia HostAck jest ustawiona na 0, komputer przesyła rozkaz, który jest albo liczbą powtórzeń poprzednio przesłanego bajtu danych dla RLE, albo adresem kanału urządzenia logicznego. Rozpoznanie umożliwia najstarszy bit D7. Jeśli ma on wartość 0, to bity D0-D6 zawierają liczbę powtórzeń dla RLE (0-127). Jeśli bit D7 ma wartość 1, to bity D0-D6 określają numer kanału logicznego (0-127). Na obrazku tym przedstawiono przesłanie bajtu danych, po którym następuje przesłanie rozkazu.

obrazek

  1. Komputer umieszcza dane na liniach D0-D7 oraz zaznacza cykl danych przez ustawienie na 1 linii HostAck.
  2. Komputer ustawia linię HostClk na 0, aby zasygnalizować gotowość danych dla urządzenia peryferyjnego.
  3. Urządzenie peryferyjne potwierdza gotowość do odczytu przez ustawienie linii PeriphAck na 1.
  4. Komputer ustawia linię HostClk z powrotem na 1. W tym momencie urządzenie peryferyjne powinno odczytać dane z linii D0-D7.
  5. Urządzenie peryferyjne ustawia linię PeriphAck na 0, aby powiadomić komputer, że jest gotowe na przyjęcie kolejnego bajtu danych.
  6. Cykl się powtarza, jednakże tym razem będzie to cykl rozkazowy, ponieważ linia HostAck przyjmuje stan 0.

Kolejny rysunek przedstawia przesłanie danej i rozkazu w kierunku odwrotnym - od urządzenia peryferyjnego do komputera.

obrazek

  1. Komputer żąda transmisji kanałem zwrotnym przez ustawienie linii ReverseRequest na 0.
  2. Urządzenie peryferyjne potwierdza gotowość do transmisji zwrotnej przez ustawienie linii AckReverse na 0.
  3. Urządzenie peryferyjne umieszcza dane na liniach D0-D7 i ustawia PeriphAck na 1, aby zaznaczyć cykl danych.
  4. Urządzenie ustawia linię PeriphClk na 0, aby zaznaczyć ważność danych na liniach D0-D7.
  5. Komputer potwierdza ustawieniem  HostAck na 1.
  6. Urządzenie ustawia linię PeriphClk na 1. W tym momencie komputer powinien odczytać dane z linii D0-D7.
  7. Komputer ustawia linię HostAck na 0, aby zgłosić gotowość przyjęcia kolejnej danej.
  8. Cykl się powtarza, lecz tym razem będzie to cykl rozkazu, ponieważ urządzenie zewnętrzne ustawiło linię PeriphAck na 0.

Powyższy opis nie wyczerpuje wszystkich cech trybu ECP. Niestety, ilość informacji jest tutaj dosyć obszerna i zainteresowanych muszę odesłać do bardziej szczegółowej literatury.


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.