USB Universal Serial Bus univerzln sriov sbrnice USB
USB • Universal Serial Bus – univerzální sériová sběrnice • USB Implementers Forum – definice průmyslového standardu • specifikace se zabývá mechanickou, elektrickou, spojovou a transportní vrstvou a komunikačním protokolem • tři verze: 1. 0, 1. 1, 2. 0 • zdarma dostupné, nepatří mezi IEEE • www. usb. org • smrz. chrudim. cz/usbspec. zip 1
Vlastnosti USB • sériová poloduplexní sběrnice • 1, 5 Mbaud (low speed), 12 Mbaud (full speed), 480 Mbaud (high-speed USB 2. 0) • diferenciální vedení, galvanické spojení s napájením (Vbus) a zemí (GND) • zařízení mohou být napájena přes Vbus a GND, I<500 m. A, nutný sleep mode • linková vrstva používá NRZI kanálové kódování a bit stuffing • pakety chráněny cyklickou redundantní kontrolou CRC 16 nebo CRC 5 • spojení hostitele (host, hub) a zařízení (device) • de facto se nejedná o sběrnici, ale o propojení PTP (point-to-point) • síťová topologie stromového typu, v každém uzlu přepínač (switch, zván hub) • z pohledu transportní vrstvy se vše jeví jako roury mezi odesílatelem a příjemcem • zařízení max. 16 rour (pipe) • enumerace – počáteční vyjednávání, Plug and Play • max. 127 zařízení připojitelných ke kořenovému přepínači 2
Elektrická vrstva • nositelem informace je rozdíl napětí mezi vodiči D+ a D • volba low-speed a full-speed se děje pull-up rezistorem pull up D+ pull up Dlow-speed - 1, 5 k full-speed - 1, 5 k D+ low-speed 0 V full-speed D- počáteční stav D+ 3, 3 V 0 V 1 3
Elektrická vrstva Galvanické spojení D+, D-, Vbus, GND Impedanční přizpůsobení 4
Kanálové kódování • NRZI – Non-Return to Zero Invert • lidsky: odesíláš-li nulu, invertuj linku • sousední úrovně se liší: logická 0 • sousední úrovně jsou stejné: logická 1 5
Bit stuffing – bitová výplň • po šesti jedničkách dat musí přijít nula • zabraňuje klidu na lince (1 se v NRZI kóduje jako neaktivita) 6
SYNC – synchronizace na začátku paketu • před začátkem paketu je linka v klidovém stavu (log. 1) • start paketu začíná odesláním bytu 0 x 80 (LSb first) • 0 x 80 (LSb first 0000 0001) po provedení NRZI je 1010 1011 • tím se synchronizují hodiny vysílače a přijímače 7
End of Packet – konec paketu • vysílač musí dát přijímači jasně najevo, že končí přenos • signalizace musí být jednoznačná • nesmí se předpokládat porozumění datům (tím by se porušila vrstvená hierarchie) • EOP = na obou linkách je elektricky zem (GND) 8
Řazení proudových filtrů • na každou operaci s daty máme bitový proudový filtr Vysílač serializer bit stuffing NRZI D- Zesilovač komparátor Přijímač D+ invertor D- EOP CRC 16 D+ zesilovač de. NRZI EOP bit unstuffing deserializer CRC 16 čistá data CRC OK 9
Souhrn a porovnání • zatím se USB jeví jako sériová linka • používá dva kroucené vodiče D+ a D • přidává kanálové kódování NRZI a bit stuffing • dovede přenést neomezený počet bitů • start bit je nahrazen sekvencí 0 x 80 • stop bit je nahrazen EOP signálem (SE 0 – single ended 0) • nemáme vyřešen směr komunikace a přepínání • zatím nemáme prostředek, jak oddělit data od příkazů • musíme ještě definovat protokol (příkazy) 10
Obecný formát paketu • pakety dělíme na 16 druhů, nejdůležitější jsou: • DATA – přenos dat • IN, OUT – řízení směru komunikace • SETUP – podobné jako OUT, následující data jsou příkaz • ACK, NAK – handshake pakety pro vzájemné potvrzování Typ paketu je určen číslem PID (Packet IDentifier). Komunikace je řízená hostitelem. Zařízení odesílá data pouze po výslovné žádosti hostitele (IN paket). 11
Datový paket SYNC PID 0 x 80 0 x 4 B DATA CRC 16 EOP 2 byty (SE 0) IN, OUT, SETUP SYNC PID 0 x 80 ADRESA ENDPOINT CRC 5 EOP 7 bitů 5 bitů (SE 0) 4 bity ACK, NAK SYNC PID EOP 0 x 80 0 x. D 2 (SE 0) 12
CRC 16 • Cyklická redundantní kontrola • generuje se z čistých dat pomocí posuvného registru • vznikne-li v datech kumulovaná chyba (16 bit), je odhalena • má-li vzniknout neodhalitelná chyba, musí být poruchy v určitém vztahu, což je u náhodných jevů nepravděpodobné 13
CRC 16 • posuvný registr má délku 16 bitů a počáteční hodnotu 0 • generující polynom je binární číslo o stejné délce jako registr • jednička se nasouvá zleva do registru • pokud je datový bit a vysunutý bit shodný, provede se XOR generujícího polynomu a registru • CRC spočítaný z dat a správného CRC je konstantní! var crc: word; {pocatecni hodnota je 0} procedure crcpipe(bit: byte); var lsb: byte; begin lsb: =crc and 1; crc: =(crc shr 1) or $8000; if lsb=bit then crc: =crc xor $A 001; end; 14
Konečná délka přenosu • stále řešíme stejný problém – MTU (maximum transfer unit) • připravíme si čistá data do bufferu a chceme je přenést na druhý konec linky • opatříme data začátkem, koncem a eventuelně potvrzením správého přenosu (handshake) • nutnost rozdělit data na menší části, protože médium není ochotno velké kusy přenést • po rozdělení na menší části musíme každou z nich též opatřit začátkem, koncem a potvrzením 15
Konečná délka přenosu • koncové signály musejí být jednoznačné (jako je EOP) • malé části – pakety, obsahují začátek (SYNC), konec (SE 0) a potvrzení (ACK packet od příjemce) • pakety mají MTU 8, 16, 32, 64 až 4096 bytů • velké části – transakce – po jejich ukončení jsou data od odesílatele úspěšně přenesena k příjemci v původní podobě • transakce iniciují prvním OUT nebo IN paketem nebo též SETUP paketem • transakce se ukončují DATA paketem bez dat 16
Přenos paketu a jeho potvrzení 17
Transakce • setup stage – žádost o data (SETUP vs. SYNC 0 x 80) • data stage – přenos dat (konec při data<MTU vs. EOP) • status stage – potvrzení (zero DATA vs. ACK) 18
Příkazy • Get Descriptor – vyčtení informací o zařízení • Set Address – nastavení adresy zařízení • Set Configuration – volba jedné z více konfigurací • Set Interface – výběr rozhraní (složené z rour endpointů) • třídně specifické požadavky (HID, Mass Storage, …) 19
Deskriptory • Device Descriptor – základní údaje o zařízení, verzi protokolu • Configuration Descriptor – kolik má zařízení možných konfigurací (napájené z Vbus, externě) • Interface Descriptor – různá rozhraní • Endpoint Descriptor – více rour k cílové aplikaci 2 endpointy – levé a pravé sluchátko 2 interface – sluchátka nebo reproduktory 2 konfigurace – provoz z baterie nebo ze sítě 20
Hierarchie deskriptorů • při žádosti o Configuration descriptor se vrátí celý podstrom prohledaný do hloubky 21
Enumerace • inicializace po připojení zařízení k počítači • vyčte se prvních 8 bytů Device Descriptoru • provede se reset (SE 0 po dobu 10 ms) • nastaví se adresa zařízení (Set Address) • provede se vyčtení celého Device Descriptoru • následuje čtení Configuration Descriptoru (prvních 8 bytů) • hostitel přečte celý Configuration Descriptor 22
Hostitel Zařízení SETUP packet sync 2 d 00 10 eop DATA 0 packet - Get Device Descriptor request sync c 3 80 06 00 01 00 00 40 00 dd 94 eop ACK sync d 2 eop IN packet sync 69 00 10 eop DATA 1 packet - Device Descriptor sync 4 b 12 01 00 00 00 08 13 e 7 eop ACK sync d 2 eop OUT packet sync e 1 00 10 eop DATA 1 packet - Transaction Complete sync 4 b 00 00 eop ACK sync d 2 eop 23
Shrnutí • USB poskytuje dostatečný rozptyl rychlostí (1, 5 Mbaud až 480 MBaud) • data jsou chráněna proti rušení (diferenciální vedení, CRC) • nativně Pn. P, power management, variabilita interface • největší přínos je Pn. P a 5 V napájení • téměř žádná z vymožeností se nepoužívá • nesnadná implementace, drahé převodníky • overhead, přílišný počet Deskriptorů • inženýrská ignorance, USB se degraduje na sériovou linku 24
- Slides: 24