Re: How do USB 2.0 devices attain high throuput?



nappy <gospam@xxxxxxxxxxxx> wrote:
I am contemplating a design. The Cypress FX2 docs state that USB 2.0
buffers can be up to 512 bytes for bulk transfers. If USB 2.0 is only
services every 125 uS then how do drives and other devices get closer to
the ~60mB through put? Or even the 25mB average of drives?

The 125uS timebase allows you to do 13 of 512 byte bulk transfers in each frame.
This allows you to transfer 5324800 bytes per seconds which is approximately
50.7 MBytes/s if you are working in base 2 or 53.2 MBytes if you are in base
10.

Actually getting that data rate depends on the endpoint not issuing any NAKs
during the microframe. If the host controller sees a NAK it has to stop
sending data.

If you need timing guarentees then you'd need to do Isochronous transfers
and the limit is 2 of 3072 byte transfers ie about 46 Mbytes/s base 2

In practice actually achieving either of these maxima usually requires that
your device is the only thing on the bus except for the host controller.

Download and look at chapter 5, particularly 5.4, 5.6 and 5.8 of usb_20.pdf in
the zipfile from

http://www.usb.org/developers/docs/usb_20_02212005.zip

Personally I prefer IEEE1394 which looks inferior if you look at marketing
blurb but is better in practice.

-p
--
"What goes up must come down, ask any system administrator"
--------------------------------------------------------------------
.