Back to back, short transfers


Hello All,

I ran an experiment to help determine the “dead” time between USB packets to the XEM3001 module. Here is my setup:

I am using the XEM3001_v1 module (8-bit version).
My PC is a windows XP Dell Latitude D600 laptop with a 2GHz Pentium M processor using USB 2.0 ports.
I created a FOR loop in my software application to toggle a wireOut on the XEM module. I observe the toggling bit using an oscilloscope to measure the toggle rate.

Obviously the frequency is variable depending on Windows OS tasks, interrupts, etc. However, averaging out the toggle rate, I am seeing about 500 microSecs to flip the bit.

Has anyone made this type of measurement? How does this compare with applications using the frontPanel? Is this intrinsic with the USB drivers + serialization/deserialization + XEM USB controller overhead? Can there be something done in the driver to speed this up?



Hi Adrian-

This speed is mostly dictated by the maximum control transfer bandwidth allowed by USB. USB only dedicated a certain amount of bandwidth to control transfers. USB also has to allow other devices access to each frame.

A good book on the details of USB is the Mindshare book “Universal Serial Bus System Architecture”. I think that should help explain why USB is a very fast bus when you use it in a particular way (single, large, one-way transfers), but can be quite slow when you use it in other ways (multiple, small transfers).