Expected USB 3.0 bandwidth with multiple devices


I have an application where I need to read from two FPGAs simultaneously, each with an output data rate of 125 MB/s.

I have implemented a simple test where each FPGA is populated with a single pipeOut, and I read 512 MB from each FPGA in an alternating fashion. I do this for a long time and measure the bandwidth.

When I use a single FPGA and a single USB 3.0 port, my bandwidth is about 360 MB/s. It is a new computer and quite fast.

When I use two FPGAs, two USB 3.0 cables, and alternate between them my bandwidth is about 355 MB/s.

I had anticipated that the act of switching between the two USB 3.0 ports would take quite a long time and really lower my bandwidth, but this does not seem to be the case. Does this performance seem correct to you, or should I expect a significant bandwidth loss when using multiple devices.

Thank you.

USB performance varies depending on a number of factors such as OS, OS version, connection integrity, and host system architecture. In many modern implementations, the USB controller has close access to the CPU and memory architecture. While previously, multiple USB ports might have shared a common connection via PCI Express to memory / CPU, this is not typically the case any longer.

This is one of the reasons we offer two USB 3.0 ports on the XEM8350. For many modern system architectures, the second port can legitimately double the transfer performance to/from the FPGA.

1 Like