Isochronous transfer mode

I’m interested in implementing an isochronous transfer mode with the XEM6310-LX150. I understand this is possibly (see ticket #25432 details below):

Using our API, I think you’ll find that you can accomplish what you need. Essentially, you can use the Pipe transfers in a manner that is quite similar to how isochronous transfers work. The FPGA will provide buffering as you require. If for some reason the host is unable to keep up, the FPGA can just drop a frame or some data…

My question is how to setup this mode? Also, what indication is there (to the application) that a frame has been lost? If I understand correctly, normally packet loss is handled below the hood by the protocol itself, and there is effectively no data loss, as retransmits occur automatically (wire transfer failures), correct?

Thanks,
Rich

It is not possible to do isochronous USB transfers with our FrontPanel SDK.

I think you may have a misunderstanding of how isochronous transfers work in USB. You’re not alone, in our experience, isochronous transfers are the most widely misunderstood USB concept.

Isochronous transfers are used to guarantee bandwidth. You negotiate with the host controller about how much bandwidth you need and it either grants or denies your request. A few notes…

[LIST]
*]USB is NOT a real-time protocol and neither are Windows, Mac OS X, or Linux real-time operating systems.
*]Isochronous transfers almost always result is lower bandwidth than bulk transfers. TANSTAAFL
*]You DO NOT get guaranteed delivery. You get error-checking via CRC, but no retry. TANSTAAFL
[/LIST]

If your application can tolerate data loss (as would presumably be the case if you’re considering isochronous transfers in the first place), then you can effectively code for this in your HDL. Our EVB100X-DEV example is a good example of this. It’s built for real-time video display and achieves great throughput. But if the host can’t keep up for some reason, the FPGA is perfectly happy to throw out a frame and continue on. This is basically what you get with isochronous transfers but without the bandwidth guarantee. Thing is, the bandwidth is normally higher anyhow!

TANSTAAFL = There ain’t no such thing as a free lunch.