Electronic – Video Out through USB (or other means)

compressionfpgausbvideo

For an medium-high speed ADC converter, my FPGA is currently receiving 16-bit samples at 54 MHz over an LVDS interface (4 differential signal lines plus 1 differential clock signal). These are video/camera signals.

Now, I need to consider how I can get the image from the FPGA to the PC. I have a micro-controller and a USB-OTG interface. But USB is 480 Mbit/s, and probably down to 35 MB/s effectively (or less), which is not high enough for 16 bits 1.5 MPixels @ 54 frames/sec. That would be 162 MB/sec, far too high for USB 2.0. Am I forced to use USB 3.0? I really did want to get the raw images out to the PC. I also could conceivably perform loss-less compression on the FPGA.

The second question is how to stream this data out of the FPGA. I could buffer the ADC-data in external RAM, or I could set up an interface to the micro-controller, or even directly drive output signals on a port. Either way, what options do I have w.r.t. large streams of data?

Any help would be appreciated!

Best Answer

Your bandwidth requirement is wayyyy beyond USB2 (by a factor of 4-5x). Unless your images have some special features you can take advantage of, lossless compression is only going to get you a 50% (ish) improvement, so that's not going to work.

You have to either increase your available bandwidth (USB3) or reduce the bandwidth requirement (ie resolution, frame rate, bit depth or some combination).

Regarding the FPGA->USB interface, if you want something easy to get going, try Opal Kelly's boards - they have done the USB3/FPGA interfacing bit for you and you can concentrate on the bit that interests you. (I have no connection with OK other than as a happy user of their stuff.)

Otherwise, you need a micro with the USB interface on it and some FIFO-like hardware+DMA engine so that the micro is (as you say) only supervising the data transfers. Cypress make some. FTDI also (although they are micros, you don't have to touch the innards, you can pretend they are a FIFO and the data 'magically' appears at the PC).