Nexys Video Keyboard Demo



The Keyboard Demo project demonstrates a simple usage of the Nexys Video's USB-HID and USB-UART ports. The behavior is as follows:

* The user presses a key on the keyboard, this sends a keyboard scan code to the Nexys Video. This scan code is read and transmitted to a terminal application via the USB-UART bridge. A scan code pair of F0xx indicates that key xx has been released.

Features Used

Not Used Used
8 user switches X
8 user LEDs X
128×32 monochrome OLED display X
160-pin FMC LPC connector X
Micro SD card connector X
HDMI Sink and HDMI Source X
DisplayPort Source X
Audio codec w/ four 3.5mm jacks X
6 user push buttons X
10/100/1000 Ethernet PHY X
512MiB 800Mt/s DDR3 Memory X
Serial Flash X
Four Pmod ports X
Pmod for XADC signals X



  • Nexys Video FPGA board
  • Micro-USB cable
  • USB Keyboard
  • Nexys Video 12 Volt Power Supply


  • Vivado Design Suite 2016.4
    • Newer versions can be used, but the procedure may vary slightly


Nexys Video Keyboard Demo Project Repository – ZIP Archive GIT Repo

Download and Launch the Nexys Video Keyboard Demo

1) Follow the Using Digilent Github Demo Projects Tutorial. This is an HDL design project, and as such does not support Vivado SDK, select the tutorial options appropriate for a Vivado-only design. Return to this guide when prompted to check for extra hardware requirements and setup.
2) In order to fully use this demo, you will need to connect a serial terminal to your Nexys Video. Plug your board into your computer with a Micro USB cable and make sure that board is turned on. Then open a serial terminal (such as TeraTerm) on your computer. In the terminal application setup the serial port to connect to the appropriate port for your board, with a baud rate of 9600. Then return to the Github Projects Tutorial to finish programming and running the demo.

Using The Nexys Video Keyboard Demo

1. Key Press

When a button is pressed, the value of the scan code will be converted to ASCII and transmitted to the terminal. In the picture, 'a' is pressed, so a scan code of “1C” is sent to the terminal.

2. Key Release

When the 'a' key is released, a scan code of “F0 1C” is sent.

3. Multiple Key Presses

When multiple keys are pressed their scan codes are sent in order. In this case, Q (“15”) was pressed, followed by W (“1D”).