Distribuované systémy a počítačové sítě Universal Serial Bus - USB Komunikační principy Enumerace Standardní třídy zařízení
Obecné charakteristiky distribuovaná datová pro připojení počítačových periferií klávesnice, myš, Flash disk, tiskárna, modem, DAQ modul deterministická technologie (Master/Slave) až 127 zařízení v rámci jedné USB sítě optimalizace pro různé typy přenosů malé i větší bloky dat spolehlivá i nespolehlivá komunikace podpora isochronních přenosů přenosové rychlosti fyzické vrstvy od Mbit/s do jednotek Gbit/s podle varianty (low-/full-/high-/super-speed) podpora plug&play a hot swap detekce připojení/odpojení, automatická konfigurace podpora napájení periferií z USB rozhraní včetně režimů šetření energie
Topologie systému 3 typy uzlů hostitel (host) řízení Master/Slave rozbočovače (hub), od verze 2.0 se chovají spíše jako přepínače zařízení (function)
Topologie systému max. 5 úrovní omezení zpoždění
Hostitel (Host) v systému jediný ale!!! USB On the Go!!! výběr role při spojení typicky PC nebo nějaký embedded systém mobilní zařízení, průmyslový kontroler, TV přijímač řídí datové přenosy v celém systémů má roli Master řídí proces enumerace rozpoznání zařízení a hubů, konfigurace a spuštění power management detekce konfigurace napájení režimy snížené spotřeby obvykle integruje řadič hostitele a tzv. kořenový rozbočovač (root hub) ten obvykle nabízí 2 USB porty
Rozbočovač (Hub) tvoří komunikační infrastrukturu USB detekuje připojení/odpojení dalšího zařízení na down-stream portech distribuuje/koncentruje datové toky dolů/vzhůru vzhledem k hierarchii v topologii systému povoluje/zakazuje přenosy z a na jednotlivé down-stream porty důležité pro enumeraci management napájení na down-stream portech detekce low/full speed překlad high low/full speed napájen ze sběrnice nebo z vlastního zdroje
Zařízení (Function) koncové periferní zařízení s požadovanou funkcionalitou připojuje se vždy do down-stream portu rozbočovače komunikuje low/full/high/super speed rychlostí může být napájeno ze sběrnice či mít vlastní zdroj bus X self powered max. odběr z USB portu 500 ma power management podpora P&P standardní třídy zařízení zařízení s obdobnou funkcionalitou kompletně definovaná komunikace a funkčnost podpora celé třídy jediným ovladačem v OS např. Mass Storage, HID, Printer
Princip komunikace
Princip komunikace
Princip komunikace
Typy rour (pipes) stream pipes přenáší nestrukturovaná data jednosměrné (IN, OUT) využívají protokoly pro přenosy typu Interrupt /přerušovací) Bulk (blokový) Isochronous (isochronní) message pipes typicky strukturovaná data obousměrná komunikace sekvence žádost data potvrzení využívá protokol pro přenos typu Control (řídicí)
Typy přenosů (transfer types) mají definovány základní vlastnosti formát dat směr přenosu omezení velikosti paketu omezení přístupu ke sběrnici omezení dle rychlostní varianty časové latence předepsaná sekvence paketů a transakcí způsob zpracování chyb každé rouře je při jejím vytvoření přiřazen jeden ze čtyř typů přenosu řídicí (control) izochronní (isochronous) přerušovací (interrupt) blokový (bulk)
Přenos Transakce Paket komunikace probíhá cyklicky v (mikro)framech (1 ms / 125μs)
Typy přenosů řídicí každé USB zařízení implementuje řídicí přenos na rouře 0 tzv. default pipe slouží pro enumeraci zařízení jako jediný je obousměrný maximální velikost paketu závisí na rychlosti sběrnice 8 bajtů pro LS 8, 16, 32 nebo 64 bajtů pro FS 64 bajtů pro HS v případě chyby se přenos paketu opakuje pro řídicí přenosy je rezervováno 10% (LS, FS) nebo 20% (HS) přenosové kapacity skládá se ze dvou, tří nebo více formálně odlišných transakcí závěrečná transakce (status) slouží k potvrzení provedení požadované akce
Typy přenosů izochronní v USB zařízeních volitelný slouží pro přenosy streamů (audio, video) v reálném čase jednosměrný maximální velikost paketu závisí na rychlosti sběrnice nelze pro LS 1023 bajtů pro FS 1024 bajtů pro HS možnost tzv. high-bandwidth endpointů pro izochronní (spolu s přerušovacími) přenosy je rezervováno až 90% (FS) nebo 80% (HS) přenosové kapacity standardně maximálně jedna transakce za (mikro)frame garantovaná latence odeslání dat v případě chyby se transakce neopakuje skládá se ze sekvence formálně totožných transakcí
Typy přenosů přerušovací v USB zařízeních volitelný slouží především pro emulaci přerušení jednosměrný maximální velikost paketu závisí na rychlosti sběrnice 8 bajtů pro LS 64 bajtů pro FS 1024 bajtů pro HS možnost tzv. high-bandwidth endpointů pro přerušovací (spolu s izochronními) přenosy je rezervováno až 90% (FS) nebo 80% (HS) přenosové kapacity standardně maximálně jedna transakce za (mikro)frame pro LS max. 1 transakce za 10 frame v případě chyby se transakce opakuje skládá se ze sekvence formálně totožných transakcí
Typy přenosů blokový v USB zařízeních volitelný slouží především pro spolehlivý přenos bloků dat jednosměrný maximální velikost paketu závisí na rychlosti sběrnice nelze pro LS 64 bajtů pro FS 512 bajtů pro HS není rezervována žádná přenosová kapacita využívá tu zbývající žádná garance latence odeslání dat v případě chyby se transakce opakuje skládá se ze sekvence formálně totožných transakcí
Transakce skládá se typicky ze tří paketů Token (výzva) Data Handshake (potvrzení) transakci vždy iniciuje hostitel (Master) posílá Token podle směru jde o transakci typu vstupní nebo výstupní vždy z pohledu hostitele vstupní transakce přenáší datový paket do hostitele, výstupní od něj potvrzení generuje příjemce datového paketu ze samotné transakce nelze jednoznačně určit, jaký typ přenosu realizuje to je dáno způsobem provádění transakcí
Pakety pole PID definuje typ paketu SOF (Start of Frame) indikuje počátek (mikro)rámce Token (výzva) výzva od hostitele pro zařízení (či hub) ADDR adresa zařízení, až 127 různých (0 je rezervovaná) ENDP identifikace roury (koncového bodu), 0 15, 0 je vždy řídicí
Pakety pole PID definuje typ paketu datový paket slouží k přenosu dat odesílá buď hostitel nebo zařízení dle směru přenosu Handshake (potvrzení) odesílá příjemce datového paketu potvrzuje správný příjem dat
Transakce přerušovacích (Interrupt) přenosů
Transakce blokových (Bulk) přenosů Token Data Handshake
Transakce izochronních (Isochronous) přenosů
Transakce řídicích (Control) přenosů řídicí přenos se skládá ze 2 a více transakcí 1. transakce Setup co hostitel chce 2. transakce Data může být vynechána může být vícenásobná 3. transakce Status prázdný datový paket nebo info o chybě
Transakce řídicích (Control) přenosů datová fáze se řídí pravidly transakcí blokového přenosu
Přehled PIDů typů paketů
Přehled PIDů typů paketů
Fyzická vrstva standardní kabel
Fyzická vrstva bit stuffing po 6 bitech log. 1 je vložen bit log.0 neprovádí se pro sekvenci logických nul kanálové kódování NRZI
Fyzická vrstva LS/FS signalizace
Fyzická vrstva detekce připojení/odpojení současně detekce rychlosti full speed
Fyzická vrstva detekce připojení/odpojení současně detekce rychlosti low speed pro high speed specielní mechanismus během resetu nabídka (od USB2.0 hubu) a potvrzení (od high speed zařízení)
Fyzická vrstva napájení ze sběrnice hub max. odběr 500 ma, napájení max. 100 ma na 4 portech zařízení max. 500 ma (high power) max. 100 ma (low power) max. 500 A v režimu spánku před konfigurací vždy max. 100 ma vlastní zdroj odběr ze sběrnice omezen na 100 ma nominální hodnota napětí 5 V úbytek na kabelech interně v zařízeních 3,3 V regulátor
Stavy zařízení přechody mezi jednotlivými stavy jsou řízeny příkazy hostitele po default rouře končící v endpointu 0 využívá řídicí přenosy standardní dotazy a odpovědi enumerace zařízení
Proces enumerace reset vyčtení deskriptoru zařízení reset vyčtení deskriptoru zařízení přiřazení adresy vyčtení dalších deskriptorů nastavení konfigurace zde je dokončena enumerace a práci se zařízením přebírá specifický ovladač
Deskriptor zařízení Device Descriptor 14 položek jediný obsahuje základní informace o zařízení a použité specifikaci USB, podle které se zařízení chová identifikuje výrobce a produkt na základě těchto informací vybírá operační systém vhodný ovladač definuje velikost bufferu endpointu 0 (default pipe, min 8B a max 64B) hostitel se musí přizpůsobit definuje počet různých konfigurací zařízení definuje případnou standardní třídu zařízení obsahuje indexy na popisy položek v textovém deskriptoru
Deskriptor konfigurace Configuration Descriptor pro každou konfiguraci jeden definuje počet možných rozhraní v dané konfiguraci identifikuje vlastnosti zařízení v dané konfiguraci vlastní či sběrnicové napájení podpora pro remote-wakeup definuje spotřebu zařízení v dané konfiuraci obsahuje indexy na popisy položek v textovém deskriptoru
Deskriptor rozhraní Interface Descriptor jeden pro každé rozhraní definuje počet endpointů, tvořících rozhraní definuje třídu zařízení, pokud není definována deskriptorem zařízení obsahuje indexy na popisy položek v textovém deskriptoru
Deskriptor koncového bodu Endpoint Descriptor jeden pro každý endpoint definuje směr roury, končící v endpointu definuje podporovaný typ přenosu definuje číslo endpointu (roury) definuje velikost datového bufferu a tedy max. velikost datového paketu pro přerušovací roury definuje periodu dotazování pro isochronní roury periodu zasílání dat obsahuje indexy na popisy položek v textovém deskriptoru