glip  0.1.0-dev
The Generic Logic Interfacing Project
KC705 Cypress FX3 (USB 3.0) Loopback Demo


For this demo you need:

To prepare, plug the Explorer Kit into the FMC Interconnect Board. Do not connect the two boards to the KC705 FPGA board just yet.

Download and compile glip

If you have not done this before you need to download and build glip:

git clone
cd glip
mkdir build; cd build
../configure --enable-cypressfx3
sudo make install

Synthesize the design

Synthesize the example design with Xilinx Vivado.

cd GLIP_SOURCES/src/backend_cypressfx3/logic/demo/kc705_loopback
make vivado-project-32
vivado kc705_loopback_32/kc705_loopback.xpr

In Vivado run the implementation and generate the bitstream.

Configure the FPGA

Before you turn on the KC705 board, disconnect the FMC Interconnect board together with the FX3 board.

When the bitstream has been succesfully generated, open the Hardware Manager in Vivado, turn the board on and program the FPGA.

Flash the Cypress FX3 firmware

Before being used the first time, the FX3 chip must be flashed with our firmware. Please refer to Cypress FX3 Firmware for instructions how to do that. It's best to program the firmware to the EEPROM to save yourself from the hassle of doing these steps again.

Check the jumpers on the FX3 board

The FX3 board contains three jumpers to configure it. Ensure that you have set the jumpers to the following settings:

Connect the FX3 board to the FPGA

While the FPGA is board is powered-on and flashed with the bitstream, plug the FX3 board into the J22 FMC connector on the KC705 board. (It's the one closer to the power plug.)

Execute the loopback measurement tool

As final (and long awaited) step, execute the GLIP tool "Loopback Measure" that measures the loopback performance by sending data to the device and reading back from it. Run the loopback measurement tool like this to transfer 10 GB of data to the FPGA and back.

glip_loopback_measure -b cypressfx3 -s 1000000000

If you plugged the FX3 chip into an USB 3.0 port on your PC, you should get a performance of around 190 MByte/s bidirectional (i.e. 190 MByte/s sending and 190 MByte/s receiving at the same time), or 3 GBps overall (net). Note, however, that this data rate assumes that only this test occupies the USB bus on the host. If other transfers are active at the same time (e.g. an external hard disk you're transferring data to), the data rate will be lower.