Elektronika.lt

Elektronika.lt - elektronikos, informacinių ir
ryšių technologijų portalas

Adresas: http://www.elektronika.lt
El. paštas: info@elektronika.lt
 Atspausdinta iš: http://www.elektronika.lt/teorija/kompiuterija/2903/ps-2-peles-klaviaturos-protokolas/spausdinti/

PS/2 pelės, klaviatūros protokolas

Publikuota: 2005-12-16 13:39
Tematika: Kompiuterija
Skirta: Pradedantiems
Autorius: el. paštas Adam Chapweske
Aut. teisės: ©Computer-Engineering.org
Inf. šaltinis: Computer-Engineering.org

Fizinė PS/2 jungtis yra dviejų tipų: penkių kontaktų DIN arba šešių mini-DIN. Abi jungtys yra visiškai elektroniškai identiškos; praktiškai vienintelis skirtumas yra kontaktų išdėstymas. Tai reiškia, kad jas galima keisti tarpusavyje. DIN standartą sukūrė Vokietijos Standartizacijos institutas.


Fizinė PS/2 jungtis yra dviejų tipų: penkių kontaktų DIN arba šešių mini-DIN. Abi jungtys yra visiškai elektroniškai identiškos; praktiškai vienintelis skirtumas yra kontaktų išdėstymas. Tai reiškia, kad jas galima keisti tarpusavyje. DIN standartą sukūrė Vokietijos Standartizacijos institutas (Deutsches Institut fur Normung) (ši svetainė yra vokiečių kalba, bet didžioji puslapių dalis prieinama ir angliškai).

Kompiuterio klaviatūros naudoja tiek DIN, tiek mini-DIN jungtis. Klaviatūros su mini-DIN jungtimis dažnai vadinamos PS/2 klaviatūromis, o su DIN – AT įrenginiais (XT klaviatūros taip pat naudojo DIN jungtis, bet jos ganėtinai senos, ir ilgai gaminamos nebuvo). Visos modernios klaviatūros skirtos kompiuteriams yra su mini-DIN, DIN arba USB jungtimis. Šis straipsnis neapžvelgia USB įrenginių, kurių sąsaja visiškai kitokia.

Pelės gaminamos įvairių formų ir sąsajų. Greičiausiai, populiariausios yra PS/2 pelės, bet USB įrenginiai sparčiai populiarėja. Prieš kelis metus, pelės su COM (RS232) sąsaja buvo populiarios, bet gamintojai keičia jas į PS/2 ar USB peles. Šiame dokumente aprašomos tik PS/2 pelės. Jai jus domina USB pelės, internete apie tai tikrai rasite informacijos.

Kabelis, jungiantis klaviatūrą ar pelę su kompiuteriu, paprastai būna apie dviejų metrų ilgio ir susideda iš keturių – šešių izoliuotų laidų su plonu folijos šarvu. Jai Jums reikalingas ilgesnis kabelis, galite įsigyti PS/2 kabelio prailgintuvą. Neturėtumėte jungti daugiau nei vieno prailgintuvo. Jei Jums reikalingas 10 metrų ilgio kabelis, nusipirkite 10 metrų ilgio prailgintuvą, o ne penkis dviejų metrų ilgio, nes dėl to prastėja signalo kokybė.

Yra dar viena jungtis kurią galite rasti klaviatūrose. Daugumoje klaviatūrų kabelis yra klaviatūros dalis, bet kartais, jis yra atskiras. Tokie kabeliai yra su DIN jungtimi viename gale, o kitame yra SDL jungtis. SDL jungtį sukūrė firma „AMP“. Ši jungtis yra kiek panaši į telefono jungtį. Jai Jums reikia daugiau informacijos apie SDL jungtį paieškokite „AMP“ interneto svetainėje. Nesumaišykite SDL jungties su USB jungtimi nors jos ir atrodo panašiai žemiau pateiktoje diagramoje – tai visiškai skirtingos jungtys. Turėkite omenyje, kad SDL jungtyje yra judančių detalių, o USB – ne.

Jungčių kontaktų išdėstymai:

Elektroninė sąsaja

Pastaba: šiame straipsnyje „terminalas“ yra įrenginys prie kurio per PS/2 sąsają prijungta klaviatūra, pelė ar kitas įrenginys.

„Vcc“ ir „Ground“ yra įrenginio maitinimas. Pastarasis neturėtų vartoti didesnės nei 275 mA srovės, nes pagrindinė kompiuterio plokštė gali būti pažeista. Senesnės pagrindinės plokštės turėdavo paviršinį saugiklį, saugantį pelės ar klaviatūros jungtis. Kai šis saugiklis perdegdavo, plokštė tapdavo bevertė, ir sunkiai pataisoma vidutiniam meistrui. Dauguma naujesnių plokščių turi automatinius saugiklius, kurie išsprendžia šią problemą. Tačiau tai nėra standartas ir nemažai pagrindinių plokščių yra su vienkartiniai saugikliais, todėl aš nerekomenduoju prijungti ar atjungti įrenginius esant veikiančiam kompiuteriui.

Apibendrinimas: Elektrinė specifikacija:
Vcc = +4,5 V iki +5,5 V
Maksimali srovė = 275 mA

DATA ir CLOCK šynos yra atviro kolektoriaus su „pull-up“ rezistoriumi. Atviro kolektoriaus sąsaja turi du lygius: didelės varžos aukštą ir žemą. Esant žemam lygiui tranzistorius sumažina įtampą iki GND lygio. Didelės varžos lygyje šyna veikia kaip įėjimas. Be to, rezistorius yra sujungtas su šyna, ir jai nei terminalas nei įrenginys nekeičia lygio į žemą, šauktame lygyje. Tiksli rezistoriaus varža nėra svarbi (1–10 KOhm), bet esant didesnei varžai sumažėja energijos suvartojimas, o mažesnei didėja kilimo greitis. Bendra atviro kolektoriaus sąsaja parodyta žemiau:


1 pav. Bendra atviro kolektoriaus sąsaja. DATA ir CLOCK yra atitinkamai nuskaitomi mikrovaldiklio A ir B išvaduose. Abi linijos yra laikomos +5 V lygyje, bet būna žemame lygyje jai C (DATA) ar D (CLOCK) šyna išvedamas loginis „1“.

Komunikacija: Bendras aprašymas

PS/2 įrenginiai naudoja abipusį sinchroninį nuoseklų protokolą. Šyna yra laisva, kai abi linijos yra aukštame lygyje. Tai vienintelė būsena, kada įrenginys gali pradėti siųsti duomenis. Susijungimas valdomas terminalo ir jis gali bet kada nutraukti susijungimą pakeisdamas CLOCK lygį į žemą.

CLOCK impulsus visada generuoja įrenginys. Jai terminalas nori siųsti informaciją, jis pakeičia CLOCK lygį žemu, tada DATA lygį žemu ir atlaisvina CLOCK šyną. Tai siuntimo užklausos būsena, kuri nurodo įrenginiui, kad jis turi pradėti generuoti CLOCK impulsus.

Apibendrinimas: šynos būsenos
DATA = 1, CLOCK = 1: Ramybės būsena.
DATA = 1, CLOCK = 0: Susijungimas nutrauktas.
DATA = 0, CLOCK = 1: Kompiuterio siuntimo užklausa.

Visa informacija yra siunčiama po vieną baitą vienu metu ir kiekvienas baitas siunčiamas rėme susidedančiame iš 11–12-kos bitų. Šie bitai yra:

  • 1 Pradžios bitas. Jis visada 0.
  • 8 informacijos bitai, mažiausios reikšmės bitas - pirmas.
  • 1 lygybės bitas (nelyginis skaičius).
  • 1 pabaigos bitas. Jis visada 1.
  • 1 patvirtinimo bitas (tik terminalas-įrenginys susijungime).

Lygybės bitas yra 1 jai vienetų skaičius informacijos bituose lyginis ir 0, jai vienetų skaičius nelyginis. Vienetų skaičiaus ir lygybės bito suma visada nelyginė. Tai naudojama aptikti klaidoms. Įrenginys turi visada patikrinti šį bitą, ir jai jis neteisingas, jis turi atsakyti, kad gavo klaidingą komandą.

Informacija siunčiama iš įrenginio į terminalą skaitoma CLOCK impulso pabaigoje; informacija siunčiama iš terminalo į įrenginį skaitoma CLOCK impulso pradžioje. CLOCK impulsų dažnis turi būti 10–16,7 KHz ribose. Tai reiškia, kad CLOCK turi būti loginis „1“ 30–50 ms ir loginis „0“ 30–50 ms. Jai Jūs kuriate įrenginį ar terminalą, naudojantį PS/2 sąsają, turėtumėte keisti skaityti ar siųsti informaciją 15–25 ms po atitinkamo CLOCK pokyčio. Dar kartą, CLOCK signalą visada generuoja įrenginys, bet terminalas bet kuriuo metu gali nutraukti susijungimą.

Laiko nustatymai itin svarbūs. Visos laikų reikšmės turi būti tokios, kokios nurodytos šiame straipsnyje.

Komunikacija: įrenginys-terminalas

DATA ir CLOCK linijos yra atviro kolektoriaus. Tarp kiekvienos linijos ir +5 V yra įjungtas rezistorius, todėl neutralus linijų lygis yra aukštas. Kai įrenginys nori siųsti informaciją, jis pirmiausia patikrina ar CLOCK lygis yra aukštas. Jai ne, terminalas yra sustabdęs informacijos perdavimą ir bet kokią informaciją, skirtą perdavimui, įrenginys turi užlaikyti tol, kol terminalas atlaisvina CLOCK šyną. CLOCK šyna turi būti nepertraukiamai aukšto lygio bent 50 ms prieš informacijos siuntimą.

Kaip buvo minėta anksčiau, įrenginys naudoja nuoseklų protokolą, sudarytą iš 11 bitų. Šie bitai yra:

  • 1 pradžios bitas. jis visada 0.
  • 8 informacijos bitai, mažiausios reikšmės bitas pirmas.
  • 1 lygybės bitas (nelyginis skaičius).
  • 1 pabaigos bitas. Jis visada 1.

Įrenginys rašo bitą kai CLOCK yra aukštas, o kompiuteris jį nuskaito, kai CLOCK yra žemas. Tai iliustruoja 2 ir 3 pavyzdžiai.


2 pav. Įrenginys-terminalas komunikacija. DATA linijos lygis keičiasi kai CLOCK yra aukštas ir yra nuskaitomas, kai CLOCK lygis žemas.


3 pav. Q klavišo kodas (0x15H arba 0b10101) siunčiamas iš klaviatūros į kompiuterį. CHAN A yra CLOCK signalas, o CHAN B yra DATA signalas.

CLOCK dažnis yra 10–16,7 kHz. Laikas tarp CLOCK pokyčio į aukštą lygį ir DATA lygio pokyčio turi būti bent 5 us ir ne daugiau kaip 25 us.

Terminalas gali bet kuriuo metu sustabdyti susijungimą pakeisdamas CLOCK lygį žemu bent 100 ms. Jai siuntimas nutraktas prieš 11-ą CLOCK impulsą, įrenginys turi nutraukti perdavimą ir pasiruošti pakartotinai perduoti informaciją kai tik kompiuteris pakeis CLOCK lygį į aukštą.

Jai terminalas pakeičia CLOCK lygį žemu prieš pirmąjį CLOCK impulso, generuojamo įrenginio, pabaigą, ar po paskutinio impulso, įrenginys informacijos pakartotinai siųsti neturi. Tačiau, jai yra nauja informacija, kurią reikia išsiųsti, įrenginys turi laukti, kol terminalas atlaisvins CLOCK liniją. Klaviatūros tam turi 16 B atminį, kurioje atitinkamai telpa 16 klavišų paspaudimų. Jei ji užpildoma, tolimesni klavišų paspaudimai ignoruojami. Pelės saugo tik patį naujausią judėjimo paketą.

Terminalas-įrenginys komunikacija

Paketas siunčiamas kiek kitaip nei įrenginys-terminalas komunikacijoje.

Pirmiausia, CLOCK signalą VISADA generuoja įrenginys. Jai terminalas nori siųsti duomenis, jis turi atlikti sekančius veiksmus:

  • Sustabdyti susijungimą, keisdamas CLOCK lygį žemu bent 100 ms.
  • Inicijuoti siuntimo užklausą keisdamas DATA lygį žemu ir atleisdamas CLOCK.

Įrenginys turi tikrinti būseną bent kas 10 ms. Kai įrenginys aptinką siuntimo užklausą, jis pradeda generuoti CLOCK impulsus. Terminalas keičia DATA lygį tik kai CLOCK lygis žemas, o įrenginys jį nuskaito, kai CLOCK – aukštas. Tai daroma atvirkščiai nei įrenginys-terminalas komunikacijoje.

Kai gautas pabaigos bitas, įrenginys praneš apie gautą baitą pakeisdamas DATA lygį žemu ir sugeneruodamas paskutinį CLOCK impulsą. Jai terminalas neatleidžia DATA šynos po 11-o bito, įrenginys toliau generuos CLOCK impulsus tol, kol DATA šyna bus atlaisvinta (įrenginys praneš apie klaidą).

Terminalas gali nutraukti perdavimą prieš 11-ą CLOCK impulsą (patvirtinimo bitas) užlaikydamas CLOCK žemą lygį bet 100 us.

Tam, kad suprasti viską aiškiau, žemiau pateikiami terminalo veiksmai:

  1. Užlaikyti CLOCK žemą lygį bent 100 us.
  2. Pakeisti DATA lygį žemu.
  3. Atlaisvinti CLOCK šyną.
  4. Palaukti, kol įrenginys pakeis CLOCK lygį žemu.
  5. Nustatyti DATA liniją, tam, kad išsiųsti pirmą bitą.
  6. Palaukti, kol įrenginys pakeis CLOCK lygį aukštu.
  7. Palaukti, kol įrenginys pakeis CLOCK lygį žemu.
  8. Kartoti 5-7 veiksmus tol, kol bus išsiųsti visi 8 informacijos ir lygybės bitai.
  9. Atlaisvinti DATA šyną.
  10. Palaukti, kol įrenginys pakeis DATA lygį žemu.
  11. Palaukti, kol įrenginys pakeis CLOCK lygį žemu.
  12. Palaukti, kol įrenginys atleis DATA ir CLOCK šynas.

4 pav. tai parodo grafiškai ir 5 pav. parodo kurie signalai generuojami terminalo, o kurie – įrenginio. Atkreipkite dėmesį į „ack“ bitą – jis perduodamas kai CLOCK aukštas, ne taip, kaip likę 11 bitų .


4 pav. Terminalas-įrenginys komunikacija.


5 pav. Detalizuota terminalas-įrenginys komunikacija

Atsižvelgiant į 5 pav. yra dvi laiko trukmės, kurias stebi terminalas. (a) yra laikas, per kurį įrenginys turi pradėti generuoti CLOCK impulsus po to, kai terminalas palaiko CLOCK lygį žemą. Šis laikas turi neviršyti 15 ms. (b) yra laikas per kurį perduodamas paketas, kuris turi būti mažesnis nei 2 ms. Jai kuris nors iš šių laikų viršija nustatytą ribą, terminalas generuoja klaidą. Iškart po to, kai gaunamas „ack“ bitas, terminalas gali pakeisti CLOCK lygį žemu tol, kol apdirbama informacija. Jai terminalas perduoda komandą, kuri reikalauja atsakymo, jis turi būti gautas ne vėliau nei per 20 ms nuo tada, kada terminalas atleido CLOCK. Jai taip nenutinka, terminalas generuoja klaidą.

Vertė: Paulius Jurkštas (Liawlius).

‡ 1999–2024 © Elektronika.lt LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!