Compdsp Burk USB Fundamentals
Compdsp Burk USB Fundamentals
1-1
Agenda
USB Specifications
USB Basics
Components
Onion introduction
Signaling
Packets
Transfers
Requests
Operating System Interface
USB Specifications
USB
USB 2.0
Compaq
Intel
Microsoft
NEC
Lucent
HP
Philips
1-4
1-6
Peripheral
Applications
PC
Cell Phone
Camera
MP3 player
Cell
Phone
Cell Phone
Printer
Camera
Camera
Camera
Cell Phone
Printer
Exchange pictures
Upload pictures to web
Print pictures
MP3 player
MP3 player
Exchange songs
1-7
Mini AB receptacle
Mini-A to Mini-B cable
Cable establishes the default host
USB Basics
1-10
USB 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
1-11
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
1-12
Device side
USB houskeeping firmware
Application firmware
Host side
Driver (maybe)
Application software
1-13
USB Components
1-14
Host Controllers
USB
Hubs
USB
Cables
USB
Peripheral Devices
1-15
Host
Host
Controller Interfaces:
1-16
USB Cables
USB Hubs
A hub provides additional connection points
(ports) for devices
Hubs
can be:
Hubs
1-18
USB Devices
Devices
can be:
Self-Powered
External Power Source (i.e. wall wart)
Batteries
Bus-Powered
Low Power Bus Powered (<= 100mA)
High Power Bus Powered >100mA, <=500mA)
Devices
Composite Device
Multiple interfaces, independently
controlled
Compound Device
Collection of separate functions, each with
a USB address, connected to an internal
hub
Example: Keyboard & Trackball in same
package
1-20
1-21
USB Topology
PC
USB
Device
PC
USB
USB
Device
Device
USB
Hub
USB
Device
USB
USB
USB
Device
Tiered Star
1-22
USB 1.1:
USB 2.0
Endpoints
Pipes
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
1-25
USB Descriptors
Device
Descriptors
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
1-26
1-27
Signaling
1-28
USB Signaling
USB
Most
The SIE
Serial
Interface
Engine
(SIE)
D+
D+
Bytes
USB
Transceiver
1-30
Packets
1-31
USB 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
1-32
Packets
Data
Packets
Handshake
Packets
1-33
Handshaking 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.
1-34
S
O
F
D
A
T
A
0
O
U
T
S
E
T
U
P
D
A
T
A
1
A
C
K
S
T
A
L
L
N
A
K
P
R
E
1-35
H
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pkt
1-36
Transfers
1-37
Bulk
Isochronous
Control
Interrupt
USB 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.
1-39
Audio
Isochronous
Mouse
Interrupt
...
SOF
SOF
1 msec frame
Bulk
UHCI, OHCI
1-40
Packet Sizes
Transfer Type
Packet Size
Control
USB 1.1
8, 16, 32, 64
USB 2.0
64
Bulk
8, 16, 32, 64
512
Interrupt
164
1024
Isochronous
1023
1024
1-41
A
D
D
R
E
N
D
P
D
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
good
H
C
R
C
1
6
A
C
K
H/S Pkt
H
I
N
A
D
D
R
E
N
D
P
D
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
H
C
R
C
1
6
A
C
K
H/S Pkt
1-42
E
N
D
P
D
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
good
H
C
R
C
1
6
A
C
K
H/S Pkt
H
A
I D
N D
R
E
N
D
P
D
C
R
C
5
Token Packet
N
A
K
H/S Pkt
not ready
H
A
I D
N D
R
E
N
D
P
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
H
C
R
C
1
6
A
C
K
H/S Pkt
good
1-43
E
N
D
P
D
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
(H)
C
R
C
1
6
Data Packet
H
A
I D
N D
R
E
N
D
P
D
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
H
C
R
C
1
6
A
C
K
H/S Pkt
1-44
E
N
D
P
D
C
R
C
5
Token Packet
S
T
A
L
L
H/S Pkt
H
A E
I D N
N D D
R P
(D)
C
R
C
5
Token Packet
1-45
E
N
D
P
H
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
good
D
C
R
C
1
6
A
C
K
H/S Pkt
H
A
O
D
U
D
T
R
E
N
D
P
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pkt
1-46
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
good
D
C
R
C
1
6
A
C
K
H/S Pkt
H
A E
O
D N
U
D D
T
R P
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
D
C
R
C
1
6
N
A
K
H/S Pkt
H
A E
O
D N
U
D D
T
R P
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pkt
good
1-47
E
N
D
P
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
(D)
C
R
C
1
6
Data Packet
H
A
O
D
U
D
T
R
E
N
D
P
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pkt
good
1-48
H
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
D
C
R
C
1
6
S
T
A
L
L
H/S Pkt
A
O
D
U
D
T
R
E
N
D
P
(D)
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
C
R
C
1
6
Data Packet
1-49
SETUP
Control Transfer
H
S
A E C
E
D N R
T
D D C
U
R P 5
P
Token Packet
D
C
A 8 bytes R
T Setup
C
A
Data
1
0
6
Data Packet
DATA
H
A
I D
N D
R
E
N
D
P
A
C
K
H/S Pkt
D
C
R
C
5
Token Packet
HANDSHAKE
D
A
T
A
1
Payload
Data
Data Packet
H
C
R
C
1
6
A
C
K
H/S Pkt
D C
A R
N
T C
A
A 1
K
1 6
Token Packet Data Pkt H/S Pkt
D C
A R
A
T C
C
A 1
K
1 6
Token Packet Data Pkt H/S Pkt
Control operation
not completed
Control operation
completed
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
1-50
E
N
D
P
D
C
R
C
5
D
A
T
A
1
Token Packet
Payload
Data
H
C
R
C
1
6
Data Packet
A
C
K
H/S Pkt
good
H
A E
O
D N
U
D D
T
R P
Token Packet
D
A
T
A
0
Payload
Data
Data Packet
good
A
I D
N D
R
E
N
D
P
D
C
R
C
5
D
A
T
A
0
Payload
Data
Token Packet
H
C
R
C
1
6
A
C
K
Data Packet
H/S Pkt
H
C
R
C
5
D
C
R
C
1
6
A
C
K
H/S Pkt
H
A E
O
D N
U
D D
T
R P
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pkt
Isochronous Transfer
H
A
I D
N D
R
E
N
D
P
D
C
R
C
5
D
A
T
A
0
Payload
Data
Token Packet
Data Packet
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
Token Packet
D
A
T
A
0
Payload
Data
C
R
C
1
6
C
R
C
1
6
Data Packet
1-52
Requests
1-53
Status
Set
Feature
Set
Address
Clear
Feature
Get
Descriptor
Sync
Frame
Set
Descriptor
Get
Configuration
Set
Configuration
Get
Interface
Set
Interface
1-54
1-55
Enumeration
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1-57
1-59
Windows 95 OSR2.1
Full of bugs
No HID support
Avoid it!
1-60
Windows 98/98SE
1-61
Windows Me (Millennium)
Follow on to Windows 98
1-62
Windows NT 4
NO
1-63
Windows 2000
1-64
Windows XP
1-65
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)
1-66
HID Class
http://libusb-win32.sourceforge.net (Windows)
http://libusb.sourceforge.net (Linux and others)
Use
Write
1-68
USBIO
(http://www.thesycon.de)
MCCI
(http://www.jungo.com)
1-69
1-70
1-72
USB
USB
Transceiver Only
Cypress TX2, Phillips, etc.
These are primarily intended for FPGAs that implement a Serial
Interface Engine (SIE)
Transciever + SIE
Cypress SX2, Phillips, etc.
This would be a good option for DSPs without USB support
Fixed
Function Devices
USB Resources
1-75
Devices
Jan Axelson, USB Complete, Second Edition
John Hyde, USB Design By Example, Second
Edition
1-76
www.usb.org
USB Specifications and Class
Specifications
Draft docs
Bulletin board (Developer Forum)
Product information incl. chips
1-77
1-78
Questions
?
1-79
USB
Tools
USB
1-80
1-81