Title: USB Fundamentals and Applications for Digital Signal Processing
1USB Fundamentals and Applications for Digital
Signal Processing
- Greg Burk
- J. Gordon Electronic Design
- burk_at_jged.com
- 7/30/2004
2Agenda
- USB Specifications
- USB Basics
- Components
- Onion introduction
- Signaling
- Packets
- Transfers
- Requests
- Operating System Interface
- Considerations for DSP Applications
- USB Resources
3USB Specifications
- USB 1.0 The original spec, superseded quickly
by USB 1.1 - USB 1.1 Minor enhancements to the USB 1.0 spec,
supported Low and Full speed devices - USB 2.0 The Current Standard, added high
speed to USB 1.1 - USB OTG USB On-the-Go, a supplement to the USB
2.0 spec that added a form of device to device
communications. - WUSB Wireless USB, a work in progress -- not a
standard yet
4USB Founding Companies
USB 1.0 USB 2.0
Compaq Compaq
Intel Intel
Microsoft Microsoft
NEC NEC
IBM Lucent
DEC HP
Northern Telecom Philips
5USB 2.0 in a Nutshell
- Runs 40X faster than USB 1.1
- Low speed 1.5Mb/s
- Full speed 12Mb/s
- High speed 480Mb/s
- Fully supports existing USB devices
- Forward compatibleplug existing 1.1 devices into
new 2.0 hosts - Backward compatibleplug new 2.0 devices into
existing 1.1 hosts - Uses the same cables as USB 1.1
6USB On-the-Go (USB OTG)
- Connect two peripherals together
- PC is not required (but still supported)
- Allow peripherals to wake up hosts
- Allow two devices to exchange the host role
- New OTG devices can tap into the existing 900
million USB devices
7USB OTG Example ApplicationsSource Beeman
www.usbonthego.com
8USB OTG Details
- Defines a new connector and cable
- Mini AB receptacle
- Mini-A to Mini-B cable
- Cable establishes the default host
- A-Device is the default host
- Dual-role USB devices
- Are sometimes a peripheral, sometimes a host
- Must use the new AB connector
- Provide limited host capability
- Targeted peripheral list
- Operate at full speed (high speed optional)
9Wireless USB (WUSB)
- Specification currently under development
(expected release early 2005) - Key players are Intel, Microsoft, HP, NEC,
Phillips Semiconductors, Agere Systems, and
Samsung Electronics - Based on Ultra-wideband (UWB) standard
- Supposed to support USB 2.0 bandwidth (480 Mb/s)
at distances of up to 10 meters - Projected Feature Set
- Compatibility with USB 2.0 Standard
- Security at same level as wired USB
- Connections up to 127 WUSB device
- For More info see http//www.intel.com/labs/wusb/
- (This is NOT the same as Cypress Semiconductors
Wireless USB)
10USB Basics
11USB Basics
- USB is a Master/Slave Polled Bus (PC is the
Master, Devices are the Slaves) - USB has a tiered star architecture that can USB
can support up to 126 devices - 7-bit address 128 root hub reserved addr 0
for enumeration - USB is Hot Pluggable
- USB connections can provide both data and power
to the devices
12USB is not Simple
- Outside, it is simple
- The rich user experience requires some inner
complexity - Even though it replaces serial and parallel
ports, its not a drop-in replacement - Its electrically simple, but a whole protocol
layer is added
13USB Projects Can Require a Significant Code
Development Effort
- Device side
- USB houskeeping firmware
- Application firmware
- Host side
- Driver (maybe)
- Application software
14USB Components
15Components of USB Systems
- USB Host Controllers
- USB Hubs
- USB Cables
- USB Peripheral Devices
16USB Host Controllers
- Reside in PC on motherboard or add-in card
- Are the master device on the USB bus
- Host Controller has integral Root Hub
- Host Controller Interfaces
- Universal Host Controller Interface (UHCI)
- Open Host Controller Interface (OHCI)
- Enhanced Host Controller Interface (EHCI)
17USB Cables
- Transport both Data and Power
- Four wires Vbus, GND, D, D
- Cables are 5 meters MAX
- Two connector types, A and B
- Prevents illegal topologies
- A connectors are the ones that goes to the PC
or Hub, B connectors goes to the device) (OTG
adds Miny A and Mini B connectors) - Cables can be either captive (like mice) or
detachable - Cables can be unshielded (Low speed devices) or
shielded (Full Speed and High Speed devices) - USB extension cables are ILLEGAL
18USB Hubs
- A hub provides additional connection points
(ports) for devices - Hubs can be
- Self-Powered (lt 500ma to each device)
- Bus-Powered (lt 100mA to each device)
- Hubs contain most of the magic and differences
between USB 1.1 and USB 2.0
19USB Devices
- Devices can be
- Self-Powered
- External Power Source (i.e. wall wart)
- Batteries
- Bus-Powered
- Low Power Bus Powered (lt 100mA)
- High Power Bus Powered gt100mA, lt500mA)
- Devices are self describing
- Devices return data (USB descriptors) to host to
indicate its capabilities, configurations, and
how the device is able to communicate
20Compound and Composite Devices
- Composite Device
- Multiple interfaces, independently controlled
- Each interface can have a different driver
- Compound Device
- Collection of separate functions, each with a USB
address, connected to an internal hub - Example Keyboard Trackball in same package
21USB is a Polled BUS
- The Host (PC) initiates all transfers
- Devices respond to host requests
- Direction OUT is host-to-device
- Direction IN is device-to-host
- USB is NOT peer-to-peer (not even in USB OTG)
22 USB Topology
PC
PC
USB
USB
USB
USB
Hub
Device
Device
Device
USB
USB
USB
USB
Device
Device
Tiered Star
23USB Transfer Speeds
- USB 1.1
- Low speed is 1.5Mb/s
- Full speed is 12Mb/s
- USB 2.0
- Low speed is 1.5Mb/s
- Full speed is 12Mb/s
- High speed is 480 Mb/s
- There is a VERY common misconception that say a
device is USB 2.0 compliant that it means that it
is High Speed device. It does NOT!
24Endpoints
- USB Spec a source or sink of data
- A Control Transfer Type endpoint is
bi-directional - Others are uni-directional
- Four address bits plus a direction bit selects
between up to 32 buffers (FIFOs) - Different USB chips support
- Various numbers of endpoints
- Various buffer sizes
- Each device must have 1 Control Type Endpoint
(Commonly referred to as Endpoint 0 or the
Default Endpoint)
25Pipes
- An abstraction used by the USB spec used to
indicate that 2 endpoints are joined (one in the
PC Host and the other in the device). - CONTROL pipe is bi-directional
- Others are uni-directional
26USB Descriptors
- Device Descriptors
- Contains the VID/PID/DID/Serial Number
- Configuration Descriptors
- Interface Descriptors
- Endpoint Descriptors
- String Descriptors
- Device Qualifier Descriptors (USB 2.0)
- Other Speed Configuration Descriptors (USB 2.0)
- USB Classes can add other class specific
Descriptors
27The USB Onion
28Signaling
29USB Signaling
- USB utilizes differential signaling on the D and
D- lines. - Data is encoded in non-return to zero with bit
stuffing - Bit stuffing is used to ensure enough transitions
for the clock recovery circuitry. - Most designs use silicon that incorporates an
integral Serial Interface Engine (SIE) so you
dont have to worry about the decoding yourself. - PCB layout of D and D- requires care (especially
on High Speed devices).
30The SIE (Serial Interface Engine)
Serial
D
Interface
Bytes
Engine
D
(SIE)
USB
Transceiver
31Packets
32USB Packets
- USB data travels in packets
- Identified by Packet ID (PID)
- Token packet tells whats coming
- Data packets deliver bytes
- Handshake packets report success or otherwise
33Packet IDs (PIDS)
- Token Packets
- IN, OUT, SOF, SETUP
- Data Packets
- DATA0, DATA1 (USB LS/FS)
- DATA2, MDATA (USB HS)
- Handshake Packets
- ACK, NAK, STALL (USB LS/FS)
- NYET (USB HS)
34Handshaking Packets
- Used to ensure correct data delivery on Control,
Bulk and Interrupt Transfers - ACK Received with out Error
- NAK Device Busy, has no data
- Stall Unsupported Request, Request Failed
- No Response Request not received or corrupt,
will be retried up to 3 times.
35Packets Identified by PIDS
36Three Packet Types
37Transfers
38USB Transfer Types
- Bulk
- Guaranteed accuracy, but delivery time is
variable - Best for bursty data
- Isochronous
- Guaranteed delivery time, but accuracy is not
guaranteed - Control
- Enumeration and device control
- Interrupt
- Predictable polling time
39USB Transfers
- USB Transfers Occur in 1ms Frames (USB 2.0 adds
125 uS Microframes) - Host sends SOF (Start Of Frame) token every 1ms
- Host schedules packets inside frames.
40 Anatomy of a USB Frame
1 msec frame
...
SOF
SOF
Video
Audio
Mouse
Control
Printer
Printer
Isochronous
Interrupt
Control
Bulk
- 12MHz 1.5MB/s or 1500 bytes/ms
- Isochronous/Interrupt traffic have guaranteed
bandwidth - Control traffic is best-effort
- Bulk uses what is left
- Actual scheduling order depends on host
controller - UHCI, OHCI
41Packet Sizes
42Bulk IN Transfer (a)
H
D
H
H
H
D
D
D
C
C
A
E
C
A
E
C
A
R
A
A
R
A
Payload
Payload
I
D
N
R
I
D
N
R
T
C
T
C
C
C
N
D
D
C
N
D
D
C
Data
Data
A
K
A
K
1
1
R
P
5
R
P
5
1
0
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
H/S Pkt
goodnote the data toggle
good
43Bulk IN Transfer (b)
H
D
H
H
D
D
H
H
D
D
C
C
A
E
C
A
E
C
A
E
C
N
A
A
A
A
R
R
Payload
Payload
I
D
N
R
I
D
N
R
I
D
N
R
A
T
C
T
C
C
C
N
D
D
C
N
D
D
C
Data
Data
N
D
D
C
K
A
K
A
K
1
1
R
P
5
R
P
5
R
P
5
1
6
0
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
H/S Pkt
Token Packet
H/S Pkt
good
good
not ready
44Bulk IN Transfer (c)
H
(H)
D
H
H
D
D
D
C
C
A
E
C
A
E
C
A
A
A
R
R
Payload
Payload
I
D
N
R
I
D
N
R
T
T
C
C
C
N
D
D
C
Data
N
D
D
C
Data
A
1
A
1
K
R
P
5
R
P
5
1
1
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
goodnote same data and data toggle
host sees error no response
45Bulk IN Transfer (d)
H
D
H
(D)
S
A
E
C
A
E
C
T
I
D
N
R
I
D
N
R
A
N
D
D
C
N
D
D
C
L
R
P
5
R
P
5
L
Token Packet
Token Packet
H/S Pkt
device has a problem
device detects token error or does not respond
46Bulk OUT Transfer (a)
H
H
D
H
D
H
D
D
C
C
A
E
C
A
E
C
O
O
A
A
A
A
R
R
Payload
Payload
D
N
R
D
N
R
U
T
C
U
T
C
C
C
D
D
C
D
D
C
Data
Data
T
T
A
K
A
K
1
1
R
P
5
R
P
5
0
1
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
H/S Pkt
goodnote the data toggle
good
47Bulk OUT Transfer (b)
H
D
H
H
D
H
D
H
H
D
D
D
C
C
C
A
E
C
A
E
C
A
E
C
O
A
A
A
A
A
N
R
O
R
O
R
Payload
Payload
Payload
D
N
R
D
N
R
D
N
R
U
T
C
T
C
T
A
C
U
C
U
C
D
D
C
Data
Data
Data
D
D
C
D
D
C
T
A
K
A
K
A
K
1
T
1
T
1
R
P
5
R
P
5
R
P
5
1
6
0
6
0
6
Token Packet
Data Packet
H/S Pkt
Token Packet
Data Packet
H/S Pkt
Token Packet
Data Packet
H/S Pkt
good
good
device not ready for data host sends data anyway
48Bulk OUT Transfer (c)
H
(D)
H
H
D
H
D
D
C
C
A
E
C
A
E
C
O
A
O
A
A
R
R
Payload
Payload
D
N
R
D
N
R
U
T
U
T
C
C
C
D
D
C
D
D
Data
C
Data
T
A
T
A
K
1
1
R
P
5
R
P
5
1
1
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
good
device sees error no response
49Bulk OUT Transfer (d)
(D)
H
H
H
H
D
D
C
D
C
S
A
E
A
E
C
C
A
O
R
A
O
R
T
Payload
Payload
D
N
R
D
N
R
T
U
C
T
U
A
C
D
D
C
Data
Data
D
D
C
A
T
T
1
A
1
L
R
P
5
R
P
5
1
6
1
6
L
Data Packet
Token Packet
Token Packet
Data Packet
H/S Pkt
device detects token error
device has problem
50Control Transfer
H
H
D
D
C
S
A
E
C
A
8 bytes
R
A
E
D
N
R
SETUP
T
Setup
C
C
T
D
D
C
A
Data
1
K
U
R
P
5
0
6
P
Data Packet
H/S Pkt
Token Packet
H
D
H
D
C
A
E
C
A
R
A
I
D
N
R
Payload
DATA
T
C
C
N
D
D
C
Data
A
1
K
R
P
5
1
6
Data Packet
Token Packet
H/S Pkt
H
H
D
H
H
D
D
D
C
C
A
E
C
A
E
C
A
O
A
O
R
N
R
A
D
N
R
D
N
R
T
U
T
U
C
A
C
C
HANDSHAKE
D
D
C
D
D
C
A
T
1
K
A
T
1
K
R
P
5
R
P
5
1
1
6
6
Token Packet
Data Pkt
Token Packet
Data Pkt
H/S Pkt
H/S Pkt
Control operation
Control operation
not completed
completed
51Interrupt IN OUT
H
D
H
H
H
D
D
D
C
C
A
E
C
A
E
C
A
A
A
A
R
R
Payload
Payload
I
D
N
R
I
D
N
R
T
C
T
C
C
C
N
D
D
C
Data
N
D
D
C
Data
A
K
A
K
1
1
R
P
5
R
P
5
1
0
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
H/S Pkt
goodnote the data toggle
good
H
H
D
H
D
H
D
D
C
C
A
E
C
A
E
C
O
O
A
A
A
A
R
R
Payload
Payload
D
N
R
D
N
R
U
U
T
C
C
T
C
C
D
D
C
D
D
C
Data
Data
T
T
A
1
K
A
1
K
R
P
5
R
P
5
0
1
6
6
Token Packet
Token Packet
Data Packet
Data Packet
H/S Pkt
H/S Pkt
goodnote the data toggle
good
Interrupt transfers are indistinguishable from
BULK transfers. They occur at most once per
frame.
52Isochronous Transfer
H
D
D
C
A
E
C
A
Payload
R
I
D
N
R
T
C
N
D
D
C
Data
A
1
R
P
5
0
6
Token Packet
Data Packet
H
H
D
C
A
E
C
O
A
Payload
R
D
N
R
U
T
C
D
D
C
Data
T
A
1
R
P
5
0
6
Token Packet
Data Packet
Note Always DATA0 PID, no ACK
53Requests
54Standard USB Requests
- Get Status
- Set Address
- Get Descriptor
- Set Descriptor
- Get Configuration
- Set Configuration
- Get Interface
- Set Interface
- Set Feature
- Clear Feature
- Sync Frame
55Class Specific Requests
- Specific to a given class, see the class
specification for details. - Examples
- The Human Interface Device (HID) Class adds Get
Report and Set Report requests - The Hub Class adds a Get Port Status request
56Enumeration
- The user plugs the device into a USB port.
- The hub detects the device.
- The host learns of the devices presence from the
hub (Get Port Status Request) - The hub detects whether a device is Low speed or
Full Speed. - The hub resets the device.
- The host learns if a full speed device supports
high speed. - The hub establishes a signal path between the
device and the bus. - The host sends a Get Descriptor Request to learn
the maximum packet size of the default pipe. - The host assigns an address (Set Address
Request). - The host learn about a devices abilities (Get
Descriptor Request). - The host assigns and loads a device driver.
- The hosts device driver selects a configuration
(Set Configuration Request).
57Operating System Interface
58Host Controller Driver
- Fundamental component of Operating System support
for USB - USB host controllers are PCI devices
- What Does it Do?
- Handles USB peripheral enumeration
- Provides USB services for higher level drivers.
All access to USB peripherals is via these
services
59Which OSs support USB
- Pretty much all of themMore and more every day
- Windows
- MacOS
- Linux
- Solaris
- VxWorks
60Windows 95 OSR2.1
- Microsofts first attempt to support USB
- Only available to OEMs
- Full of bugs
- No HID support
- Avoid it!
61Windows 98/98SE
- First Microsoft OS with full USB support
- Class drivers for HID and USB speakers
- 98SE fixed a few minor bugs, enhanced
performance, added class drivers for USB modems
62Windows Me (Millennium)
- Windows 98 was supposed to be the last OS in the
Win9x family, but... - Follow on to Windows 98
- Adds performance tweaks, bug fixes, USB audio
without clicks and pops, USB Mass Storage class
driver
63Windows NT 4
- NO SUPPORT FOR USB PROVIDED BY Microsoft!!!!
- 3rd party NT 4 USB drivers are available
64Windows 2000
- Robust USB Support including USB 2.0 High Speed
- Shares common driver model (WDM) with Windows 98
65Windows XP
- Microsofts unified home/business operating
system - Based on Windows 2000
- Same basic USB support as Windows 2000 with some
changes under the hood - Supports USB 2.0 High Speed
66USB Peripheral Drivers
- Class Drivers
- Generic driver that supports a certain class of
device - Human Interface Devices (HID), USB hubs,
speakers, mass storage, modems - Note Not all USB Classes that are defined by the
USB-IF are implemented!!! Check your target OS
for support. (i.e. I know of no OS that has
implemented the Firmware Update Class) - Custom Drivers
- Operating Systems often include vendor specific
drivers that have passed certification (e.g. WHQL)
67HID Class
- Built into Windows 98 (or later)
- No need to write (or install) a driver!
- Used by mice and keyboards, but can be used for
custom devices also. - Communicates with devices using reports
- Set Report, Get Report
- Full Spec at http//www.usb.org
- You need the spec, and the HID Usage Tables
68Custom Device Driver Options
- Look for an Open Source Device Driver
- http//libusb-win32.sourceforge.net (Windows)
- http//libusb.sourceforge.net (Linux and others)
- Use a General Purpose Device Driver
- Write a Proprietary Custom Device Driver (or
have it written for you by a consultant)
69Generic USB Device Drivers (for Windows OSs)
- Check your silicon manufacturer, they may have a
general purpose driver you can use with their
silicon (Cypress and FTDI both do) - Thesycon USBIO (http//www.thesycon.de)
- MCCI Virtual COM port driver (http//www.mcci.com)
- Jungo (http//www.jungo.com)
70Writing a Device Driver
- Requires Specialized Knowledge (WDM and USBDI,
Kernel Debuggers, etc.) - Long Learning Curve (i.e. gt6months)
- Not very well documented
- Avoid this if you can!!!
71Certifications and Logos
- USB Implementers Forum Certification
- Needed to use the new USB Certified Logos
- Join the USB-IF or become a non-member Logo
Licensee - Attend a Plug-Fest or have your device tested
for compliance by an independent lab - Windows Hardware Quality Labs (WHQL)
Certification - Download the HCT and run the applicable tests (if
a self test is permitted for your device) or have
your device tested for compliance by an
independent lab
72Some Considerations for DSP Applications
73USB Silicon Options
- USB Transceiver Only
- Cypress TX2, Phillips, etc.
- These are primarily intended for FPGAs that
implement a Serial Interface Engine (SIE) - USB Transciever SIE
- Cypress SX2, Phillips, etc.
- This would be a good option for DSPs without USB
support - USB Transciever SIE Microprocessor
- Cypress EZ-USB, EZ-USB FX, EZ-USB-FX2, Microchip
USB PIC, DSPs that have USB Support - This would also be a good option for DSPs
without USB support - Fixed Function Devices
- FTDI USB to Serial Converter Chips (This is a
good option for DSPs) - USB to ATAPI Bridge Chips
74USB Transfer Types
- Since some applications for Digital Signal
Processing are Stream operations you might
think that Isochronous transfers are the most
appropriate type to use. Sometimes, but not
alwaysConsider using RAM buffers and a Bulk or
Interrupt Transfer Type. - In lower bandwidth applications, consider the
FTDI USB to Serial Converter, they are a good
shortcut if you can use them.
75USB Resources
76USB Resources Books
- Devices
- Jan Axelson, USB Complete, Second Edition
- John Hyde, USB Design By Example, Second Edition
- Windows Drivers (including USB)
- Walter Oney, Programming the Microsoft Windows
Driver Model - Chris Cant, Writing Windows WDM Device Drivers
77USB Resources Internet
- www.usb.org
- USB Specifications and Class Specifications
- Draft docs
- Bulletin board (Developer Forum)
- Product information incl. chips
78USB Resources Consultants
- J. Gordon Electronic Design
- (763) 786-2405
- http//www.jged.com
- (A shameless plug for my employer)
79Questions
80Optional Topics (if there is time)
- Optical Isolation and USB
- USB Tools
- USB Serial Numbers and Windows XP
81- A special thanks to Cypress Semiconductor for
allowing use some of the included slides.