Úvod
Sběrnice USB se v posledních letech stala už naprosto samozřejmou součástí výbavy osobních počítačů. Na rozdíl od starších sériových rozhraní (RS-232) má USB mnohem větší možnosti a schopnosti, což je na druhou stranu vyváženo její složitostí a nákladnějším vývojem zařízení. Proto bych se rád v několika článcích věnoval jejímu podrobnějšímu popisu.
- V tomto, úvodním, dílu nastíním stručný přehled architektury USB.
Popíšu zhruba topologii sběrnice, zmíním se o konektorech, kabelech a
napíšu i něco o protokolu (jaké jsou druhy datových přenosů, jak je USB zabezpečeno
proti chybám apod.).
- V dalším dílu se budu věnovat datovému modelu, tedy popisu USB
zařízení a hostitele na logické úrovni, porovnání logické a
fyzické topologie, popisu komunikačních kanálů (roury, endpointy), a také
popíšu jednotlivé druhy přenosů podrobněji (jejich formát, omezení a
použití).
- Ve třetím dílu popíšu obecné postupy při komunikaci, tedy dělení
transakcí do rámců, synchronizaci přenosu apod.
- Popis praktické stránky začnu vysvětlením signálních
úrovní, budičů, stavů sběrnice a popisem použitého NRZI kódování.
- V pátém dílu popíšu komunikační protokol a stavový stroj
USB zařízení.
- Celý seriál uzavřu šestým dílem - podrobným popisem chování USB zařízení.
Toto pořadí ani rozdělení samosebou není dogmatem. Je víceméně hrubým nastíněním obsahu jednotlivých dílů.
Co je to USB
USBUSBUSBUSBUSB je sériová sběrnice, umožňující připojit širokou škálu zařízení k osobnímu počítači. Pomocí USB lze připojit téměř každou periférii, klávesnicí, myší a tiskárnou počínaje a kamerami, zvukovými kartami či pevnými disky konče. V současné době je její nejnovější specifikací USB 2.0.
Kromě velkého množství hotových periférií k PC je na trhu i široká nabídka integrovaných obvodů pro použití s USB sběrnicí, od jednoúčelových převodníků (např. USB na RS-232, FT232) až po jednočipové mikrokontroléry se zabudovaným USB rozhraním (např. PIC18F2455 nebo HC08JB/JW). USB lze dokonce řešit čistě softwarově - viz např. IgorPlug-USB.
Topologie sběrnice
USB dle USB 2.0 specifikace využívá vrstevnou hvězdicovou topologii, kde je v centru každé hvězdice tzv. USB hubUSB hubUSB hubUSB hubUSB hub. K tomuto hubu může být připojen buď další hub (na další úrovni), nebo koncové zařízení. Někdy se USB topologie znázorňuje také ve formě pyramidy - viz obrázek.
Topologie sběrnice USB
Poznámka: Originální anglická literatura nazývá všechny přístroje připojené na USB sběrnici zařízeními (USB devices) a rozlišuje mezi rozbočovači (USB hubs) a zařízeními, přidávajícími hostitelskému systému nějaké schopnosti (USB functions). Doslovný překlad "USB funkce" by byl velmi neobratný, proto budu "USB function" nazývat "koncové zařízení".
USB sběrnice obsahuje jeden tzv. kořenový rozbočovač (root hub), který je považován za nejvyšší (první) úroveň a k němuž jsou připojeny další huby a zařízení. Rozhraní mezi USB systémem a hostitelským počítačem je nazýváno hostitelský řadič (Host Controller). Tento řadič může být implementován hardwarově nebo softwarově. Kořenový rozbočovač je integrován spolu s hostitelským řadičem do hostitelského systému a nabízí nejčastěji dva přípojné body.
S ohledem na zpoždění signálu v kabelech a hubech povoluje specifikace maximálně sedm úrovní včetně kořenové vrstvy. To znamená, že mezi kořenovým rozbočovačem a koncovým zařízením může být zapojeno maximálně pět rozbočovačů.
Fyzické provedení - konektory a kabely
V USB systémech jsou použity dva typy konektorů, které pomáhají odlišit směr zapojení. Směr od kořenového hubu ke koncovému zařízení se nazývá downstream, směr opačný, od zařízení ke kořenovému hubu, upstream. Konektor typu A (známý plochý konektor) je vždy pro upstream, tedy směrem k hostitelskému zařízení.
Konektor a zásuvka typu A
Konektor typu B (čtvercový konektor) je pro downstream, tedy směrem ke koncovému zařízení.
Konektor a zásuvka typu B
Pro zjednodušení lze říci, že do počítače nebo hubu se vždy zasouvá plochý konektor typu A, do zařízení konektor B.
Kromě těchto dvou základních typů konektorů jsou občas používány i další typy, většinou nazývané Mini-B. Tyto konektory se používají zejména v malých zařízeních, např. v digitálních fotoaparátech, kde by byl klasický konektor B příliš velký. Mini-B konektor se vyskytuje buď jako plochý (zmenšený konektor typu A), nebo jako čtvercový (zmenšený typu B).
Příklad zásuvky Mini-B
USB sběrnice používá tři rychlosti toku dat:
- Low speed - max. 1.5 Mbit/s
- Full speed - max. 12 Mbit/s
- High speed - max. 480 Mbit/s
High speed huby jsou kompatibilní s low / full speed zařízeními, stejně tak high speed zařízení lze připojit k low / full speed hubu a provozovat je (samosebou s omezením rychlosti). USB navíc není omezeno "nejslabším článkem" a je-li ke kořenovému high speed hubu zapojen další high speed hub a k němu pomalé zařízení, tak komunikace mezi high speed zařízeními probíhá v režimu high speed.
USB sběrnice využívá čtyři vodiče. Po dvou vodičích je přenášeno napájecí napětí a zem, po dalších dvou (pro full / high speed se používá kroucený pár) jsou přenášena diferenciálně vlastní data. Díky tomu má USB sběrnice i při vysokých přenosových rychlostech značnou odolnost proti šumu a proti rušení. USB 2.0 specifikuje parametry kabelů pro propojování zařízení. Pro full / high speed je vyžadován stíněný kabel maximální délky 5 metrů, pro low speed není stínění vyžadováno a délka kabelu je pak omezena na tři metry.
Zapojení vodičů a konektorů
Barva vodiče | Číslo pinu | Popis |
---|---|---|
Červená | 1 |
VBUS - napájecí napětí 5V
|
Bílá | 2 |
D-
|
Zelená | 3 |
D+
|
Černá | 4 |
GND - zem
|
USB zařízení
USB zařízení jsou dělena do tříd, jako jsou např. rozbočovače (huby), vstupní zařízení, tiskárny nebo paměti. Huby jsou speciální třídou USB zařízení, která poskytují další přípojné body. USB zařízení musí obsahovat informace o své konfiguraci a své identifikaci.
Ke každému USB zařízení je přistupováno pomocí USB adresy, která je zařízení přiřazena poté, co je zařízení připojeno a začísleno (enumerated) během inventarizace sběrnice. Každé USB zařízení dále poskytuje jednu či více komunikačních rour (pipes), přes které komunikuje hostitelský systém se zařízením. Každé zařízení musí poskytovat speciální komunikační rouru ke koncovému bodu 0 (endpoint zero), která je použita pro řízení USB zařízení. Všechna USB zařízení mají stejný mechanismus přístupu k informacím přes tuto řídící rouru.
K řídící rouře jsou přiřazeny informace, které popisují dané USB zařízení. Tyto informace spadají do následujících kategorií:
- Standardní: Toto jsou informace, jejichž definice je společná všem USB zařízením, a obsahují položky jako např. identifikace výrobce, třída zařízení nebo řízení napájení.
- Informace závislé na třídě: Formát a definice těchto informací se různí podle třídy USB zařízení.
- Informace výrobce: Výrobce zařízení může do této kategorie vložit libovolné informace. Jejich formát není nijak specifikován.
Navíc každé USB zařízení nese informaci o svém stavu a své konfiguraci.
Huby (rozbočovače)
Huby jsou klíčovým prvkem v plug-and-play architektuře USB. Huby zjednodušují připojování USB zařízení z hlediska uživatele a zajišťují robustnost USB sběrnice s nízkými náklady.
Huby umožňují připojení většího počtu zařízení ke sběrnici. Přípojné body jsou nazývány porty (ports). Každý hub převádí jeden přípojný bod na více přípojných bodů. USB architektura podporuje spojování více hubů.
Hub se skládá ze tří částí:
- řadič hubu (hub controller) - zajišťuje komunikaci s hostitelským systémem.
- opakovač (hub repeater) - je protokolem ovládaný přepínač mezi porty, který zároveň zpracovává signály pro inicializaci (reset) a pozastavení/spuštění (suspend/resume) komunikace.
- převaděč transakcí (transaction translator) - poskytuje mechanismy pro podporu full/low speed zařízení, připojených k hubu, který je připojen k nadřízenému zařízení high speed protokolem.
Koncová zařízení
Koncové zařízení (function) je zařízení, které je schopno přijímat nebo vysílat data nebo řídící informace po sběrnici. Koncové zařízení je typicky implementováno jako periferní zařízení, připojené kabelem k portu hubu. Někdy ovšem jedno fyzické zařízení může implementovat více funkcí a může obsahovat vestavěný USB hub - takové zařízení je označováno jako složené (compound). Složené zařízení se z hlediska hostitelského systému tváří jako USB hub s jedním nebo více neodpojitelnými koncovými zařízeními.
Každé koncové zařízení obsahuje informace, které popisují jeho funkce a požadavky na systémové zdroje. Před tím, než může být koncové zařízení použito, je třeba, aby bylo hostitelským systémem nakonfigurováno.
Protokol
USB je řízená sběrnice, kde veškeré datové přenosy inicializuje host controller.
Většina sběrnicových transakcí (přenosů dat) sestává z vyslání až tří paketů. Každá transakce začíná tím, že Host Controller vyšle USB paket popisující typ a směr přenosu, adresu zařízení a číslo koncového bodu (endpoint) v zařízení (k těmto termínům se ještě dostanu). Tento paket je označen jako token paket. USB zařízení, které rozpozná svou adresu, se připraví k přenosu. Směr přenosu, tedy zda jde o přenos dat ze zařízení do hostitelského systému nebo z hostitelského systému do zařízení, je určen token paketem. Poté zdroj dat (zařízení nebo systém) vyšle datový paket nebo oznámí, že nemá žádná data k vyslání. Transakce bývá ukončena tím, že příjemce (cíl dat) vyšle handshake paket, kterým potvrdí úspěšnost přenosu.
Některé transakce mezi hostitelským systémem a hubem sestávají ze čtyř paketů. Transakce tohoto typu jsou používány pro řízení datových přenosů mezi hostitelským systémem a full / low speed zařízeními.
Pomyslná cesta pro datové přenosy mezi hostitelským zařízením a koncovým bodem v zařízení je nazývána rourou (pipe). Existují dva typy rour:
- Pro datové proudy (streams);
- pro zprávy (messages).
Datový proud nemá, na rozdíl od zpráv, pevně definovanou strukturu. Roura má dále přiřazené některé parametry, jako jsou šířka přenosového pásma (bandwidth), typ přenosu a charakteristiky koncového bodu, jako směr a velikost bufferu. Většina rour je vytvořena v okamžiku konfigurace USB zařízení. Jedna roura pro přenos zpráv, tzv. Default Control Pipe, existuje ihned po připojení zařízení a poskytuje přístup ke konfiguračním, stavovým a řídícím informacím zařízení.
Robustnost
Robustnost USB sběrnice je založena na několika vlastnostech. Jsou to:
- Signálová integrita, zajišťovaná použitím diferenciálních vysílačů, přijímačů a stínění.
- CRC pro řídící a datová pole.
- Detekce připojení a odpojení zařízení a konfigurace zdrojů na systémové úrovni.
- Samoopravné prvky v protokolu.
- Řízení toku datových proudů, zajišťující izochronnost, a hardwarové řízené bufferů.
- Datové a řídící roury, zajišťující nezávislost jednotlivých zařízení a omezující jejich případné vzájemné interakce.
Detekce a obsluha chyb
Protokol obsahuje oddělené kontrolní součty (CRC) pro řídící a datová pole každého paketu. Chybný CRC kód indikuje poškozený paket a pokrývá 100% případů chyb v jednom či dvou bitech.
Protokol umožňuje obsluhovat chyby hardwarově i softwarově. Hardwarová obsluha chyb spočívá v hlášení chyb a v opakování přenosů chybně přijatých paketů. Hostitelský řadič se pokusí opakovat přenos, který skončil s chybou, až třikrát před tím, než oznámí klientskému software chybu. Klientský software může opravit tuto chybu podle svých možností a potřeb.
Dynamická konfigurace systému
USB umožňuje připojování a odpojování zařízení v libovolném okamžiku. S tím souvisí nutná schopnost systémového software dynamicky se přizpůsobit změnám ve fyzickém zapojení sítě.
Všechna USB zařízení jsou ke sběrnici zapojena přes porty specializovaných USB zařízení, tzv. rozbočovačů (hubů). Huby mají status bity, které sledují připojování a odpojování USB zařízení na jednotlivých portech. Hostitel si může z hubu tyto informace vyžádat. Pokud hostitel zjistí nově připojené zařízení, povolí dotyčný port a komunikuje s daným USB zařízením prostřednictvím řídící roury (Default control pipe) na defaultní adrese.
Hostitel přiřadí novému zařízení unikátní adresu a zjistí, zda jde o hub nebo koncové zařízení. Následně vytvoří řídící rouru pro toto USB zařízení a nasměruje ji na přiřazenou adresu a koncový bod číslo 0.
Pokud je připojeným zařízením hub, ke kterému jsou připojena další zařízení, opakuje se výše popsaná procedura rekurzivně pro každé z těchto zařízení. Pokud je připojeným zařízením koncové zařízení (function), je o připojení informován hostitelský software, odpovídající danému zařízení (ovladač).
Když je USB zařízení odpojeno od portu, zakáže hub dotyčný port a informuje o odpojení hostitelský systém. Hostitelský systém musí tuto informaci programově zpracovat. Pokud je odpojeným zařízením hub, musí hostitelský systém správně odpojit nejen tento hub, ale i všechna zařízení k němu připojená.
Výše uvedené akce jsou součástí tzv. inventarizace sběrnice (bus enumeration). Inventarizace je proces, ve kterém jsou identifikovány a přiřazovány adresy jednotlivým zařízením připojeným k USB sběrnici. V rámci inventarizace jsou také detekovány a obslouženy zprávy o odpojení zařízení. Inventarizace je kontinuální proces a je prováděna průběžně, protože zařízení mohou být připojována a odpojována v libovolném okamžiku.
Typy datových toků
USB umožňuje výměnu dat a řídících informací mezi hostitelským systémem a koncovým zařízením pomocí množiny jednosměrných či obousměrných rour. Každá z těchto rour je připojena k jednomu koncovému bodu (endpoint) daného zařízení. Komunikace v jednotlivých rourách je na sobě navzájem nezávislá.
Specifikace USB obsahuje čtyři základní typy datových přenosů:
- Řídící (control) přenosy jsou používány ke konfiguraci zařízení při jeho připojení a mohou být použity k dalším účelům, jako např. k řízení dalších komunikačních rour.
- Hromadné (bulk) přenosy slouží k přenosům velkého množství dat a jsou na ně kladena nejmenší omezení.
- Přerušovací (interrupt) přenosy slouží k včasnému a spolehlivému doručení dat, nejčastěji pro asynchronní události.
- Izochronní (isochronous) přenosy zabírají předem smluvené množství přenosového pásma a mají předem dohodnuté zpoždění. Tento druh přenosů je také nazýván proudový přenos v reálném čase (streaming real-time transfer).
Hromadné přenosy obsahují velká množství dat, např. data pro tiskárny nebo získaná ze scannerů. Hromadná data jsou přenášena sekvenčně a spolehlivost jejich přenosu je zajišťována detekcí chyb na hardwarové úrovni a omezeným počtem opakovaných pokusů. Šířka pásma, využitá hromadným přenosem, může být různá a záleží na ostatním provozu na sběrnici.
Přerušovací přenosy přenášejí data do nebo ze zařízení. Zařízení může požádat o přenos těchto dat v kterýkoliv okamžik a tato data jsou doručena USB sběrnicí v nejkratším možném čase. Nejčastěji se jedná o upozornění na nějakou událost, například na stisk klávesy na klávesnici nebo změnu pozice myši, tedy taková data, která zaberou jen několik bajtů.
Izochronní přenosy ("stejnodobé", plynulé) jsou trvalé přenosy, u nichž probíhá vytváření, přenos a zpracování dat v reálném čase. Přesné časování přenosu je zajištěno rovnoměrným rozložením úseků, ve kterých jsou izochronní data přijímána a odesílána, v čase. Izochronní data musí být předávána hubem se stejnou frekvencí, s jakou jsou přijímána, aby bylo dodrženo časování. Tato data mohou být také citlivá na zpoždění při přenosu. Izochronní roury mívají šířku přenosového pásma odvozenou nejčastěji od vzorkovací frekvence daného zařízení. Požadavky na zpoždění (latency) jsou dány velikostí vyrovnávací paměti daného koncového bodu.
Typický příklad izochronních dat je digitálně zpracovaný hlas. Pokud není zajištěn stejnoměrný tok dat, objeví se ve výsledném zvuku výpadky, způsobené podtečením či přetečením bufferů. I v případě, že jsou data doručována v pravidelných intervalech, může zpoždění při přenosu vést až k nepoužitelným výsledkům, zejména v aplikacích vyžadujících plynulou a rychlou odezvu v reálném čase, jako jsou např. audiokonference.
Za přesně časované doručování izochronních dat se na druhou stranu platí rizikem možných ztrát při přenosu. Případná chyba při přenosu není totiž opravena hardwarovými prostředky, jako jsou např. opakovaná vysílání. V praxi se předpokládá, že ztráty dat nebudou tak velké, aby přinesly problémy.
Závěr prvního dílu
V tomto díle jsem zhruba popsal koncepci sběrnice USB tak, jak je specifikována v USB Specification revision 2. V příštím dílu bych se rád věnoval datovému modelu USB sběrnice.
hw@ maly.cz
DOWNLOAD & Odkazy
- USB.ORG - USB.ORG
- Specifikace USB - Dokumentace ke stažení
- MCU.CZ - USB sekce
- ing. Igor Češko - hardware