CID Lab Lucrarea 6: Diferență între versiuni

De la WikiLabs
(Noțiuni și cunoștințe necesare)
(Cerințe)
Linia 13: Linia 13:
  
 
* Realizați un automat care să citească ''scancodes'' trimise de către o tastatură PS2. Aceasta va avea următoarele porturi:
 
* Realizați un automat care să citească ''scancodes'' trimise de către o tastatură PS2. Aceasta va avea următoarele porturi:
** reset - intrarea de reset a circuitului care aduce automatul în starea inițială ('''atenție''', deoarece sincronizării dintre bitul de date și ceasul PS2, acest automat necesită un port de reset '''asincron''' pentru a funcționa corect);
+
** reset - intrarea de reset a circuitului care aduce automatul în starea inițială ('''atenție''', datorită sincronizării dintre bitul de date și ceasul PS2, acest automat necesită un port de reset '''asincron''' pentru a funcționa corect);
 
** ps2_clock - este intrarea de ceas pe care funcționează automatul, și care este produs de către interfața PS2 ('''atenție''', ciruitul este sensibil la frontul negativ de ceas);
 
** ps2_clock - este intrarea de ceas pe care funcționează automatul, și care este produs de către interfața PS2 ('''atenție''', ciruitul este sensibil la frontul negativ de ceas);
 
** ps2_data - este portul de intrare de date pe care se primesc serial (bit cu bit), datele de la tastatură;
 
** ps2_data - este portul de intrare de date pe care se primesc serial (bit cu bit), datele de la tastatură;
Linia 25: Linia 25:
 
* Realizați o memorie ROM care să facă tranziția de la ''scancode'' la valoarea numerică a tastei de la 0 la 9; pentru orice altă tastă, această memorie va da valoarea 4'd10.
 
* Realizați o memorie ROM care să facă tranziția de la ''scancode'' la valoarea numerică a tastei de la 0 la 9; pentru orice altă tastă, această memorie va da valoarea 4'd10.
 
* Folosind modulele anterioare, realizați un circuit care să afișeze tasta numerică apăsată pe afisajul cu 7 segmente (pentru orice alta tasta apasata, se va afisa caracterul E urmat de punct).
 
* Folosind modulele anterioare, realizați un circuit care să afișeze tasta numerică apăsată pe afisajul cu 7 segmente (pentru orice alta tasta apasata, se va afisa caracterul E urmat de punct).
 
 
  
 
== Cerințe suplimentare (opționale) ==
 
== Cerințe suplimentare (opționale) ==

Versiunea de la data 22 aprilie 2012 09:49

Noțiuni și cunoștințe necesare

Cerințe

  • Realizați un automat care să citească scancodes trimise de către o tastatură PS2. Aceasta va avea următoarele porturi:
    • reset - intrarea de reset a circuitului care aduce automatul în starea inițială (atenție, datorită sincronizării dintre bitul de date și ceasul PS2, acest automat necesită un port de reset asincron pentru a funcționa corect);
    • ps2_clock - este intrarea de ceas pe care funcționează automatul, și care este produs de către interfața PS2 (atenție, ciruitul este sensibil la frontul negativ de ceas);
    • ps2_data - este portul de intrare de date pe care se primesc serial (bit cu bit), datele de la tastatură;
    • scancode - este portul de ieșire, de tip registru, care stochează ultimul scancode primit;
    • valid_code - este o ieșire de un bit care specifică dacă conținutul registrului de ieșire scancode este valid (a fost completat cu toți cei 8 biți și valoarea checksum se potrivește);
    Automatul are următoarele stări
    • STATE_READ_START_BIT - în această stare automatul așteaptă bitul de start (0), când acesta este produs, automatul trece în starea STATE_READ_SCANCODE, ieșirea valid_code devine 0, iar registrul intern de calcul al checksum devine și el 0;
    • STATE_READ_SCANCODE - în această stare automatul, folosind un numărător de 3 biți, citește bit cu bit scancode-ul primit de la tastatură și bitul citit se adună la checksum; când numărătorul ajunge la valoarea maximă, automatul trece în starea STATE_READ_CHECKSUM;
    • STATE_READ_CHECKSUM - valoarea checksum prezentă de pe portul de date se compară cu valoarea calculată în prealabil pentru toți biții scancode-ului iar dacă cele două valori sunt egale, ieșirea valid_code devine 1; automatul trece în starea STATE_READ_STOP_BIT;
    • STATE_READ_STOP_BIT - automatul trece în starea STATE_READ_START_BIT.
  • Realizați o memorie ROM care să facă tranziția de la scancode la valoarea numerică a tastei de la 0 la 9; pentru orice altă tastă, această memorie va da valoarea 4'd10.
  • Folosind modulele anterioare, realizați un circuit care să afișeze tasta numerică apăsată pe afisajul cu 7 segmente (pentru orice alta tasta apasata, se va afisa caracterul E urmat de punct).

Cerințe suplimentare (opționale)