Page 1 of 2

USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 5:17 pm
by decod
Would it be possible to add some external circuitry reasonably easily to the FPGA to stream all of the ADC data at full rate (500MB/s) without dropping any samples to PC by connecting some USB 3 (chips or something) to the extensions (5 Gbps should be enough)? Any ideas as to how to go about with it?

I'd like to dump all of the data nonstop to PC which would then process the data on a bunch of GPUs. I'd also like to know if it's possible to sync several boards with the existing connectors so that the ADC's are acquiring data coherently (in sync) with each other? Is it possible to introduce common external clock for the ADCs? My intent is to make wideband cross correlation over large amount of quite complicated data. I wish to transfer several terabytes uninterrupted so it would be preferable if the system could run reliably. I've done this before with more expensive equipment which mainly operates using several PCIe cards and I know it's possible once I get the data to PC first, but now I'm after a budget solution.

Edit: I guess the external clock is possible as there was a documented pin for that. Seems everything should be fine as long as there is some way to get the data out. I only wish the gpio extension would be good enough for this somehow.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 5:51 pm
by pavel
Some thoughts about USB3.

The ADC 2*14-bit @125 MSPS could be transferred at 417 MB/s by grouping 4*14-bit samples into 7 bytes.

There is an application note for the EZUSB FX3 controller showing some transfer rates achievable with this USB3 controller:
http://www.cypress.com/documentation/ap ... ez-usb-fx3

With this controller it's possible to transfer data at 440 MB/s.

So, the 417 MB/s data rate is probably not impossible with a USB3 controller.

Red Pitaya has only 16 GPIO pins that could be used to communicate with a USB3 controller and it's theoretically possible to clock these pins at 250 MHz.

However, it's not clear if there exist a USB3 controller that supports 250 MHz on its external pins.

If I'm not mistaken. EZUSB FX3 is limited to 100 MHz.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 6:23 pm
by decod
Thanks for the information. So in principle the FPGA is capable of outputting the data from the existing 16 pins, but there is no suitable USB chip which would accept the input. Too bad, will just have to keep looking I guess. Or... what if one rips out the slow analog side? Are those pins good? Not very nice I suppose. Maybe when USB 3.1 chip comes out.
pavel wrote:Some thoughts about USB3.

If I'm not mistaken. EZUSB FX3 is limited to 100 MHz.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 8:22 pm
by Nils Roos
So in principle the FPGA is capable of outputting the data from the existing 16 pins
The FPGA may be capable of outputting the data at that rate, but even at 100MHz, you need careful length and impedance matching to achieve reliable, synchronous parallel data transmission. And the GPIO lines and connectors on the Red Pitaya don't even come close.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 9:06 pm
by decod
I suspect the board might be good enough. The strips don't appear very long and this should limit problems from poor matching and 100 MHz isn't particularly high frequency even if its harmonics in square wave go high. One can try to pay some attention to delays and reflections at the output, but with some luck nothing exceptional is needed. I have worked with analog stuff up to 10 GHz where things really get troublesome, but at frequencies so low as 100 MHz I would still be quite optimistic.
Nils Roos wrote:
So in principle the FPGA is capable of outputting the data from the existing 16 pins
The FPGA may be capable of outputting the data at that rate, but even at 100MHz, you need careful length and impedance matching to achieve reliable, synchronous parallel data transmission. And the GPIO lines and connectors on the Red Pitaya don't even come close.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Tue Apr 05, 2016 9:14 pm
by Nils Roos
Ok, I was taking a hint from the routing guidelines for the GPIF interface of the Cypress chip, but I'll certainly yield to practical experience - of which I have none above ~20MHz.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Thu Apr 07, 2016 5:02 pm
by decod
Looks like there exists a 250 MHz 16-bit USB 3 Transceiver chip. How much trouble it would be to make it work I don't have a particularly good idea (at least yet).

http://www.ti.com/product/tusb1310a/description

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Thu Apr 07, 2016 6:20 pm
by Nils Roos
I am sorry that I seem so negative about it, but if your goal is to have a fully functional USB 3.0 connection, it will not work. The PIPE bus is 16 bit (plus a handful of control signals) either way. And even if it somehow worked, you'd still have only the PHY. Though there are USB 3.0 controllers available as IP that might conceivably fit into the 7z010 ZYNQ, I'd guess they don't come cheap. And running them on the 7z010-1 might still be a stretch.

Another option could be to have an extension board with a separate processor combined with an of-the-shelf USB 3.0 solution. This extension would accept the 14 bit sample stream through the GPIOs without any higher level protocol, write it into its own buffers and handle all the USB particulars.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Thu Apr 07, 2016 7:41 pm
by decod
Right, I didn't look into the TI chip far enough. Getting or making the IP is I suppose out of the question and the need to process input isn't feasible with the limited number of pins.

I wonder if it would actually just be cheapest to connect some additional FPGA to those 16 pins and connect that one directly to FX3? Though, does it kind of defeat the purpose? Maybe not. There are even 2 extra pins as only 14 are data. Maybe one could even keep their hand fairly clean that way, especially if there is some cheap suitable board.
Nils Roos wrote:I am sorry that I seem so negative about it, but if your goal is to have a fully functional USB 3.0 connection, it will not work. The PIPE bus is 16 bit (plus a handful of control signals) either way. And even if it somehow worked, you'd still have only the PHY. Though there are USB 3.0 controllers available as IP that might conceivably fit into the 7z010 ZYNQ, I'd guess they don't come cheap. And running them on the 7z010-1 might still be a stretch.

Another option could be to have an extension board with a separate processor combined with an of-the-shelf USB 3.0 solution. This extension would accept the 14 bit sample stream through the GPIOs without any higher level protocol, write it into its own buffers and handle all the USB particulars.

Re: USB 3 for uninterrupted wideband data transfer?

Posted: Thu Apr 07, 2016 8:42 pm
by Nils Roos
I, on the other hand, have not been looking very thoroughly at the EZ-USB FX3.
The "SuperSpeed Explorer Kit" for this chip retails for 50-60$ and offers nearly everything you would need. If you are confident that running parallel data over the GPIOs is possible at 200MHz, you could pack and multiplex the sample data onto the GPIOs at 200Mhz and demultiplex to a 100MHz 32bit GPIF II interface with some external circuitry.

The devkit takes it from there, it can be configured to automatically gather the GPIF II input into bulk transfer packets, you'll just have to collect the data from the driver on the host end and unpack it.

The downside is that even at 32bit width the GPIF II interface does not quite support the full data rate that the Red Pitaya can generate.