PS2 Tangentbord för FPGA (1 / 3 steg)
Steg 1: Lite bakgrund
Strängt taget används PS2 anslutning till typ 2 ledningar för att överföra data, som kallas DATA och klocka. När du trycker på knappen på tangentbordet, skickar mikrokontroller som ligger innanför tangentbordet paket 11 bitar av information om DATA tråd. Varje bit åtföljs av en fallande kant klocksignal, vilket innebär att du bara måste läsa data när klocksignal faller och inte andra gången. Den första biten är början lite, sedan finns det 7 bitar för DATA0-6, då en paritetsbit och äntligen sluta bit. När data tas emot, och kollade att det är korrekt (START, paritet och stopp bitar har lämpliga värden) behöver du bara hålla DATA0-6 bitar och bli av med resten.
Nu ser bredare, när en knapp trycks ner, skickar tangentbordet ett paket 11 bitar att berätta vilken knapp trycktes. Om nyckeln är pressade och höll sedan det börjar upprepade gånger skicka samma paket. Slutligen om du släpper knappen skickar den en annan 2 paket, berättar att knappen släpptes och vilken knapp släpptes. Detta är lite olika för olika för så kallade extended knappar, där det skickar en mer paket och veta vad koden måste vara fick du kan Läs manuell eller kan säga
.
Frekvensen den överför data är ganska låg och kan variera från 10 kHz till 16,7 kHz. Detta blir viktigt, när du använder en FPGA med hastigheter på 50 MHz och större. Du förminska frekvensen av någon faktor, annars kommer du att läsa fel klocksignalen (till exempel du kommer att läsa data medan klocksignalen förändras fortfarande...). Skalning FPGA styrelsen att omkring 30-50 kHz ska göra jobbet, men det beror återigen på tangentbordet.
Slutligen är det viktigt att beskriva vad som händer om du får mindre än 11 bitar när detta händer ibland också. Mycket sällan, men fortfarande händer... Vad jag gjorde här sätts en timer för att berätta om tillräckligt med tid har gått från att ta emot lite och om hur lång tid är för lång fram till nästa lite, det rensar allt som kommer fram till denna punkt.
Du kan alltid läsa mer om protokollet här eller helt enkelt google "PS2 typ Protocol", som kommer att ge dig bättre insikt om det fungerar. Jag verkligen rekommendera dig att läsa mer om det om du vill implementera drivrutiner själv! BASYS 2 styrelse manuell ger också information om hur sådan sak skulle kunna genomföras på sidan 5-7 i det manuellt.