How to Select a USB Host Controller
by Yingbo Hu, R&D Embedded Software Engineer
Many people we talk to assume that USB through-put in bytes per second will be the rated bus speed divided by 8. This is only the case if one is using a GHz processor with a DMA USB controller. Actual performance in a typical embedded system will fall far short of this. The following are some suggestions to achieve your performance goals, based upon our experience.
First, you need to check what USB speed is required for your application. For example, if your application only uses USB to upgrade firmware, then performance is not critical and full speed is enough. But if you need to transfer streaming video, then you need a USB high-speed controller.
The following are some examples for which you can use a USB full-speed controller, such as OHCI, UHCI, ISP116x, or ISP1362:
- Audio playback and recording
- Modem or serial cable adapter
- HID (mouse/keyboard/joystick) device
- Flash disk for firmware upgrade, data backup, or MP3 playback
The following are some examples for which you may need a USB high-speed controller, such as EHCI or ISP176x:
- Streaming HD (larger than 640x480) video
- High performance file access such as recording real time data, which requires more than 1 MB/s performance
- High performance networking access
Second, you need to decide which USB controller to use. If you have not selected your microprocessor we suggest that you choose a processor that has a built-in USB controller. A built-in controller is normally faster than an external controller because most use DMA to transfer the data between the USB controller and RAM. Also, a built-in controller can save hardware cost and debug effort. If you must use an external USB controller, select one that follows the OHCI, UCHI, or EHCI standard, or one that is widely used by many customers, such as the NXP ISPxxxx USB controller. Our recommendations are:
- For full-speed, use a built-in OHCI controller. Otherwise use ISP1362.
- For high-speed, use a built-in EHCI controller, such as the one in MCF5251 or i.MX31. Otherwise use ISP176x.
- For low-end applications select a built-in non standard USB controller, such as Luminary Micro LM3xxxx or Coldfire MCF52211.
- If you only have SPI bus, use Max MAX3421E.
Third, carefully select your microprocessor. The USB controller is NOT the only thing that determines USB performance. Different microprocessors may be using the same type of USB controller, such as an OHCI or external USB controller, but they definitely differ in performance, even using the same USB stack. The USB controller needs to transfer data between system memory and the USB bus, so the microprocessor’s RAM speed and external bus speed are very important. The USB stack is running on the microprocessor so the speed or even the cache size of the microprocessor are important determinants of USB performance. Make sure that you can get accurate performance data on a particular processor before you choose it. A good USB stack vendor will normally provide this.
For More Information
- smxUSBD Datasheet
- smxUSBH Datasheet
- smxUSBO Datasheet
Please contact me with any comments or questions about this article.
yingbohu @ smxrtos.com
R&D Embedded Software Engineer
Micro Digital Inc
Copyright © 2008 by Micro Digital, Inc. All rights reserved.
smx is a registered trademark of Micro Digital Inc. smx product names are trademarks of Micro Digital Inc.
back to White Papers page