PZ
Rozhraní USB
Rozhraní USB
1
PZ
Rozhraní USB
Specifikace USB • USB 1.0 – Původní specifikace.
• USB 1.1 – Doplnění (upřesnění) 1.0. – Rychlosti Low Speed (1.5 Mb/sec) a Full Speed (12 Mb/sec).
• USB 2.0 – Doplněno o High Speed (480 Mb/sec.) a další rozšíření (ping, ...).
• USB OTG (On-The-Go) – Doplněk k USB 2.0. – Rozšíření o komunikaci mezi dvěma zařízeními (bez počítače Host).
2
PZ
Rozhraní USB
Architektura USB (1) • Propojení pomocí USB má stromovou strukturu. • Počítač je obvykle Host. • Na dalších úrovních je buď zařízení nebo rozbočovač (Hub). – USB 1.1 – max. 5 vrstev. – USB 2.0 max. 7 vrstev.
Host (Kořenový rozbočovač)
Zařízení
Rozbočovač
1. vrstva
Rozbočovač
Rozbočovač + Zařízení
Rozbočovač + Zařízení
2. vrstva
Rozbočovač + Zařízení
Rozbočovač + Zařízení
Zařízení
3. vrstva
Rozbočovač
Zařízení
4. vrstva
3
PZ
Rozhraní USB
Architektura USB (2) Komunikace na logické úrovni Aplikační SW
Funkce zařízení Komunikace na logické úrovni
Drivery USB
Logické zařízení Komunikace na fyzické úrovni
Řadič USB
Řadič USB
4
PZ
Rozhraní USB
Architektura USB (3) • Zařízení může mít několik různých rozhraní (Interface). – Např CD může mít rozhraní Audio CD a CD-ROM.
• Každé rozhraní má několik bran (Endpoint). – Například může mít bránu pro řízení a bránu pro data.
Kanály In Out Brána
In Out Brána
Rozhraní
In Out Brána
In Out Brána
Rozhraní
Rozhraní
Zařízení 5
PZ
Rozhraní USB
Konektory a kabely • Maximální délka kabelu LS = 3 m (zpoždění 18 ns). • Maximální délka kabelu FS a HS = 5 m (zpoždění 26 ns). • Z0 = 90Ω.
6
PZ
Rozhraní USB
Fyzická vrstva LS/FS • Používá se diferenciální signál. • Jeden pár vodičů slouží pro oba směry. • Elektrické úrovně na vodičích definují několik stavů (odlišné pro LS, FS, HS), viz dále. Vcc D+ DGND Stínění
7
PZ
Rozhraní USB
Úrovně napětí na lince LS/FS Host
3.3 V
1k5
3.3 V
1k5
D+
Budiče a detektory LS/FS
Budiče a detektory LS/FS
D-
15k
15k
Zařízení
Low Speed
Full Speed
GND 8
PZ
Rozhraní USB
Fyzická vrstva HS • Rozšířená proti LS/FS. • Budiče linky HS fungují jako zdroj proudu 0 mA nebo 17 mA. • Napětí na lince (400 mV / 800 mV) závisí na zakončovacích odporech (2 × 45 Ω). • Detekce připojení HS – napřed jako FS, potom „HS chirp“. • Detekce odpojení – zvýšení linkového napětí na 800 mV. 9
PZ
Rozhraní USB
Úrovně napětí na lince HS Host
3.3 V
1k5
Budiče HS
Detektory HS
D+
17 mA 17 mA
D45R
Budiče a detektory LS/FS GND
Zařízení
15k 45R
15k
Full Speed 45R
45R LS/FS
GND 10
PZ
Rozhraní USB
Budiče linky LS/FS/HS
11
PZ
Rozhraní USB
Úrovně signálů Low Speed Význam
D+
D-
Full Speed D+
D-
High Speed D+
D-
Stav J
D+ < D-
D+ > D-
D+ > D-
Stav K
D+ > D-
D+ < D-
D+ < D-
SE0
< VIL
< VIL
< VIL
< VIL
Idle
< VIL
> VIH
> VIH
< VIL
< VIL
< VIL
SOP
Idle → K
Idle → K
Idle → K
EOP
2 × SE0 + J
2 × SE0 + J
40 × J (K)
Připojení
< VIL
> VIH
> VIH
< VIL
FS + Chirp 12
PZ
Rozhraní USB
Stavy J, K a SE0 na lince LS/FS
Idle = J
K
J
...
K
data
SE0
Idle = J
LS = D - FS = D+ LS = D+ LS = D -
13
PZ
Rozhraní USB
Kódování dat • Kód NRZI. • Po souvislém sledu 6 × 1 se vkládá 0 (bit stuffing) pro synchronizaci. Data 0
1
0
0
Vložená 0 1
1
1
1
1
1
0 1
1
0
0
1
1
0
J K
14
PZ
Rozhraní USB
Formát paketu USB 1.1 (1) • Začátek paketu (SOP) = přechod z klidového stavu (Idle) do K. • Konec paketu (EOP) = 2 × SE0 a přechod do klidového stavu (J).
Klidový SOP stav
Data
EOP
Klidový stav
LS = D - FS = D+ LS = D+ LS = D 15
PZ
Rozhraní USB
Formát paketu USB 1.1 (2) • • • •
Na začátku paketu je synchronizační pole 0000 0001. Za synchr. polem je 1 byte s typem paketu. Další obsah paketu závisí na jeho typu. Na konci paketu je CRC 5 nebo 16 bitů (5, 2, 0 resp. 16, 15, 2, 0).
00000001 SOP Sync.
Typ
Typ
Specifická informace
CRC EOP
0000000110010110
Sync.
IN Token
Idle Adresa Adresa CRC EOP zařízení endpoint
16
PZ
Rozhraní USB
Typy paketů •
Základní typy paketů: 1. 2. 3. 4.
Pověřovací (Token Packet). Datové (Data Packet). Potvrzovací (Handshake Packet). Speciální (Special Packet).
17
PZ
Rozhraní USB
Typy paketů (USB 1.1) Skupina
Paket
Kód
Význam
Token
SOF
0101
Začátek rámce
Token
SETUP
1101
Nastavení/zjištění parametrů zařízení
Token
IN
1001
Přenos dat IN
Token
OUT
0001
Přenos dat OUT
Data
DATA0
0011
Datový paket
Data
DATA1
1001
Datový paket
Handshake
ACK
0010
Potvrzení přijetí dat
Handshake
NAK
1010
Odmítnutí dat (OUT) / Data nejsou k dispozici (IN)
Handshake
STALL
1110
Odmítnutí požadavku (chybový stav zařízení)
Special
PRE
1100
Přepnutí na LS
18
PZ
Rozhraní USB
Další typy paketů (USB 2.0) Skupina
Paket
Kód
Význam
Data
DATA2
0111
Datový paket
Data
MDATA
1111
Datový paket v isochronním přenosu OUT
Handshake
NYET
0110
Potvrzení přijetí, další požadavek bude odmítnut
Special
ERR
1100
Chyba při SPLIT transakci
Special
SPLIT
1000
Začátek komunikace se zařízením USB 1.1
Special
PING
0100
Dotaz na připravenost k přenosu OUT
19
PZ
Rozhraní USB
Transakce Host → Endpoint
• Transakce obsahuje pakety Token – Data – Potvrzení. • Některé transakce nemají datový nebo potvrzovací paket.
OUT Token
Host → Endpoint
IN Token
Host → Endpoint
IN Token
Host → Endpoint
Data0/1 OUT Transakce (bez chyb) Endpoint → Host
Data0/1 IN Transakce (bez chyb)
Endpoint → Host
ACK
Host → Endpoint
ACK
Endpoint → Host
Data0/1 timeout pro ACK IN Transakce (s chybou dat)
20
PZ
Rozhraní USB
Transakce s odmítnutím • NAK indikuje nedostupnost dat (IN) nebo odmítnutí dat (OUT). Host → Endpoint Endpoint → Host
IN Token
NAK
IN Transakce endpoint nemá data pro přenos
Host → Endpoint
OUT Token
Host → Endpoint
Endpoint → Host
Data0/1 OUT Transakce - odmítnutí dat
NAK
21
PZ
Rozhraní USB
Transakce přenosu dat IN
OUT
Data 0/1
Data 0/1
Data 0/1
STALL
ACK
NAK
OUT
Data 0/1
STALL Chyba
NAK Chyba
ACK
IN
Bulk In Host → zařízení
Bulk Out
Isochronous Isochronous IN OUT Zařízení → host 22
PZ
Rozhraní USB
Rámce • Na USB 1.1 je přenosová kapacita rozdělena do rámců dlouhých 1 ms. – Při FS: 1 rámec = 12 000 bitových intervalů, tj. 1500 bytů.
• Na začátky rámce se vysílá SOF pro případnou synchronizaci zařízení. FS rámec 1 ms 12000 bitů = 1500 bytů SOF
1. 2. transakce transakce
n. transakce
SOF
23
PZ
Rozhraní USB
Mikrorámce • Na USB 2.0 (HS) je přenosová kapacita rozdělena do mikrorámců (125 µs). – Při HS (480 MHz): 125 µs = 60 000 bitových intervalů, tj. 7500 bytů. FS rámec 1 ms HS μrámce 125 μs 60 000 bitů = 7 500 bytů
SOF
1. 2. transakce transakce
n. transakce
SOF
24
PZ
Rozhraní USB
Typy přenosů • Podle požadavků na přenos se používají různé typy přenosu: – Setup - nastavení / zjištění konfigurace zařízení. – Isochronous – přenos dat s dodržením požadované rychlosti přenosu. – Bulk – přenos dat bez dodržení požadavků na rychlost přenosu. – Interrupt – požadavek na přenos (Token IN/OUT) se vysílá s nastavenou periodou. 25
PZ
Rozhraní USB
Přenosy Setup • Přenos Setup má obecně fáze Setup – Data – Status. Fáze Setup
Fáze Status
Setup Transakce
IN Transakce
Setup Token
Data (8Bytů) ACK
Fáze Setup Setup Transakce
ACK
Datová fáze OUT Transakce
Fáze Setup Setup Transakce
IN Token
OUT Transakce
Datová fáze IN Transakce
IN Transakce
Fáze Status IN Transakce
Fáze Status OUT Transakce
26
PZ
Rozhraní USB
Přenosy Isochronous • Při konfiguraci zařízení žádá o přenos Isochronous s určitou kapacitou – Host žádost akceptuje nebo zamítne. • Maximálně 1023 bytů v paketu (HS: 1024 bytů). • V rámci je max. 1 Isochronous paket pro kažou bránu (endpoint) (HS: 3 pakety). • Nepotvrzuje se ACK/NAK. • Maximální přenosová rychlost: – FS: 1 paket ā 1023 B × 1000 rámců/s = ≈ 1 MB/s (využije cca 69% přenosové kapacity). – HS: 3 pakety ā 1024 B × 8000 µrámců/s = ≈ 24 MB/s (cca 41% kapacity). 27
PZ
Rozhraní USB
Synchronizace při Isochronním přenosu • Příjemce dat se synchronizuje pomocí SOF. Snímání dat
SOF Isochronní p.
SOF Zdroj dat
Rámec Přenos paketu
Isochronní p.
Příjemce dat
SOF
Použití dat
28
PZ
Rozhraní USB
Přenosy Bulk • Nemají zaručenou přenosovou rychlost. • V paketu 8, 16, 32 nebo 64 bytů (HS: max. 512 bytů). • V jednom rámci může být libovolný počet transakcí na jednu bránu (endpoint). • Maximální přenosová rychlost*: – FS: 19 paketů ā 64 B × 1000 rámců = ≈1.2 MB/s. – HS: 13 paketů ā 512 B × 8000 µrámců = ≈52 MB/s.
* neprobíhají-li jiné přenosy. 29
PZ
Rozhraní USB
Přidělování kapacity rámce (1) • Plánování provádí Host podle požadavků jednotlivých zařízení. • 90% kapacity rámce se přednostně přiděluje přenosům Isochronous a Interrupt (u USB 2.0 – 80%). • 10% je vyhraženo pro řídicí přenosy (Setup). • Případný zbytek (pokud není využita kapacita pro Isochronous a Interrupt) se přiděluje pro přenosy Bulk.
30
PZ
Rozhraní USB
Přidělování kapacity rámce (2) Požadavek na 1 zařízení
Požadavek na 2. zařízení
USB driver 1. transakce
2. transakce
3. transakce
1. 2. 3. 4. 5. trans. trans. trans. trans. trans.
Host Controller driver 1. 1. transakce trans.
2. 2. trans. transakce
3. 3. trans. transakce
Rámec
Rámec
Rámec
31
PZ
Rozhraní USB
Kombinace LS/FS zařízení na USB 1.1 (1) • Při komunikaci s FS jsou porty s LS zařízením odpojeny. Host (Kořenový rozbočovač)
Zařízení
Rozbočovač
Zařízení
Zařízení
Zařízení
Rozbočovač
Zařízení
Low Speed
Odpojený port
Full Speed
Full Speed přenos
Komunikace s Full Speed zařízením na USB 1.1
Zařízení
32
PZ
Rozhraní USB
Kombinace LS/FS zařízení na USB 1.1 (2) • Při komunikaci s LS se porty LS připojí paketem PRE. • LS přenos je detekován i ve FS zařízeních.
Host (Kořenový rozbočovač)
Zařízení
PRE
IN Token Zap.
Vyp.
PRE
DATA 0/1 Zap.
PRE Vyp.
ACK Zap.
Rozbočovač
Zařízení
Vyp.
Rozbočovač
Zařízení
Zařízení
Zařízení
Low Speed
Zařízení
Low Speed přenos
Full Speed
Komunikace s Low Speed zařízením na USB 1.1
Host → HUB Host → Endpoint Endpoint → Host
Full Speed Low Speed
33
PZ
Rozhraní USB
Kombinace zařízení LS/FS/HS na USB 2.0 1.
Host/Hub je USB 1.1 (LS/FS), zařízení je USB 2.0 (HS). – Zařízení se přizpůsobí a komunikuje podle USB 1.1 (FS). 2. Host/Hub je USB 2.0 (HS), zařízení je USB 1.1 (LS/FS). – Port se zařízením se nastaví do režimu USB 1.1. Hub převede pakety z HS do LS/FS a naopak – „Split“ transakce.
Host (Kořenový rozbočovač 2.0)
Zařízení
Rozbočovač
Zařízení
Zařízení
Zařízení
Rozbočovač
Zařízení
Zařízení
Low Speed
"Split" transakce
Full Speed
Low/Full Speed přenos
High Speed 2.0
High Speed přenos
Komunikace s Low/Full Speed zařízením na USB 2.0
34
PZ
Rozhraní USB
Split transakce • Je zahájena paketem SSPLIT resp. CSPLIT. • Hub převede pakety HS na LS/FS a naopak. čas Host High Speed 2.0 SSPLIT
IN Token
CSPLIT
IN Token
Data
Rozbočovač High Speed 2.0 IN Token
Data
ACK
Zařízení Low/Full Speed 1.1 Low/Full Speed přenos
High Speed přenos 35
PZ
Rozhraní USB
Připojení zařízení (1) • Po připojení musí mít zařízení funkční bránu 0 (Endpoint 0). • Host přečte z brány 0 deskriptor konfigurace zařízení. • Host přidělí zařízení unikátní adresu na USB. • Host přečte sadu deskriptorů pro jednotlivá zařízení, konfigurace, rozhraní (Interface) a brány (Endpoint). • Host nastaví vhodnou kofiguraci zařízení.
36
PZ
Rozhraní USB
Připojení zařízení (2)
37
PZ
Rozhraní USB
Připojení zařízení (3)
38
PZ
Rozhraní USB
Deskriptory • Každé zařízení má hierarchickou sadu deskriptorů, které popisují zařízení, konfigurace, rozhraní a brány. • Deskriptory se čtou ze zařízení po jeho připojení v procesu „enumerace“. Deskriptor zařízení
Deskriptor konfigurace 2
Deskriptor konfigurace 1
Deskriptor rozhraní
Deskriptor brány (IN)
PZ
Deskriptor brány (OUT)
Deskriptor rozhraní
Deskriptor brány (IN)
Deskriptor brány (OUT)
39
Rozhraní USB
Třídy zařízení • Každé zařízení má jedno nebo více rozhraní pro zařízení různé třídy a podtřídy (Device Class, Device Subclass) - zjistí se z deskriptoru. • Pro každou třídu existují specifické drivery. – – – – –
Audio Class. Communication Device Class. Content Security Class. Human Interface Device Class. Image Device Class.
– – – – – –
IrDA Class. Mass Storage Device Class. Monitor Class. Physical Device Interface Class. Power Device Class. Printer Device Class.
40
PZ
Rozhraní USB
Napájení zařízení (1) • • •
Po připojení může zařízení odebírat z USB maximálně 100 mA. Při konfiguraci může požadovat větší odběr, maximálně 500 mA. Podle způsobu napájení lze zařízení rozdělit do 3 skupin: 1. Zařízení napájená jen z USB. 2. Zařízení napájená jen z vnějšího zdroje. 3. Zařízení napájená z USB a vnějšího zdroje.
41
PZ
Rozhraní USB
Napájení zařízení (2) D+ D -
Řadič USB + zařízení Odběr max. 100 mA
USB VCC GND
D+ D USB VCC GND
Stabilizátor
Řadič USB
Zap./Vyp.
Zap./Vyp.
Zařízení
Odběr max. 100 mA Stabilizátor
Odběr max. 500 mA
Napájení z USB - max. 500 mA
Napájení jen z USB
D+ D -
Řadič USB
Zařízení
USB
D+ D -
Řadič USB
Zap./Vyp.
Zařízení
USB
VCC GND
Přídavný zdroj Napájení z vnějšího zdroje
VCC GND
Stabilizátor Kombinované napájení
Přídavný zdroj
42
PZ
Rozhraní USB
USB On-The-Go • Pro propojení dvou zařízení („Device“). • Zařízení jsou vybavena zásuvkami Mini AB. • Strana A je implicitní Host. Zařízení A Mini AB Mini A zásuvka zástrčka
Zařízení B Mini B Mini AB zástrčka zásuvka Vcc D+ DID GND
Vcc D+ DID GND
PZ
Zásuvka Mini B
Implicitní zařízení
Implicitní Host
Zásuvka Mini AB
Zásuvka Mini A
Zástrčky Mini A a mini B
Zásuvka Mini AB
43
Rozhraní USB
USB On-The-Go • Doplněny nové protokoly: – Protokolem HNP (Host Negotiation Protocol) lze převádět zařízení Host ↔ Device (průběžně). – Protokolem SRP (Session Request Protocol) může odpojené zařízení žádat o zahájení komunikace.
44
PZ
Rozhraní USB
Řadiče USB •
Aplikace
Hardwarový řadič USB (Host Controller) má nad sebou několik vrstev ovladačů.
Class Driver
•
•
•
OHCI (Open Host Controller Interface) definuje komunikaci mezi HC a HCD (Host Controller Driver). Pro USB 1.1. UHCI (Universal Host Controller Interface) používá jiný typ HC s menší schopností plánování (plánování přenosů provádí HCD). Pro USB 1.1. EHCI (Enhanced Host Controller Interface) - pro USB 2.0.
USB Driver
Host Controller Driver
OHCI Host Controller
USB 45
PZ
Rozhraní USB
OHCI • V OHCI se používají dva způsoby komunikace mezi HCD a HC: – Registry v HC. – Sdílená paměť (je součástí hlavní paměti). • Při práci se sdílenou pamětí se HC chová jako Bus Master.
Host Controller Driver Systémová paměť
Sdílená paměť Registy HC Host Controller
HC pracuje jako Bus Master
46
PZ
Rozhraní USB
Sdílená paměť v OHCI • HCD vytváří a udržuje ve sdílené paměti seznamy deskriptorů: – ED – Endpoint Descriptor. • Popisuje komunikaci s jednotlivými bránami (Endpoint).
– TD – Transfer Descriptor. • Popisuje jednotlivé přenosy.
• Ukazatele na seznamy deskriptorů jsou v registrech HC nebo v komunikační oblasti sdílené paměti (HCCA).
47
PZ
Rozhraní USB
Seznamy deskriptorů Sdílená paměť
Interrupt Transfer HCCA
Int 16
32 ms 16 ms ED ED ED
Host Controller
Int 8
ED
HcHCCA
Int 24
ED
Control
Int 4
ED
Bulk
. ..
Int 0
Int 31
8 ms
4 ms
2 ms
1 ms
Isochronous Transfer
ED ED
ED
ED
ED
ED
ED
ED
TD
TD
TD
ED
ED
TD TD
Done
ED
TD
TD
TD
TD
TD
Dokončené přenosy
ED
ED
ED
ED
TD
TD
TD
TD
TD
TD TD
TD Bulk Transfer
ED
ED
ED
TD
TD
TD
TD
TD TD
Control Transfer
48
PZ
Rozhraní USB
Endpoint Descriptor
• • • •
Maximální délka paketu. Řízení a status (směr přenosu, ... ). Odkaz na seznam TD. Odkaz na další ED.
ED Max. Packet Size Contr/Stat TD Queue Tail TD Queue Head Next Endpoint Descriptor
49
PZ
Rozhraní USB
Transfer Descriptor
• Pro každý ED se použije jen první TD v seznamu. • Po dokončení přenosu se TD zařadí do seznamu dokončených přenosů.
Control / Status Buffer PTR Next TD Buffer End
1. přenos Datový buffer
• Řízení a status. • Adresa na začátku a konce datového bufferu. • Odkaz na další TD.
TD
2. přenos
Control / Status Buffer PTR
n. přenos
Next TD Buffer End
50
PZ
Rozhraní USB
Plánování přenosu (1) • V první části rámce se přenáší Control a Bulk. – Control a bulk mají přiděleno min. 10% kapacity.
• Po vyčerpání kapacity Control a Bulk se přenáší periodické přenosy (Interrupt a Isochronous). • Je-li volná kapacita na konci rámce, použije se na Control a Bulk. Pevně nastavená hranice (”Periodic Start”) SOF
NP 1
Periodické
NP 2
Po dokončení periodických přenosů 1 ms 51
PZ
Rozhraní USB
Plánování přenosu (2) • Poměr mezi přenosy Control a Bulk se nastavuje v registrech HC.
Control ED
ED
ED
Bulk ED
ED
Nastaveno Control : Bulk = 4 : 1
52
PZ
Rozhraní USB
Blokové schéma časování 14 bitů 0x2EDF 16 bitů 12 MHz
Frame Remaining Komparátor Periodic Start
Frame Number Vysílání SOF
Int. n
Neperiodické / periodické přenosy
53
PZ
Rozhraní USB
Reference http://www.usb.org/home Anderson, D., Dzatko, D.: Universal Serial Bus System Architecture. Second Edition, Addison Wesley 2001. ISBN 0-201-30975-0.
54