USB Fundamentals and Applications for Digital Signal Processing

advertisement
USB Fundamentals and
Applications for Digital Signal
Processing
Greg Burk
J. Gordon Electronic Design
burk@jged.com
7/30/2004
1-1
Agenda




USB Specifications
USB Basics
Components
Onion introduction







Signaling
Packets
Transfers
Requests
Operating System Interface
Considerations for DSP Applications
USB Resources
1-2
USB Specifications
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
USB
1-3
USB Founding Companies
USB 1.0
Compaq
Intel
Microsoft
NEC
IBM
DEC
Northern Telecom
USB 2.0
Compaq
Intel
Microsoft
NEC
Lucent
HP
Philips
1-4
USB 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 compatible—plug existing 1.1 devices
into new 2.0 hosts
 Backward compatible—plug new 2.0 devices
into existing 1.1 hosts


Uses the same cables as USB 1.1
1-5
USB 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
1-6
USB OTG Example Applications
Source: Beeman: www.usbonthego.com
Host
Peripheral
Applications
PC
Cell Phone
Camera
MP3 player
Synchronize phone list, meetings
Upload pictures
Download songs
Cell
Phone
Cell Phone
Printer
Camera
Exchange Contact info
Print call info
Upload pictures to web
Camera
Camera
Cell Phone
Printer
Exchange pictures
Upload pictures to web
Print pictures
MP3 player
MP3 player
Exchange songs
1-7
USB 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)
1-8
Wireless 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)
1-9
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


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

1-11
USB is not Simple




Outside, it is simple
The “rich user experience” requires
some inner complexity
Even though it replaces serial and
parallel ports, it’s not a drop-in
replacement
It’s electrically simple, but a whole
protocol layer is added
1-12
USB Projects Can Require a
Significant Code
Development Effort

Device side
USB houskeeping firmware
 Application firmware


Host side
Driver (maybe)
 Application software

1-13
USB Components
1-14
Components of USB Systems
USB
Host Controllers
USB Hubs
USB Cables
USB Peripheral Devices
1-15
USB 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)

1-16
USB 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
1-17
USB Hubs
A hub provides additional connection points
(ports) for devices
Hubs can be:
Self-Powered (<= 500ma to each device)
 Bus-Powered (<= 100mA to each device)

Hubs
contain most of the “magic” and
differences between USB 1.1 and USB 2.0
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

are “self describing”
Devices return data (USB descriptors) to host
to indicate its capabilities, configurations, and
how the device is able to communicate
1-19
Compound 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
1-20
USB 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)
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 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!
1-23
Endpoints

USB Spec: “a source or sink of data”




Four address bits plus a direction bit selects
between up to 32 buffers (FIFOs)
Different USB chips support



A Control Transfer Type endpoint is bi-directional
Others are uni-directional
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)
1-24
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
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
1-26
The USB Onion
OS Interface
Requests
Transfers
Packets
Signaling
1-27
Signaling
1-28
USB 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
don’t have to worry about the decoding
yourself.
PCB layout of D= and D- requires care
(especially on High Speed devices).
1-29
The SIE
(Serial Interface Engine)
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 what’s coming
 Data packets deliver bytes
 Handshake packets report success or
otherwise

1-32
Packet 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)

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
Packets: Identified by PIDS
I
N
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
Three Packet Types
H
H
A
O
D
U
D
T
R
E
N
D
P
C
R
C
5
Toke n Pack e t
D
A
T
A
0
Payload
Data
Data Packet
D
C
R
C
1
6
A
C
K
H/S Pk t
1-36
Transfers
1-37
USB Transfer Types

Bulk



Isochronous


Guaranteed delivery time, but accuracy is not
guaranteed
Control


Guaranteed accuracy, but delivery time is variable
Best for “bursty” data
Enumeration and device control
Interrupt

Predictable polling time
1-38
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
Anatomy of a USB Frame
Video
Audio
Isochronous
Mouse
Interrupt
Control Printer Printer
Control
...
SOF
SOF
1 msec frame
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
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
1–64
1024
Isochronous
1023
1024
1-41
Bulk IN Transfer (a)
H
I
N
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
good—note the data toggle
1-42
Bulk IN Transfer (b)
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
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
D
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
Bulk IN Transfer (c)
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
(H)
C
R
C
1
6
Data Packet
host sees error; no response
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
good—note same data and data
toggle
1-44
Bulk IN Transfer (d)
H
A
I D
N D
R
E
N
D
P
D
C
R
C
5
Token Packet
S
T
A
L
L
H/S Pkt
device has a problem
H
A E
I D N
N D D
R P
(D)
C
R
C
5
Token Packet
device detects token error
or does not respond
1-45
Bulk OUT Transfer (a)
H
A
O
D
U
D
T
R
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
good—note the data toggle
1-46
Bulk OUT Transfer (b)
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
good
D
C
R
C
1
6
A
C
K
H/S Pkt
H
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
device not ready for data
host sends data anyway
H
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
Bulk OUT Transfer (c)
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
(D)
C
R
C
1
6
Data Packet
device sees error; no response
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
good
1-48
Bulk OUT Transfer (d)
H
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
device has problem
A
O
D
U
D
T
R
E
N
D
P
(D)
H
H
C
R
C
5
Token Packet
D
A
T
A
1
Payload
Data
C
R
C
1
6
Data Packet
device detects token error
1-49
SETUP
Control Transfer
H
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
H
D
A
T
A
1
Payload
Data
Data Packet
H
D
H
C
R
C
1
6
A
C
K
H/S Pkt
H
H
D
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
Interrupt IN & OUT
H
A
I D
N D
R
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
good—note the data toggle
H
C
R
C
5
H
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
good—note the data toggle
Interrupt transfers are indistinguishable from BULK
transfers. They occur at most once per frame.
1-51
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
H
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
C
R
C
1
6
C
R
C
1
6
Data Packet
Note: Always DATA0 PID, no ACK
1-52
Requests
1-53
Standard USB Requests
Get
Status
Set
Feature
Set
Address
Clear
Feature
Get
Descriptor
Sync
Frame
Set
Descriptor
Get
Configuration
Set
Configuration
Get
Interface
Set
Interface
1-54
Class 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
1-55
Enumeration
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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 host’s device driver selects a configuration (Set Configuration
Request).
1-56
Operating System Interface
1-57
Host 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
1-58
Which OS’s support USB

Pretty much all of them…More and
more every day
 Windows
 MacOS
 Linux
 Solaris
 VxWorks
1-59
Windows 95 OSR2.1





Microsoft’s first attempt to support
USB
Only available to OEMs
Full of bugs
No HID support
Avoid it!
1-60
Windows 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
1-61
Windows 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
1-62
Windows NT 4
NO
SUPPORT FOR USB PROVIDED BY
Microsoft!!!!
3rd party NT 4 USB drivers are available
1-63
Windows 2000


Robust USB Support including USB 2.0
High Speed
Shares common driver model (WDM)
with Windows 98
1-64
Windows XP




Microsoft’s 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
1-65
USB 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)
1-66
HID 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
1-67
Custom 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)
1-68
Generic USB Device Drivers (for
Windows OS’s)
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)
1-69
Writing a Device Driver
Requires
Specialized Knowledge (WDM and
USBDI, Kernel Debuggers, etc.)
Long Learning Curve (i.e. >6months)
Not very well documented
Avoid this if you can!!!
1-70
Certifications and Logo’s


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
1-71
Some Considerations for DSP
Applications
1-72
USB Silicon Options
USB


USB


USB


Transceiver Only
Cypress TX2, Phillips, etc.
These are primarily intended for FPGA’s that implement a Serial
Interface Engine (SIE)
Transciever + SIE
Cypress SX2, Phillips, etc.
This would be a good option for DSP’s without USB support
Transciever + SIE + Microprocessor
Cypress EZ-USB, EZ-USB FX, EZ-USB-FX2, Microchip USB PIC,
DSP’s that have USB Support
This would also be a good option for DSP’s without USB support
Fixed


Function Devices
FTDI USB to Serial Converter Chips (This is a good option for
DSP’s)
USB to ATAPI Bridge Chips
1-73
USB 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 always…Consider 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.
1-74
USB Resources
1-75
USB 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

1-76
USB Resources: Internet

www.usb.org
USB Specifications and Class
Specifications
 Draft docs
 Bulletin board (Developer Forum)
 Product information incl. chips

1-77
USB Resources: Consultants
J. Gordon Electronic Design
(763) 786-2405
http://www.jged.com
(A shameless plug for my employer)
1-78
Questions
?
1-79
Optional Topics (if there is time)
Optical
Isolation and USB
USB Tools
USB Serial Numbers and Windows XP
1-80
A special thanks to Cypress
Semiconductor for allowing use some of
the included slides.
1-81
Download