160 likes | 486 Views
Keyboard Interface. Anselmo Lastra. PS/2 Keyboard. Uses a synchronous serial protocol What does that mean?. Physical Interface. Two lines Clock (10-20KHz) Data Asserted low There’s documentation in NEXYS board manual, starting on P. 7. Bidirectional.
E N D
Keyboard Interface Anselmo Lastra
PS/2 Keyboard • Uses a synchronous serial protocol • What does that mean?
Physical Interface • Two lines • Clock (10-20KHz) • Data • Asserted low • There’s documentation in NEXYS board manual, starting on P. 7
Bidirectional • Kybd-to-host and host-to-kybd on same wires • CAPS LOCK light for example • To send, host takes data line low • Sometimes take clk low first • Then kybd starts clocking • Host sends data synced to kybd clock • You shouldn’t need to send to kybd
Protocol • 11 bits • Start – always 0 • 8 bits of data • Odd parity bit • Stop bit – always 1 • Clocked by keyboard • Value should be latched on negedge of keyboard clock • Slow enough that you could easily build simple FSM and clock on your 50 MHz clock Illustration from http://www.beyondlogic.org/keyboard/keybrd.htm
What is Sent • ASCII is not sent • Scan codes for keys • Least significant bit first Illustration from http://www.beyondlogic.org/keyboard/keybrd.htm
Scan Codes • Normally translated by software • You remap your keys, for example • Software takes care of • Shift, caps lock, control
Some Scan Codes Long • Two code sequence common • Have a look at Break key!
Even More Complicated • Scan code generated when you press • And when you release • Two bytes: F0 followed by key scan code • Example: • Space pressed, 29 sent • Space released, F0 29 sent • If you hold key, scan code repeated
Resources • Information http://www.beyondlogic.org/keyboard/keybrd.htm • Scan codes http://www.barcodeman.com/altek/mule/scandoc.php • There is also Verilog for keyboard interfaces available on web.
My Verilog • Have Verilog for keyboard • Have not ported to new FPGA • To use • You should memory-map the character code register • Maybe add a single bit register to indicate that new character has arrived
Mouse • Very similar interface (clk & data) • 3 words sent w/ mouse movement or button press
Movement • Movement is relative • XS, YS are sign (+ is up/right) • XV, YV are overflow (too fast) • L, R are buttons (the 0 is middle?)
Scroll Wheel, etc. • Extensions to original 2 button PS/2 mouse • See http://www.computer-engineering.org/ps2mouse/