91 Views

FPGA USB Overview

23/02/2021, hardwarebee

USB products are extremely critical in the world of electronics, regardless of whether you are a casual user or a professional. USB, which stands for Universal Serial Bus, is one of the most common types of ports found on computers and electronic devices. USB hubs can be used to connect all kinds of devices including keyboards, cameras, controllers, drives, and other peripherals.

 

Part of the reason why the USB port is preferred over many others is that it has a relatively higher power delivery. This means that it can be used for the purposes of fast charging as well as fast data transfer for very large files. It has also been used to integrate a lot of novel features such as streams and other video models that has not been possible before. You may have noticed that almost all of your peripherals rely on Type-C ports for plug and play capabilities. This attests to their efficacy and popularity in the current sphere.

 

Why Would You Need USB for FPGAs?

 

With the help of FPGAs, it is possible to realize and capitalize on the full potential of Type-C or USB interfaces. Alternatively, there are plenty of FPGA based applications as well that can greatly benefit from the features provided by USB. Think of devices like video cameras and complex data acquisition systems. With the addition of a USB interface to such devices, the possibilities of what can be done with the acquired data become so much more extensive.

 

For example, with a USB interface on board, it is possible for the user to directly transfer the data to other machines and systems in real time as the data is being recorded. As such, it becomes possible to perform actions like live video streaming on the internet.

 

Additionally, a supplementary USB interface also enables the user to connect the data collecting device with a host machine. This host machine does not necessarily need to be located in the vicinity for this system to work as it can be connected remotely to the FPGA device through a USB host via a virtual connection.

 

Implementing a USB Interface on an FPGA

 

A typical USB system normally comprises components such as a transceiver, serial interface engine or SIE, and an interface controller. The transceiver is what creates the physical link between the host machine and the data collection device. The SIE is responsible for encoding and decoding the data it is receiving. It also performs other housekeeping tasks. Lastly. It is connected to a master or controller that performs application level tasks.

 

The controller frees up the FPGA from having to perform a lot of application level functions and firmware upgrades. It provides an abundance of endpoints and plenty of flexibility, not to mention protocol management capabilities thanks to microcontrollers. As such, a USB interface working in coalition with FPGA makes for a high-performance system with a lot of interconnections between the host and the system.

 

FTDI and Cypress are vendors that offer USB PHY chips that can easily interface to any type of FPGA. With those chips and an USB protocol stack IP core, any FPGA could have an USB interface.

 

Figure 1: FPGA USB Block Diagram (source: Cypress)

 

Recent Stories