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?
Answer
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.
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.
No comments:
Post a Comment