Electronic – use the USB 2.0 and 3.x channels simultaneously in a USB 3.x port

usbusb deviceusb hub

I am designing an FPGA development board for myself. I want a moderately high speed link (400-500MB/s) to the host PC and I'm considering several options, including an FTDI FT-60x bridge IC. The problem is that this chip has no side channel that would allow me to configure the FPGA, unlike the good old FT-2232H.

This article claims that "USB 2.0 is available on the same connector and can be used as sideband", and suggests using both chips in tandem, with a hub on the USB2 lines for both of them to be available, but routing the USB3 pairs straight to the FT-60x. They are apparently doing this on some of the boards they sell.

So here are my questions:

  • Does the USB specification guarantee that USB2 is still available while using the USB3 lane of the same connector?
  • Can I really skip the hub on the USB3 lane if I'm using one on the USB2 lane?
  • I don't really care if functionality is reduced on a USB2-only port. Can I just skip the hubs altogether and connect one device to each lane?

Best Answer

Ranting, comment, do something else recommendation

meh. FTDI's "our FT-60x can't do an obvious thing, so buy two of our products" isn't sitting all too well with me. Frankly, there's devices that do exactly what you want:

  • First load a USB controller firmware via USB,
  • then download a bitstream to the FPGA via USB3,
  • then communicate with the now functional FPGA at USB3 speeds.

The device I have in mind is the Ettus USRP B200/B210/B200miniā€¦ series. They use a cypress FX3.

You can find

  • the schematics of these devices here;
  • the FX3 USB controller firmware here;
  • the host-side userland software (this all works over libUSB, so no custom kernel-mode drivers) here, and
  • the FPGA image source code here.

answering your question

according to https://electronics.stackexchange.com/a/266990/64158 (and the author of the linked answer is really knowledgeable about USB3), yes, you can use a USB3 link without USB2 lines.

However, your host controller and OS need to be willing to consider the two buses separate, if you don't want to use a USB3 hub. In my experiences, that is unlikely to happen if your host is a PC or something similar

If you're, however, in full control of your USB stack (because, for example, you have an OHCI / xHCI in an FPGA at the other end of the link, acting as host), this might work.