USB: jak to vlastně funguje?

1. 5. 1999

Sdílet

Tvorba standardů pro nové sériové rozhraní začala už na přelomu let 1994 a 95.Jejím cílem bylo vytvořit už konečně rozhraní, které se bude snadno používat a u kterého nebude nikdy...

Tvorba standardů pro nové sériové rozhraní začala už na přelomu let 1994 a 95.
Jejím cílem bylo vytvořit už konečně rozhraní, které se bude snadno používat a

u kterého nebude nikdy nedostatek portů.



Do té doby byla všechna běžná rozhraní, snad kromě PCMCIA, velmi obtížně

konfigurovatelná z pozice koncového uživatele a počítače se neustále potýkaly s

nedostatkem přípojných míst. Postupem času se sice výbava PC ujednotila na

dvojici sériových portů, jednom paralelním a jedné klávesnici, ale i tak se

poměrně obtížně řešilo připojování třeba skenerů či zálohovacích mechanik skrz

různé pass-through (průchozí) konektory.

V té době se sice už do jisté míry zlepšil software z obtížně zvladatelné

příkazové řádky do podoby grafických uživatelských rozhraní, stejně jako se

hardware začal chovat poněkud rozumněji, jsa připojen na moderní sběrnice, ale

stále zde zůstávala mezera v podobě externích zařízení a jejich připojování k

PC. Proto se konsorcium firem Compaq, Intel, Microsoft a NEC usneslo, a v

listopadu 1995 vytvořilo první oficiální dokument, standardizující nové

rozhraní nazvané Universal Serial Bus (USB).



Kategorie zařízení

Vzhledem k maximální přenosové rychlosti 12 Mb/s se z hlediska datové

náročnosti mohou k USB připojovat zařízení třech kategorií pomalá, střední a

rychlá.

Pomalá zařízení vyžadují datový tok v řádu 10–100 KB/s, a reprezentují

především interaktivní vstupní a výstupní zařízení. Typickým příkladem pomalých

zařízení jsou myši, klávesnice, pera, herní zařízení, prostředky pro virtuální

realitu nebo třeba konfigurační prostředky pro monitor a to vše samozřejmě v

obou směrech přenosu (tedy možnost ovládat hru přes USB joystick, stejně jako

nechat joystickem kymácet v režimu force-feedback).

Střední zařízení vyžadují datový tok 500 Kb až 10 Mb/s a jejich představiteli

jsou zejména modemy, audiosoustavy, kamery produkující kompresovaný tok videa,

připojení ISDN či některé síťové adaptéry. U takových zařízení je nutné

zajistit především stálý datový tok, dynamické připojení a odpojení, a v

neposlední řadě také simultánní provoz několika z nich.

Mezi rychlá zařízení patří hlavně diskové systémy, skenery či video. Jejich

přenosová rychlost se pohybuje kolem 25–500 Mb/s. Tato zařízení se dají k USB

připojit pouze za zvláštních podmínek ve speciálním přenosovém režimu.



Vlastnosti USB

Jednou z předních vlastností USB je snadnost použití pro koncového uživatele.

Ta spočívá v několika věcech: pouze dvou typech konektorů a jediném typu

kabelu, eliminaci veškerých elektrických detailů od uživatele (neexistuje

například povinná terminace sběrnice jako u SCSI), ve zcela automatické

identifikaci periferií, jejich mapování k ovladači a konfiguraci, možnosti

dynamicky připojovat a odpojovat zařízení ve spojení s jejich samočinnou

rekonfigurací.

Další důležitou vlastností je široké pole použitelných zařízení. To je

zajištěno především ve variabilním datovém toku, od několika kilobitů za

sekundu až k megabitům za sekundu podpora mnoha typů přenosů prostřednictvím

jediného kabelu, možnost současné práce několika periferií, podpora až 127

současně připojených zařízení, podpora datových toků současně s předáváním

zpráv, podpora multifunkčních zařízení a nízká provozní režie při přenosu.

Velmi cenná je celková robustnost sběrnice. Do protokolu jsou integrovány

mechanismy pro detekci chyb a zotavení, stejně tak jsou podporována hlášení

zařízení o vlastních chybách a veškerá zařízení mohou být dynamicky připojována

a odpojována bez vyvolání chyb.

Vzhledem k univerzálnosti použití bylo nutné zařadit také širokou flexibilitu

USB. Podporovány jsou rozličné délky paketů podle požadavků zařízení, stejně

jako různé přenosové rychlosti. Také kontrola toku dat je součástí přenosového

protokolu.

Pro široké rozšíření je nezbytná také nízká cena celého řešení. USB je proto

optimalizováno pro integraci do hostitelského systému i příslušných periferií,

je přijatelné pro začlenění do velmi laciných zařízení, jako jsou myši či

klávesnice, používají se také levné kabely a konektory.



Achitektura USB

Systém sběrnice USB je především důsledně hvězdicový, vícevrstvý a současně

také zcela centrálně ovládaný.

Hvězdicovost je základem USB. Každá periferie může být připojena pouze do

zařízení, které v USB funguje jako hub (rozbočovač) a poskytuje tedy další

přípojná místa. Není možné vázat další periferie na zařízení bez vlastností

hubu, neboť hub je zcela zodpovědný za své podřízené periferie.

Vícevrstevná architektura je nutností pro varabilitu připojovaných periferií.

Znamená především to, že k hubu je možné připojit buď periferii, nebo další,

podřízený hub, který poskytuje další přípojná místa, podřízená níže postavenému

hubu.

Každá USB sběrnice začíná u jednoho

centrálního zařízení, tedy hostitele, root hubu nebo kořenového rozbočovače.

Tento root

hub řídí veškerý provoz na sběrnici, vyvolává a ukončuje datové přenosy a

zodpovídá také za správu sběrnice.



Distribuce napájení

Jednou ze zásadních vlastností USB je též distribuce napájení. Vzhledem k

vnitřnímu uspořádání kabelu, kde jsou dva vodiče datové, jeden zemnící a jeden

napájecí, je systém připraven také na připojení periferií napájených přes

sběrnici.



Paketový model přenosu dat

Komunikační protokol pracuje na principu paketového přenosu. Systém tedy

nepřenáší pouze vyhraněná data jedné periferie, ale s pomocí malých bloků údajů

je schopen současně řešit více požadavků a přenosů. Komunikace probíhá v tzv.

transakcích, což jsou skupiny paketů spolu úzce souvisejících. Každou transakci

začíná root hub, tedy řadič USB uložený uvnitř PC a vyvedený na zadní stranu ve

dvou konektorech. Prvním paketem je token packet, určující typ přenosu, jeho

směr, adresu zařízení a číslo koncového bodu. Zařízení, v token paketu označené

jako adresované, samo sebe pozná a identifikuje, načež odešle, případně přijme

požadovaná data. Také směr přenosu, tedy do host adaptéru nebo do periferie, je

určen v token paketu. Nejsou-li už žádná data k dispozici, pošle zdrojové

zařízení do cílového oznámení o ukončení přenosu. Cílové zařízení naopak oznámí

korektní přijetí dat pomocí zvláštního paketu.



Trubky jádro USB

Transfer dat mezi zdrojem a cílem přenosu se nazývá trubka (pipe). Obecně

existují dva typy trubek tokové a zprávové. Zatímco tokové trubky nemají nějak

přesně USB specifikovanou strukturu, zprávové ji mají. Mnoho trubek se zapojí

okamžitě poté, co se k USB připojí zařízení a je správně zkonfigurováno. Jedna

zprávová trubka, nazývaná Default Control Pipe, existuje stále, od okamžiku,

kdy je připojené zařízení napájeno. S její pomocí jsou posílány základní zprávy

pro přístup ke konfiguraci, stavu a ovládání zařízení.

Správa transakcí zajištuje práci tokových trubek. Na hardwarové úrovni je

zajištěno odebírání a odesílání požadovaných dat, což zajišťuje možnost

otevření mnoha tokových trubek pro různá zařízení, přenášející svá data zcela

odlišnými rychlostmi. Proti problémům je sytém zabezpečen využitím negativního

potvrzení přenosu (NAK). Dojde-li od nějakého zařízení signál NAK, paket se

zopakuje v nejbližším volném termínu. Tímto systémem je USB schopno v reálném

čase zpracovávat několik datových toků s různou rychlostí a s různou délkou

paketu. Systém trubek a paketů je jádrem schopnosti USB pracovat s několika

zařízeními zároveň.

Aby byl přenos dostatečně robustní, jsou integrovány dvě technologie na řešení

chyb. Na bitové úrovni je součástí každého paketu kód CRC, pro zjištění všech

chyb a rekonstrukci dat s chybou v rozsahu jednoho či dvou bitů. Zároveň

obsahuje systém pro řešení krizových situací, kdy není možné přenos dokončit.

USB se o přenos pokouší ještě 3×, až poté operačnímu systému oznámí chybu při

přenosu. Klientský software samozřejmě může vyžadovat opětovné dokončení

přenosu.



Konfigurace systému

Z pozice konfigurace systému je nejzajímavější připojování a odpojování

zařízení. K USB lze připojovat periferie pouze na speciální zařízení zvané

huby. Huby mají na každém svém přípojném místě indikátor, jenž oznámí připojení

nebo odpojení zařízení na jeden z jejich portů. Řadič se periodicky vyptává

hubů na tyto indikátory a reaguje na jejich změnu. V případě zjištění připojení

nového zařízení řadič povolí port, a naadresuje skrz řídicí trubku novou

periferii, zatím na základní adrese.

Kořenový rozbočovač přidělí přibyvšímu zařízení jedinečné ID na USB sběrnici,

kterým bude během této seance voláno. Pak zjistí, jakou základní funkci nová

periferie má, zda jde o hub nebo výkonné zařízení. Jestliže je připojené

zařízení hub, který má na sobě už připojena další zařízení, provede se

předchozí postup také pro každé zařízení k hubu připojené. Je-li připojeným

zařízením výkonná periferie, je softwaru oznámeno připojení nového zařízení.

Když je naopak USB zařízení odstraněno, hub musí zavřít port a provést indikaci

o odstranění zařízení do řadiče. Pokud je odpojeným zařízením hub, musí

systémový software USB zajistit zrušení odkazů nejen na rozbočovač, ale také na

všechna předtím připojená zařízení, napojená na odebíraný hub.



Typy datových toků

Trubkový model datových přenosů se dále dělí podle parametrů a požadavků na

přenos, zejména rychlosti a délky paketu. Rozeznáváme celkem 4 základní typy

přenosů:

Ovládací přenos (control transfer) je používán USB systémovým softwarem pro

konfiguraci zařízení těsně po jeho připojení. Ostatní softwarové ovladače mohou

tohoto typu přenosu využít podle aktuální potřeby. Doručení je bezeztrátové.

Dalším typem přenosu je hromadný přenos (bulk transfer). Při něm jsou typicky

přenášeny větší objemy dat vysokou rychlostí, tedy například při skenování nebo

tisku po USB. Hromadný přenos má dvě základní vlastnosti: Především se používá

v případě, kdy teoretický výkon zařízení je vyšší, než je nejvyšší možný výkon

USB, a kdy je tedy po sběrnici vyžadována maximální možná rychlost. A dále pak

je u tohoto přenosu povoleno opakování jednotlivých paketů při problémech s

doručením. Detekce chyb je totiž schopna zjistit, zda došlo ke korektnímu

doručení dat, a v případě, že nedošlo, je možné na hardwarové úrovni vyvolat

několik pokusů o opětovné doručení. Hromadný přenos se využívá třeba u USB

zálohovacích zařízení, jako jsou ZIP nebo jiné mechaniky.

Zvláštním režimem přenosu je přerušovací přenos (interrupt transfer). Jeho

charakterem jsou malé objemy dat, u kterých je ovšem kladen velký důraz na

včasné doručení. Typickým případem přerušovacího přenosu jsou polohovací

zařízení jako myši či joysticky, klávesnice a podobně.

Posledním typem přenosu je izochronní přenos (isochronous transfer). Izochronní

data jsou především výsledky tvorby či záznamu v reálném čase, kdy je však

rychlost jejich generování nižší, než je rychlost sběrnice. Typickým příkladem

izochronních dat je třeba hudba do USB reproduktorů

nebo kompresované video z USB kamery. Izochronní data musí být doručena při

zachování stejného časování, v jakém byla odeslána.



Pomalá a rychlá zařízení

USB podporuje dvě základní rychlosti vysokou a nízkou. Vysoká rychlost je

maximálně právě zmíněných 12 Mb/s (tedy 1,5 MB/s), zatímco nízká rychlost

dosahuje nejvíce 1,5 Mb/s (187,5 KB/s). Pouze ovládací a přerušovací přenos

může být prováděn jak v režimu vysoké, tak v režimu nízké přenosové rychlosti.



Závěrem

O architektuře USB by se toho dalo napsat ještě velmi mnoho. Od výčtu

povolených délek paketů a jejich rychlostí, přes fyzické konstrukční parametry

konektorů a jejich tolerance až třeba po typy používaných kabelů a chemické

složení izolace. To už je však daleko nad rámcem tohoto článku.



9 0253/DĚD





Pozadí USB

Při tvorbě rozhraní USB byla brána v potaz

především tato kritéria:

- snadné rozšiřování PC dalšími komponentami

- levné řešení pro přenosy rychlostí až 12 Mb/s

- plná podpora přenosu hlasu, audia a kompresovaného videa v reálném čase

- pružnost protokolu pro zvládání různých typů přenosu současně

- jednoduché zapojení USB do stávajících systémů