Hlavní navigace

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ě 3x, 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ů