USB – the need for speed
I have commented before on “fashions” in the embedded software world and part of my job is to understand what the hot topics among embedded developers are. A subject that just seems to run and run is USB. I posted about it a while back and promised to write more. In the meantime, we ran a Web seminar, which broke records for attendance, and published a new tech paper, which has proven incredibly popular.
I guess that it is time to deliver on my promise …
Today I am going to focus briefly on one specific area of USB functionality: data transfer speeds.
USB offers a variety of data transfer speeds, each of which may be appropriate for specific situations. Now there are basically four options; this range has gradually increased as USB has been developed:
- Low speed [1.5Mb/s] – This functionality was included in USB 1.1 and is quite satisfactory for devices needing to transfer low volumes of data at modest speed. For example: mice, keyboards, joysticks and gamepads.
- Full speed [12Mb/s] – This higher speed was also supported by USB 1.1 and makes sense for more demanding devices, with greater volumes of data. Examples include: modems, digital cameras, printers, scanners and microphones.
- High speed [480Mb/s] – USB 2.0 added a much faster speed option aimed for large volume storage devices and multimedia application. For example: mass storage, broadband, home networking, residential gateways and digital video/audio.
- Very high speed [4.8Gb/s] – Another 10X speed increase is offered by USB 3.0, addressing the need of even larger data storage devices and demanding multimedia like full HD video.
As the USB standards have progressed, backwards compatibility has been maintained, while adding the greater data rate options; i.e. USB 3.0 supports all the functionality of USB 2.0, which embraces all the capabilities of USB 1.1.
A network of USB devices exhibits the “weakest link” phenomenon. Broadly speaking, the maximum data rate of the system is governed by the hardware and software USB standard compliance. For example, if most of the devices in a chain are USB 3.0, but one is USB 2.0, the maximum transfer speed along that line will be 480Mb/s.
In deploying USB, care is needed to ensure full interoperability with other devices. One way to avoid problems is to use a fully certified USB stack, like that supplied by Mentor Embedded.
Comments
Leave a Reply
You must be logged in to post a comment.
USB 2.0 HighSpeed – Theoretical max speed is 480Mbps. This is the wire speed, right? What would be the maximum achievable data rate?
We need to send some images from a device in real time through USB and display the same in the application running in PC. Device generates data at 200Mbps. Can USB 2.0 be used?
Yes, 480Mbps is the theoretical maximum data rate. Depending upon which transfer mode you use, the actual maximum will be a lower rate. I would expect that, assuming you are using Isochronous data transfer, you will achieve the rate that you require.
With the overhead of the USB protocol, the maximum throughput is 53MB/s or 424Mbps. However, that is on a system where there is no bus latency with respect to DMA transfers and their is always data to send or receive from the applications. Likely you will not achieve more than 40MB/s or 320 Mbps. Now the details behind the maximum datarate has to do with the duration of a 125 microseconds per microfram gives us 8000 microframes/second and each microframe can service 13 512 byte transfers which yields 53.248 MByte/second. If the USB bus is not shared, the DMA inside the function is efficient and the on chip bus has limited contention and your drivers on both side can produce or consume data without delay then it is likely achievable. Remember that the PC driver software is involved as well, so there may be some unexpected latencies introduced there. Maybe with lots of large buffers, so there is always room for more data it will achieve the data rate you are looking for.