1 hid controller – Digilent 410-183P-KIT User Manual

Page 8

Advertising
background image

Basys3™ FPGA Board Reference Manual

Artix-7

C17

PIC24FJ128

PS2_CLK

B17

USB HOST (J2)

2

PS2_DAT

FPGA

Config

7

FPGA
Config

Figure 7. Basys3 PIC24 connections.

6.1 HID Controller

The Auxiliary Function microcontroller hides the USB HID protocol from the FPGA and emulates an old-style PS/2
bus. The microcontroller behaves just like a PS/2 keyboard or mouse would. This means new designs can re-use
existing PS/2 IP cores. Mice and keyboards that use the PS/2 protocol use a two-wire serial bus (clock and data) to
communicate with a host. On the Basys3, the microcontroller emulates a PS/2 device while the FPGA plays the role
of the host. Both the mouse and the keyboard use 11-bit words that include a start bit, data byte (LSB first), odd
parity, and stop bit, but the data packets are organized differently, and the keyboard interface allows bi-directional
data transfers (so the host device can illuminate state LEDs on the keyboard). Bus timings are shown in Fig. 8.

T

CK

T

SU

Clock time
Data-to-clock setup time

30us

5us

50us
25us

Symbol

Parameter

Min

Max

T

HLD

Clock-to-data hold time

5us

25us

Edge 0

‘0’ start bit

‘1’ stop bit

Edge 10

Tsu

T

hld

Tck Tck

CLOCK

DATA

Figure 8. PS/2 device-to host timing diagram.

The clock and data signals are only driven when data transfers occur; otherwise they are held in the idle state at
logic ‘1.’ This requires that when the PS/2 signals are used in a design, internal pull-ups must be enabled in the
FPGA on the data and clock pins. The clock signal is normally driven by the device, but may be held low by the host
in special cases. The timings define signal requirements for mouse-to-host communications and bi-directional
keyboard communications. A PS/2 interface circuit can be implemented in the FPGA to create a keyboard or
mouse interface.

When a keyboard or mouse is connected to the Basys3, a “self-test passed” command (0xAA) is sent to the host.
After this, commands may be issued to the device. Since both the keyboard and the mouse use the same PS/2
port, one can tell the type of device connected using the device ID. This ID can be read by issuing a Read ID
command (0xF2). Also, a mouse sends its ID (0x00) right after the “self-test passed” command, which distinguishes
it from a keyboard.

Copyright Digilent, Inc. All rights reserved.

Other product and company names mentioned may be trademarks of their respective owners.

Page 8 of 19

Advertising