In the world of computers, I have always felt that USB is one of the good things of life. It [mostly] just works and simplifies our lives. As USB has been around quite a few years, it is hard to remember what life was like before. It is interesting technology, because, as it is so easy to use, it is easy to forget how complex it is “under the hood”. This is a topic that I have talked about at quite a few conferences – email me if you want any materials.
The latest USB specification, 3.0, was finalized a couple of years back and PCs and devices using USB 3.0 are now becoming quite common. Naturally, embedded developers are interested in implementing USB 3.0 and are asking about what has changed …
Broadly speaking, USB 3.0 offers three enhanced capabilities:
- increased speed
- bidirectional communication
- increased bus power
In addition to the three different speeds supported by USB 2.0 [Low, Full and High], USB 3.0 offers SuperSpeed, which gives a theoretic maximum throughput of about 5Gb/s. Although a real application will never attain this data transfer rate, it does illustrate that there is a 10X speed increase. This is clearly of great interest for applications like external hard drives. It is important to understand that SuperSpeed is only usable if all the network components between the host and the device in question support USB 3.0.
Although USB 2.0 accommodates transfer of data in both directions, data can only be flowing in one direction at a given time. USB 3.0 facilitates simultaneous bidirectional data flow.
It is increasingly common for devices to draw power for USB interfaces. Indeed, it is now very common for phones etc. to be charged from USB without using the interface for any other purpose. The available current from a USB 2.0 interface was limited to 500mA; with USB 3.0, this is almost doubled to 900mA. There are also some additional protocols to accommodate device power management.
Of course, the enhanced functionality and performance comes at a cost. Hardware must be designed with USB 3.0 compatible interfaces and a USB 3.0 host or function software stack [such as Nucleus USB from Mentor Embedded] is required. Remember to check for USB-IF certification.
A key issue with the deployment of USB 3.0 is backwards compatibility. USB 3.0 is actually implemented as a separate system on top of USB 2.0. This means that a USB 3.0 cable contains four additional wires, with corresponding pins on connectors. Although the connectors are mechanically compatible, you can only get SuperSpeed performance etc. if you have end to end USB 3.0 compatibility. A USB 3.0 hub includes a USB 2.0 hub and a SuperSpeed hub.
For the moment, the legacy issues around compatibility will be an irritation, but I am sure that the high data rate will ensure USB 3.0 will soon be the norm for connectivity where a tiered star topology and plug-and-play functionality are useful.
Posted November 26th, 2012, by Colin Walls
- Choose your weapons – options for debugging
- Dissatisfaction, customer service and surprises
- Video blog about getting into embedded software
- Embedded software article: RTOS Revealed #9
- Lost in translation
- One return from a function: a good idea?
- The A380 experience
- Embedded Software Masterclass
- How to get rich