1 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 ). 2
Architektura USB (1) Propojení pomocí USB má stromovou strukturu. Počítač je obvykle. 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. Rozbočovač Rozbočovač Rozbočovač + (Kořenový rozbočovač) Rozbočovač + Rozbočovač + Rozbočovač + 1. vrstva 2. vrstva 3. vrstva Rozbočovač 4. vrstva 3 Architektura USB (2) Aplikační SW Komunikace na logické úrovni Funkce zařízení Drivery USB Komunikace na logické úrovni Logické zařízení Řadič USB Komunikace na fyzické úrovni Řadič USB 4
Architektura USB (3) 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 In Out In Out In Out Brána Brána Brána Brána Rozhraní Rozhraní Rozhraní 5 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). Z 0 = 90Ω. 6
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+ D - GND Stínění 7 Úrovně napětí na lince LS/FS 3.3 V 3.3 V 1k5 1k5 Budiče a detektory LS/FS D+ D - Budiče a detektory LS/FS 15k 15k Low Speed Full Speed GND 8
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 Úrovně napětí na lince HS 3.3 V Budiče HS 1k5 Detektory HS 17 ma 17 ma D+ D - Budiče a detektory LS/FS GND 45R 15k 45R 15k Full Speed 45R 45R LS/FS GND 10
Budiče linky LS/FS/HS 11 Úrovně signálů Význam Low Speed 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 < V IL < V IL < V IL < V IL Idle < V IL > V IH > V IH < V IL < V IL < V IL SOP Idle K Idle K Idle K EOP 2 SE0 + J 2 SE0 + J 40 J (K) Připojení < V IL > V IH > V IH < V IL FS + Chirp 12
Stavy J, K a SE0 na lince LS/FS Idle = J K J K... data SE0 Idle = J LS = D - LS = D+ FS = D+ LS = D - 13 Kódování dat Kód NRZI. Po souvislém sledu 6 1 se vkládá 0 (bit stuffing) pro synchronizaci. Data Vložená 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 J K 14
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ý stav SOP Data EOP Klidový stav LS = D - LS = D+ FS = D+ LS = D - 15 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). SOP 00000001 Sync. Typ Typ Specifická CRC EOP informace 0000000110010110 Sync. IN Token Adresa zařízení Adresa endpoint CRC EOP Idle 16
Typy paketů Základní typy paketů: 1. Pověřovací (Token Packet). 2. Datové (Data Packet). 3. Potvrzovací (Handshake Packet). 4. Speciální (Special Packet). 17 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
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 Transakce Endpoint Endpoint Endpoint Transakce obsahuje pakety Token Data Potvrzení. OUT Token Data0/1 OUT Transakce (bez chyb) ACK Některé transakce nemají datový nebo potvrzovací paket. IN Token Endpoint Endpoint Data0/1 IN Transakce (bez chyb) ACK Endpoint Endpoint Endpoint IN Token Data0/1 timeout pro ACK IN Transakce (s chybou dat) 20
Transakce s odmítnutím NAK indikuje nedostupnost dat (IN) nebo odmítnutí dat (OUT). Endpoint Endpoint IN Token NAK IN Transakce - endpoint nemá data pro přenos Endpoint Endpoint Endpoint OUT Token Data0/1 OUT Transakce - odmítnutí dat NAK 21 Transakce přenosu dat IN OUT IN OUT Data 0/1 Data 0/1 Data 0/1 Data 0/1 ACK NAK STALL ACK NAK STALL Chyba Chyba Bulk In Bulk Out Isochronous IN zařízení host Isochronous OUT 22
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. transakce 2. transakce n. transakce SOF 23 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. transakce 2. transakce n. transakce SOF 24
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 Přenosy Setup Přenos Setup má obecně fáze Setup Data Status. Fáze Setup Fáze Status Setup Transakce IN Transakce Setup Tok en Data (8Bytů) ACK IN Token ACK Fáze Setup Datová fáze Fáze Status Setup Transakce OUT Transakce OUT Transakce IN Transakce Fáze Setup Datová fáze Fáze Status Setup Transakce IN Transakce IN Transakce OUT Transakce 26
Přenosy Isochronous Při konfiguraci zařízení žádá o přenos Isochronous s určitou kapacitou žá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 Synchronizace při Isochronním přenosu Příjemce dat se synchronizuje pomocí SOF. Snímání dat SOF SOF Isochronní p. Zdroj dat Rámec Přenos paketu Isochronní p. SOF Příjemce dat Použití dat 28
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 Přidělování kapacity rámce (1) Plánování provádí 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
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. trans. 2. trans. 3. trans. 4. trans. 5. trans. Controller driver 1. transakce 1. trans. 2. trans. 2. transakce 3. trans. 3. transakce Rámec Rámec Rámec 31 Kombinace LS/FS zařízení na USB 1.1 (1) Při komunikaci s FS jsou porty s LS zařízením odpojeny. (Kořenový rozbočovač) Rozbočovač Rozbočovač Low Speed Odpojený port Full Speed Full Speed přenos Komunikace s Full Speed zařízením na USB 1.1 32
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. (Kořenový rozbočovač) Rozbočovač Rozbočovač PRE IN Token PRE DATA 0/1 PRE ACK Zap. Vyp. Zap. Vyp. Zap. Vyp. Low Speed Full Speed Low Speed přenos HUB Endpoint Endpoint Full Speed Low Speed Komunikace s Low Speed zařízením na USB 1.1 33 Kombinace zařízení LS/FS/HS na USB 2.0 1. /Hub je USB 1.1 (LS/FS), zařízení je USB 2.0 (HS). se přizpůsobí a komunikuje podle USB 1.1 (FS). 2. /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. (Kořenový rozbočovač 2.0) Low Speed Full Speed Rozbočovač High Speed 2.0 Rozbočovač "Split" transakce Low/Full Speed přenos High Speed přenos Komunikace s Low/Full Speed zařízením na USB 2.0 34
Split transakce Je zahájena paketem SSPLIT resp. CSPLIT. Hub převede pakety HS na LS/FS a naopak. čas High Speed 2.0 SSPLIT IN Token CSPLIT IN Token Data Rozbočovač High Speed 2.0 IN Token Data ACK Low/Full Speed 1.1 Low/Full Speed přenos High Speed přenos 35 Připojení zařízení (1) Po připojenímusímít zařízení funkční bránu 0 (Endpoint 0). přečte z brány 0 deskriptor konfigurace zařízení. přidělí zařízení unikátní adresu na USB. přečte sadu deskriptorů pro jednotlivá zařízení, konfigurace, rozhraní (Interface) a brány (Endpoint). nastaví vhodnou kofiguraci zařízení. 36
Připojení zařízení (2) 37 Připojení zařízení (3) 38
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 1 Deskriptor konfigurace 2 Deskriptor rozhraní Deskriptor rozhraní Deskriptor brány (IN) Deskriptor brány (OUT) Deskriptor brány (IN) Deskriptor brány (OUT) 39 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
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. napájená jen z USB. 2. napájená jen z vnějšího zdroje. 3. napájená z USB a vnějšího zdroje. 41 Napájení zařízení (2) D + D - Řadič USB + zařízení D + D - Řadič USB Zap./Vyp. USB Odběr max. 100 ma USB Odběr max. 100 ma VCC GND Stabilizátor VCC GND Stabilizátor Odběr max. 500 ma Napájení jen z USB Napájení z USB - max. 500 ma D + D - Řadič USB Zap./Vyp. D + D - Řadič USB Zap./Vyp. USB USB VCC GND Přídavný zdroj VCC GND Stabilizátor Přídavný zdroj Napájení z vnějšího zdroje Kombinované napájení 42
USB On-The-Go Pro propojení dvou zařízení ( Device ). jsou vybavena zásuvkami Mini AB. Strana A je implicitní. A Mini AB zásuvka Vcc D+ D- ID GND Implicitní Mini A zástrčka Mini B zástrčka B Mini AB zásuvka Vcc D+ D- ID GND Implicitní zařízení Zásuvka Mini A Zásuvka Mini B Zásuvka Mini AB Zástrčky Mini A a mini B Zásuvka Mini AB 43 USB On-The-Go Doplněny nové protokoly: Protokolem HNP ( Negotiation Protocol) lze převádět zařízení Device (průběžně). Protokolem SRP (Session Request Protocol) může odpojené zařízení žádat o zahájení komunikace. 44
Řadiče USB Hardwarový řadič USB ( Controller) má nad sebou několik vrstev ovladačů. OHCI (Open Controller Interface) definuje komunikaci mezi HC a HCD ( Controller Driver). Pro USB 1.1. UHCI (Universal 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 Controller Interface) - pro USB 2.0. Aplikace Class Driver USB Driver Controller Driver Controller OHCI USB 45 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. Controller Driver Registy HC Controller Systémová paměť Sdílená paměť HC pracuje jako Bus Master 46
Sdílená paměť v OHCI HCD vytváří a udržuje ve sdílené paměti seznamy deskriptorů: Endpoint Descriptor. Popisuje komunikaci s jednotlivými bránami (Endpoint). 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 Seznamy deskriptorů HCCA 32 ms Interrupt Transfer 16 ms 8 ms 4 ms 2 ms 1 ms Sdílená paměť Controller HcHCCA Control Bulk Int 0 Int 16 Int 8 Int 24 Int 4... Int 31 Isochronous Transfer Done Dokončené přenosy Bulk Transfer Control Transfer 48
Endpoint Descriptor Maximální délka paketu. Řízení a status (směr přenosu,... ). Odkaz na seznam. Odkaz na další. Max. Packet Size Contr/Stat Queue Tail Queue Head Next Endpoint Descriptor 49 Transfer Descriptor Řízení a status. Adresa na začátku a konce datového bufferu. Odkaz na další. Pro každý se použije jen první v seznamu. Po dokončení přenosu se zařadí do seznamu dokončených přenosů. Control / Status Buffer PTR Next Buffer End Control / Status Buffer PTR Next Buffer End 1. přenos 2. přenos n. přenos Datový buffer 50
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 Plánování přenosu (2) Poměr mezi přenosy Control a Bulk se nastavuje v registrech HC. Control Bulk Nastaveno Control : Bulk = 4 : 1 52
Blokové schéma časování 12 MHz 14 bitů 0x2F Frame Remaining 16 bitů Frame Number Komparátor Periodic Start Vysílání SOF Int. n Neperiodické / periodické přenosy 53 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