You are on page 1of 8

The PS/2 Mouse/Keyboard Protocol

rdo: http://www.computer-engineering.org/ Autor: Adam Chapweske Ostatnia aktualizacja: 22/07/05 Na samym pocztku: Wszystkie informacje zawarte w tym artykule s jakie s i bez adnych gwarancji na dziaanie. Ten dokument jest chroniony przez prawa autorskie. Ten dokument moe by kopiowany tylko i wycznie w niezmienionej formie, zawierajc rda, autora, dat i prawdziwe informacje. Wstp: Ten dokument opisuje interfejs uywany przez mysz PS/2, klawiatur PS/2 i klawiatur AT. Omwiono fizyczny i elektryczny interfejs, tak jak i protok. Jeli potrzebne jest wicej informacji takich jak komendy, pakiety danych, lub inne specyficzne informacje dla klawiatury lub myszy, napisaem osobne dokumenty dla kadego z urzdze.(Oryginalna angielska wersja). The PS/2 (AT) Keyboard Interface The PS/2 Mouse Interface Fizyczny interfejs: Fizycznie port PS/2 posiada dwa typy pocze: 5-nkowy DIN lub 6-nkowy miniDIN. Obydwa poczenia s cakowicie (elektrycznie) podobne, jedyna praktycznie rnica pomidzy nimi wystpuje w uoeniu nek. Oznacza to, e dwa typy pocze mona w atwy sposb zamieni za pomoc prostego adaptera. Mona go wykona samemu poprzez poczenie odpowiednich nek przewodami na jakichkolwiek gniazdach i wtyczkach. DIN standard zosta stworzony przez Niemieck Organizacj Standaryzujc (Deutsches Institut fuer Norm). Ich strona jest dostpna pod adresem http://www.din.de/ (Ta strona jest w jzyku niemieckim, ale wikszo ich stron dostpna jest rwnie w jzyku angielskim). W klawiaturach PC uywa si poczenia 6-nkowego mini-DIN lub 5-nkowego DIN. Jeli klawiatura posiada wtyk 6-nkowy mini-DIN a komputer ma gniazdo 5nkowe DIN (lub odwrotnie), mona je zrobi kompatybilne poprzez adaptery opisane poniej. Klawiatura z 6-nkowym mini-DIN czsto nazywane s klawiaturami PS/2, jako e te z 5-nkowym DIN nazywane klawiaturami AT ( klawiatury XT rwnie posiaday wtyki 5-nkowe, ale s do stare i nie produkowane od wilu lat). Wszystkie nowoczesne klawiatury produkowane dla PC s raczej PS/2, AT lub USB. Ten dokument nie zawiera opisu urzdze USB, ktre posiadaj zupenie inny interfejs.

Myszki byy i s produkowane w rnej iloci obudw i rozmiarw (i interfejsw). Najbardziej popularny typ to prawdopodobnie mysz PS/2, mysz USB dopiero zdobywa popularno. Jeszcze niedawno, mysz szeregowa (RS232) bya rwnie do popularna ale przemys komputerowy zrezygnowa z niej na rzecz myszy PS/2 i USB. Ten dokument opisuje tylko mysz PS/2. Jeli zainteresowany jeste interfejsem myszy szeregowej lub USB, to jes wiele gdzie w internecie dostpnych informacji na ten temat. Kabel czcy klawiatur/mysz z komputerem ma okoo metra dugoci i zawiera od czterech do szeciu 26AWG przewodw otoczonych przez cienk powok folii ekranujcej. Jeli potrzebne jest duszy kabel, mona kupi przeduacz PS/2 prawie w kadym sklepie elektronicznym. Nie powinno si czy kilku przeduaczy razem. Jeli potrzebny jest przeduacz trzymetrowy, naley kupi trzymetrowy. Nie czy poprostu 6 przewodw razem. Moe to doprowadzi do zej komunikacji pomidzy klawiatur/myszk a komputerem. Istnieje jeszcze inny rodzaj podczenia klawiatury ni opisane na tej stronie. W wikszoci kable poczeniowe s podczone na stae do klawiatury, s te takie w ktrych kabel nie jest doczony i mona go dosta osobno. Te kable maj wtyk DIN z jednej strony (z tej do podczenia do komputera) i wtyk SDL (Sheilded Data Link) z drugiej do podaczenia do klawiatury. SDL zosta stwoony przez firm o nazwie "AMP." Ten wtyk jest troch podobny do wtyku telefonicznego ma zamiast pinw czy nek wtopione w tworzywo przewody, i klips trzyma go w gniedzie. Jeli potrzebne jest wicej informacji na temat tego podczenia mona odwiedzi stron internetow firmy AMP http://www.connect.amp.com/. Na moim diagramie SDL moe troch przypomina podczenie USB, ale w rzeczywistoci s upenie inne. Trzeba mie w wiadomoci, SDL podczenie ma sprynujce i ruchome czci a USB nie. Wyprowadzenia wszystkich opisanych podcze pokazane s poniej. Mski eski 5 - nkowy DIN (AT/XT): 1 Clock 2 Data 3 Nie podczony 4 Ground 5 Vcc (+5V) 6 nkowy Mini-DIN (PS/2): 1 - Data 2 Nie podczony 3 - Ground 4 - Vcc (+5V) 5 - Clock 6 Nie podczony

(Wtyk)

(Gniazdo)

Mski

eski

(Wtyk)

(Gniazdo)

6-pin SDL: A Nie podczony B Data C Ground D Clock E Vcc (+5V) F Nie podczony Interfejs elaktryczny: Uwaga: W tym dokumencie, Bd uywa nazwy komputer jako komputer lub cokolwiek do czego podczona jest klawiatura/myszka. Oraz myszka w odniesieniu do myszki/klawiatury. Vcc/Ground doprowadza napicie zasilania do myszki. Klawiatura lub myszka nie powinny pobiera prdu wikszego ni 275 mA z komputera i trzeba uwaa na ewentualne skoki poboru prdu. Taka sytuacja moe si przyday w momencie podczania myszki na gorco (np.: podczenie/odczenie myszki kiedy komputer jest zaczony). Starsze pyty gwne miay montowane powierzchniowo bezpieczniki zabezpieczajce port klawiatury i myszki. Kiedy bezpiecznik si przepali, pyta gwna bya nie uyteczna dla uytkownika i nie do naprawy dla przecitnego technika. Wikszo nowszych pyt gwnych ma zabudowane auto-bezpieczniki i problem waciwie przesta istnie. W kadym bd razie nie jest to standard i istnieje jeszcze wiele starszych typw pyt gwnych. Ja nie zalecam podcznia myszki na gorco Streszczenie: Specyfikacja zasilania Vcc = +4.5V to +5.5V. Maksymalny Prd= 275 mA. Obie linie DATA i CLOCK s typu otwarty kolektor podcignite rezystorami do plusa zasilania (Vcc). Interfejs otwarty kolektor ma dwa moliwe stany: niskiej lub wysokiej impedancji. W stanie niskiej impedancji tranzystor ciga lini do poziomu masy. W stanie wysokiej impedancji linia nie jest sterowana (ani cigana do poziomu masy, ani nie podcigana do poziomu napicia zasilania). Ponadto , rezystory podcigajce s podczone pomidzy lini a napicie zasilania (Vcc), wic linie s podcignite do jedynki jeli adne z urzdze na lini nie cignie ich do masy. Dokadna warto tych rezystorw nie jest zbytnio wana (1~10 kOhm); Wiksza rezystancja w rezultacie pobiera mniej prdu a mniejsza rezystancja powoduj szybsz reakcj. Typowy interfejs otwarty kolektor pokazany jest poniej.

Rysunek 1: oglny interfejs otwarty kolektor. Linie DATA i CLOCK s czytane odpowiednio przez nki A i B. Obie linie s normalnie utrzymywane na poziomie +5V, ale mog by cignite do poziomu masy przez ustawienie logicznej jedynki na nkach C i D. W rezultacie DATA odpowiada znegowanemu D, CLOCK odpowiada znegowanemu C.

Uwaga: Patrzc na przykady uyte na tej stronie internetowej, zauwaysz e uyem kilku trikw w zaimplementowaniu iterfejsu otwarty kolektor w mikrokontrolerze PIC. Uyem tych samych nek jako wejcie i wyjcie, i uaktywniem wewntrzne rezystory podcigajce zamiast zewntrznych rezystorw. Linia jes zerowana przez ustawienie wyprowadzeni portu jako wyjcie i zapisanie do niego zera. Linia jest ustawiona w stan wysokiej impedancji poprzez ustawienie wyprowadzenia jako wejcie. Biorc pod uwag, e PIC ma wbudowane zabezpiecenia diodowe i odpowiedni zdolno prdow. Myl, e jest to dozwolona konfiguracja. Prosz da zna jeeli wasze dowiadczenie mwi wam przeciwnie. Komunikacja: Opis oglny Mysz i klawiatura typu PS/2 ma zaimplementowany dwukierunkowy synchroniczny protok. Linia jest wolna gdy obie linie DATA i CLOCK s ustawione (otwart kolektor). Jest to jedyny stan w ktrym myszka/klawiatura moe rozpocz transmisj danych. Komputer ma najwysz kontrol nad obiema liniami i moe zachamowa komunikacj w kadym momencie poprzez wyzerowanie lini CLOCK. Sygna zegarowy CLOCK generuje zawsze myszka. Jeli komputer chce wysa dane, musi najpierw zachamowa komunikacj od myszki zerujc lini CLOCK. Komputer nastpnie zeruje lini DATA i zwalnia lini CLOCK. Jest to wezwanie-do -odbioru i rozpoczcia generowania przez myszk sygnau zegarowego. Streszczenie: Stany linii. Data = ustawiony, Clock = ustawiony: Stan bezczynnoci. Data = ustawiony, Clock = wyzerowany: Komunikacja zahamowana. Data = wyzerowany, Clock = ustawiony: Komputer - bdzie wysyanie.

Wszystkie dane s jako jeden bajt transmitowane w czasie i kady bajt jest wysyany jako pakiet zawierajcy 11-12 bitw. Te bity to:

1 start bit. Zawsze 0. 8 bitw danej, najmniej znaczcy bit jako pierwszy. 1 bit parzystoci (nieparzysto). 1 stop bit. Zawsze1. 1 bit potwierdzenia (tylko przy komunikacji komputera do myszki)

Bit parzystoci (parity bit) jest ustawiony gdy w transmitowanym bajcie wystpuje parzysta liczba jedynek i wyzerowany jeli ta liczba jest nieparzysta. Liczba jedynek w bajcie danej plus bit parzystoci zawsze daje nieparzyst liczb jedynek (odd parity.) Jest to uywane w celu wykrycia bdu. Myszka/klawiatura musi sprawdzi ten bit i jeli parzysto si nie zgadza oznacza to, e nadana komenda jest bdna. Dane przesyane z myszki do komputera s czytane na opadajcym zboczu sygnau zegarowego. Dane przesyane z komputera do myszki s czytane na rosnacym zboczu sygnau zegarowego. Czstotliwo zegara musi by w przedziale 10 16.7 kHz. Oznacza to, e CLOCK musi by ustawiony przez 30 50 mikrosekund i wyzerowany przez 30 50 mikrosekund. Jeli chcesi zbudowa urzdzenie zastpcze myszy, klawiatury lub komputera, powinno si modyfikowa i czyta dane w poowie kadej celi czasu. W zakresie 15 25 mikrosekund od zbocza opadajcego lub rosncego. Jeszcze raz, mysz zawsze generuje sygna CLOCK, ale to komputer ma zawsze najwysz kontrol nad komunikacj. Czasy podane przeze mnie s decydujce! CLOCK musi si zawiera w tych przedziaach. Komunikacja: Myszka do komputera. Obie linie DATA i CLOCK musz by jako wejcia (otwarty kolektor). Rezystor musi by podczony do kadej lini i +5V, tak wic wolny stan linii jest ustawiony (1). Kiedy klawiatura lub myszka chc wysa dane, najpierw sprawdzaj lini zegarow CLOCK aby si upewni, e jest w stanie wysokim. Jeli nie, oznacza to e komputer hamuje komunikacj i myszka/klawiatura musz buforowa wszystkie przeznaczone do wysania dane a do momentu zwolnienia lini zegarowej. Linia zegarowa CLOCK musi by w cigym stanie wysokim przez conajmniej 50 mikrosekund zanim myszka bdzie moga rozpocz transmisj danych. Jak opisaem w poprzednim rozdziale klawiatura i myszka uywaj szeregowej 11-bitowej ramki. Te bity to:

1 start bit. Zawsze 0. 8 bitw danej, najmniej znaczcy bit jako pierwszy. 1 bit parzystoci (nieparzysto). 1 stop bit. Zawsze1.

Mysz/klawiatura przypisuj wartoci bitom na lini danych kiedy linia CLOCK ma warto 1 i czytane prez komputer kiedy linia CLOCK jest 0. Przedstawiaj to diagramy 2 i 3. Diagram 2: Komunikacja Urzdzenie-do-Kontrolera. Linia Data zmienia stan gdy linia Clock jest ustawiona, a dane s czytane kiedy linia Clock jest wyzerowana.

Diagram 3: Zeskanowany sygna dla klawisza "Q" (15h) wysanego z klawiatury do komputera. Kana A jest sygnaem zegarowym Clock; kana B jest sygnaem Data.

--Czstotliwo zegara wynosi 10-16.7 kHz. Czas od rosncego zbocza sygnau zegarowego do przejcia sygnau DATA musi by minimum 5 mikrosekund. Czas od przecia sygnau DATA do opadajcego zbocza sygnau zegarowego musi by minimum 5 mikrosekund i nie wicej ni 25 mikrosekund. Komputer moe zachamowa komunikacj w kadym momencie poprzez wyzerowanie lini CLOCK na minium 100 mikrosekun. Jeli transmisja zostaje zachamowana przed 11 impulsem zegarowym, myszka musi przerwa aktualn transmisj i przygotowa si do ponownej transmisji aktualnego kawaka danej kiedy to komputer zwolni lini zegarow CLOCK. Kawaek danej moe by kodem odpowiedzi, kode ID myszy, pakietem informacji o przesuniciu itp. Na przykad, jeli klawiatura zostaa zachamowana podczas przesyania drugiego bajtu z pakietu dwubajtowej danej, bdzie musiaa ponownie wysa obydwa bajty przerwanego kodu, nie tylko przerwanego bajtu. Jeli komputer zahamuje lini zegarow zanim nastpi jej piersze przejcie ze stanu wysokiego na niski lub po opadajcym zboczu ostatniego impulsu zegarowego, myszka/klawiatura musz ponownie transmitowa adnych danch. Jakkolwiek, jeli nowe dane s przygotowane do wysania musz zosta buforowane, a komputer zwonlni lini CLOCK. Klawiatura ma na to 16-bajtowy bufor. Jeli wicej ni 16 bajtw zostanie wystukane na klawiaturze, to nastpne bd ignorowane a pojawi si wolne miejsce w buforze. Myszka zapisuje do bufra tylko najbardziej aktualny pakiet poruszenia si.

Komunikacja: Komputer do myszki. Pakiet jest wysyany troch inaczej w komunikacji z komputera do myszki.... Przede wszystkim, to urzdzenie PS/2 (myszka) generuje impulsy zegarowe. Jeli komputer chce wysa dane, musi najpierw wyzerowa lini CLOCK i DATA w celu wysania rzdania generowania sygnau zegarowego, jak poniej:

Wstrzymanie komunikacji poprzez wyzerowanie lini CLOCK na nie mniej ni 100 mikrosekund. Narzucenie rzdania poprzez wyzerowanie lini DATA i zwolnienie lini CLOCK.

Myszka powinna sprawdza ten stan w odstpach czasu nie przekraczajcych 10 milisekund. Kiedy myszka wykryje ten stan, zacznie generowa sygna zegarowy na lini CLOCK podczas 9 bitw danej i bitu stop na lini DATA. Komputer zmienia stan na lini DATA tylko kiedy linia CLOCK jest w stanie niskim, a dane s czytane przez myszk tylko kiedy CLOCK jest w stanie wysokim. Odwrotnie ni jest to w komunikacji myszki do komputera. Po odebraniu bitu stop, myszka potwierdzi odebranie danych poprzez wyzerowanie lini DATA i wygenerowanie jednego ostatniego impulsu zegarowego na lini CLOCK. Jeli komputer nie zwolni lini DATA po 11 cyklu zegarowym, myszka bdzie kontynuowaa generowanie sygnau zegarowego do momentu zwolninia lini DATA. (myszka wtedy wygeneruje bd). Komputer moe przerwa transmisj w czasie przed 11 cyklem zegrowym (bitem potwierdzenia) przez przytrzymanie CLOCK wyzerowanego na minimum 100 mikrosekund. Aby przedstawi ten proces bardziej zrozumiale, przedstawiam kroki jakie musi przej komputer aby wysa dane do myszki/klawiatury. 1) Wyzeruj lini CLOCK na minimum 100 microsekund. 2) Wyzeruj lini DATA. 3) Zwolnij lini CLOCK. 4) Poczekaj a myszka wyzeruj lini CLOCK. 5) Ustaw/Wyzeruj lini DATA aby wysa pierwszy bit. 6) Poczekaj a myszka ustawi lini CLOCK. 7) Poczekaj a myszka wyzeruje lini CLOCK. 8) Powtrzy kroki 5-7 dla pozostaych 7 bitw i bitu parzystoci. 9) Zwolni lini DATA. 10) Pczekaj a myszka wyzeruje lini DATA. 11) Pczekaj a myszka wyzeruje lini CLOCK. 12) Poczekaj a myszka zwolni lini DATA i CLOCK Diagram 3 pokazuje to graficznie, a Diagram 4 przedstawia szczegowo lini CLOCK, aby pokaza, ktre sygnay s generowane przez komputer, a ktre przez myszk PS/2. Uwaga: zmiana zegara dla bitu "ack" przejcie DATA lini wystpuje kiedy linia CLOCK jest ustawiona ( zamiast wyzerowanej jak to ma miejsce w przypadku pozostaych 11 bitw).

Diagram 3: Komunikacja komputer-do-myszki.

Diagram 4: Szczeglowa komunikacja komputer-do-myszki.

W odniesieniu do diagramu 4, s tu dwie zawartoci lini CLOCK na ktre komputer zwraca uwag. (a) jest to czas ktry zabiera myszcze do rozpoczcia generowania cykli zegarowych po tym jak komputer inicjujco ciga lini CLOCK do poziomu masy, ktre nie moe trwa duej ni 15 ms. (b) jest to czas ktry jest potrzebny na wysnie danych, ktry nie moe przekroczy 2ms. W obu przypadkach przekroczenie tych limitw powinno spowodowa e komputer wygeneruje bd. Natychmiast po otrzymaniu bitu ACK, komputer moe cign lini CLOCK do poziomu masy blokujc w ten sposb transmisj na czas przetwarzania przez niego danych. Jeli rozkaz wysany przez komputer wymaga odpowiedzi, ta odpowied musi nastpi nie pniej ni 20ms po tym jak komputer zwolni lini CLOCK. Jeli to nie nastpi, komputer generuje bd.

You might also like