100% found this document useful (2 votes)
56 views81 pages

Compdsp Burk USB Fundamentals

This document provides an overview of USB fundamentals and applications for digital signal processing. It discusses key aspects of USB including specifications, components, signaling, packets, transfers, and considerations for DSP applications. The document covers USB specifications and versions, host controllers, hubs, devices, topologies, speeds, endpoints, descriptors, and the layered "onion" model including signaling, packets, transfers and the operating system interface.

Uploaded by

Damian Primo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
56 views81 pages

Compdsp Burk USB Fundamentals

This document provides an overview of USB fundamentals and applications for digital signal processing. It discusses key aspects of USB including specifications, components, signaling, packets, transfers, and considerations for DSP applications. The document covers USB specifications and versions, host controllers, hubs, devices, topologies, speeds, endpoints, descriptors, and the layered "onion" model including signaling, packets, transfers and the operating system interface.

Uploaded by

Damian Primo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 81

USB Fundamentals and

Applications for Digital Signal


Processing
Greg Burk
J. Gordon Electronic Design
[email protected]
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
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
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 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


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, its not a drop-in replacement
Its 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
Are

in PC on motherboard or add-in card

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
dont 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 whats 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

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

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

164

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

goodnote 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

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

goodnote 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

goodnote 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
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
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
O
D
U
D
T
R

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

device sees error; no response

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

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
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

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

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

goodnote the data toggle

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

goodnote 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

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 hosts 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 OSs support USB

Pretty much all of themMore and


more every day
Windows
MacOS
Linux
Solaris
VxWorks

1-59

Windows 95 OSR2.1

Microsofts 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

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

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 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)
1-69

Writing a Device Driver


Requires

Specialized Knowledge (WDM and


USBDI, Kernel Debuggers, etc.)
Long
Not

Learning Curve (i.e. >6months)

very well documented


Avoid this if you can!!!

1-70

Certifications 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
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 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

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
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 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.
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

You might also like