USB, or Universal Serial Bus, is a very flexible connection being used for flash drives, cameras, and even phones. This flexibility allows us to use USB as I/O for our FPGAs. Our boards support a handful of uses for USB, and a brief explanation of each is detailed below.
Perhaps the most passive use for USB is as a 5V 0.5A power supply. Many of our FPGA boards support being powered over USB for smaller projects, such as the Arty for example. Some of our more powerful boards, like the Genesys 2, require more current than most USB ports can support. If this is the case see the Power section of your device manual for alternative methods of powering the board in question.
UART is a very simple way to communicate with other devices. Nearly all of our FPGA boards implement a USB-UART bridge for board-computer communication. This will make the board show up on your computer as a serial port (COM in Windows, TTY in Linux/Mac). A thorough description of UART is available on the Digilent reference site. There are many libraries available for communicating over UART, pySerial is an example for the Python programming language.
HID stands for Human Interface Device and refers to keyboards, mice, and other input devices. On some of our boards we have a dedicated microcontroller for reading from this type of USB device. The data is converted to a standard PS/2 interface by this microcontroller for interpretation by the FPGA. More information on the PS/2 interface used by the microcontroller is available on the Digilent reference site for all FPGA boards that have this functionality.
USB OTG stands for USB On-The-Go and allows a device to act as both a host and a client depending on the device plugged in to the USB port. A handful of our boards support this protocol, including the Zybo. If you are interested in using this port, official USB documentation is available here.
DSPI/DPTI/DEPP Using the Adept SDK
The Adept SDK allows high speed data transfer over USB using either DSPI, DPTI, or DEPP. Currently DSPI and DPTI are only available on the Nexys Video and Genesys 2, while DEPP is only available on the Cmod S6. For more information look into the Adept 2 SDK documentation.
Which USB functionality do you use the most?