Diferență între revizuiri ale paginii „Tastatura PS2”

De la WikiLabs
Jump to navigationJump to search
Linia 15: Linia 15:
 
* când o tastă este eliberată, înaintea ''scancode''-ului tastei se transmite ''scancode''-ul 8'hF0, care semnalează că s-a eliberat tasta respectivă.
 
* când o tastă este eliberată, înaintea ''scancode''-ului tastei se transmite ''scancode''-ul 8'hF0, care semnalează că s-a eliberat tasta respectivă.
  
 +
Modul prin care se extrage ''scancode''-ul din secvența de biți de intrare, este folosind un [[Automate|automat]].
  
 
== Referințe ==
 
== Referințe ==
  
 
<references />
 
<references />

Versiunea de la data 22 aprilie 2012 10:49

Tastatura legată la o interfață PS2 comunică prin două porturi:

  • un port de ceas, care este constant 1 atunci când tastatura nu trimite date, și trece în 0 atunci când pe portul de date este un bit valid (ceea ce implică faptul că circuitul va fi sensibil la frontul negativ al acestui semnal);
  • un port de date, de un bit, pe care se transmit serial datele de la tastatură, valide pe frontul negativ al semnalului de ceas.

Portul de date este bidirecțional (puteți citi mai mult despre modul acestuia de funcționare în manualul de referință pentru Nexys 2 [1]), dar deocamdată ne interesează transmisia dinspre tastatură spre placa de dezvoltare. La apăsarea unei taste, tastatura va trimite secvențe de coduri de 11 biți care reprezintă următoarea secvență:

  • 1 bit de start, care este întotdeauna 0;
  • 8 biți (1 octet = 1 byte), începând cu cel mai nesemnificativ bit, reprezentând un cod unic asociat tastei, numit mai departe scancode;
  • 1 bit de verificare, numit mai departe checksum, care reprezintă suma pe un bit ai tuturor biților din scancode (adică XOR pe toți biții din scancode);
  • 1 bit de stop, care este întotdeauna 1;

Atenție: Scancode-ul nu este același lucru cu codul ASCII. Primul identifică o tastă, al doilea identifică un caracter.

Tastatura trimite scancode-uri în următoarele situații:

  • când o tastă este apăsată, se trimite scancode-ul asociat tastei respective; unele taste au un cod extins, care necesită transmiterea a două scancode-uri, iar în acest caz, primul cod este întotdeauna 8'hE0 (ambele coduri vor fi transmise respectând protocolul de 1 bit de start, 8 biți pentru scancode, 1 bit pentru checksum și 1 bit de stop, deci pentru tastele cu cod extins, se vor transmite în total 22 de biți); dacă tasta este menținută apăsat, codul se retransmite o dată la aproximativ 100ms;
  • când o tastă este eliberată, înaintea scancode-ului tastei se transmite scancode-ul 8'hF0, care semnalează că s-a eliberat tasta respectivă.

Modul prin care se extrage scancode-ul din secvența de biți de intrare, este folosind un automat.

Referințe