PS2 Tangentbord för FPGA (3 / 3 steg)
Steg 3: Verilog kod
För att testa koden i provbänken innan du faktiskt ansluter tangentbordet kan du använda wrapper.v och TestingKeyboard.v moduler.
Det finns bara en modul, som kallas Keyboard.v, där all kod är. Det kan vara lite svårt att förstå koden, men om du läser PS2 interface manuell och föregående avsnitt, allt bör rensa ut.
Pseudo koden för denna modul är:
Två räknare används inom denna modul:
-> DOWNCOUNTER används för att föra frekvensen 250 gånger som UTLÖSARE är utlösta väder som händer.
-> count_reading räknas upp om inte ett komplett paket av 11 bitar fått ännu. (senare kontrolleras om detta nummer nådde 4000...)
Denna modul tar emot informationen och kontrollerar om det OK.
-> Om UTLÖSAREN utlöses, så kolla om PS2_CLK ändrat sitt tillstånd
-> Om tillståndet förändrats och gör om klockan är på fallande kant:
---> Lägg upp lite DATA som mottagits för närvarande till tidigare bitar
---> Mark ner att en mer bitars mottogs
---> Om 11 bitar mottogs, utlösa en annan signal, berättar att det avslutat behandlingen
---> Check paritetsbiten om den mottagna informationen är OK
---> Om 11 bitar inte var fått kolla om det tog mer än 4000 gånger för count_reading att räkna efter det fått den tidigare lite.
--->- och Återställ allt om det tog mer. Annars hoppa över detta.
En annan liten modul extraherar informationen:
-> Vänta för utlösaren, som kontrollerar om hel förpackning av 11 bitar togs emot
-> Om det fanns ett fel i det mottagna paketet, kasta allt.
---> Emellertid extrahera databitarna om informationen var OK.
Nu kan du göra vad du vill med den extraherade datan. Exempelvis kan du leta efter pilen pressar och sedan lägga upp/ner några LED register, som tänds lysdioder... Eller Använd pilen pressarna styra orm spel :)