Sunday, 30 August 2015

usb device - Can I use the USB 2.0 and 3.x channels simultaneously in a USB 3.x port?


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

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...