Universální sériová sběrnice

Universal Serial Bus (USB) je univerzální sériová sběrnice, moderní způsob připojení periferií k počítači. Nahrazuje dříve používané způsoby připojení (sériový a paralelní port, PS/2, Gameport apod.) pro běžné druhy periférií – tiskárny, myši, klávesnice, joysticky, fotoaparáty, modemy atd., ale i pro přenos dat z videokamer, čteček paměťových karet, MP3 přehrávačů, externích pevných disků, externích optických mechanik a dalších. Do budoucna by se mohla funkčnost a využití USB zvyšovat a to i díky příchodu USB-C.

Charakteristika

USB je sběrnice jen s jedním zařízením typu Master, tj. všechny aktivity vycházejí z PC. Data se vysílají v krátkých paketech o 8 bajtech a delších paketech o délce až 256 bajtů. PC může požadovat data od zařízení, naopak žádné zařízení nemůže vysílat data samo od sebe.

Veškerý přenos dat se uskutečňuje v tzv. rámcích, které trvají přesně 1 milisekundu. Uvnitř jednoho rámce mohou být postupně zpracovávány pakety pro několik zařízení. Přitom se mohou spolu vyskytovat pomalé (low-speed) i rychlé (full-speed) pakety. Obrací-li se PC na více zařízení, zajišťuje jejich rozdělení jako rozdělovač sběrnice (hub). Zabraňuje také, aby signály s plnou rychlostí (full-speed) byly vedeny na pomalá zařízení. Časový průběh přenosu informace je předepisován výhradně masterem. Zařízení typu slave se musí synchronizovat s datovým tokem.

Jednotlivé bity jsou kódovány metodou Non Return to Zero Inverted (NRZI). Nuly v datech vedou ke změně úrovně, jedničky nechávají úroveň beze změny. Kódování a dekódování signálů je čistě hardwarovou záležitostí. Přijímač musí být schopen získat signál, přijmout a dekódovat data. Speciální prostředky zajišťují, aby nedocházelo ke ztrátě synchronizace.

Obsahuje-li původní datový tok šest po sobě jdoucích jedniček, přidá vysílač automaticky jednu nulu (vkládání bitů – bit-stuffing), aby se tím vynutila změna úrovně. Přijímač tuto nulu z datového toku opět odstraní. Každý datový paket má za účelem synchronizace speciální zaváděcí bajt (00000001b). Přijímač v důsledku kódování NRZI a vsouvání bitů vidí osm střídajících se bitových stavů, na které se může synchronizovat. Během následujícího přenosu musí synchronizace zůstat zachována. Všechny tyto procesy se odehrávají pouze v odpovídajících hardwarových součástkách. Přijímač a vysílač jsou realizovány vždy společně v jedné součástce.

Zařízení USB obsahuje jednotku zvanou Serial Interface Engine (SIE), která přebírá vlastní práci. K výměně dat mezi SIE a zbytkem zařízení slouží buffery FIFO. FIFO jsou paměti, které mohou postupně přijímat a vydávat data podobně jako posuvné registry. Připojený mikrořadič tedy potřebuje jen přečíst data z FIFO a jiná data do FIFO zapsat. Ve většině případů je SIE součástí mikrořadiče USB. Zařízení USB má obecně několik pamětí FIFO, jejichž prostřednictvím je možno přenášet data.

Například myš, která je připojena přes USB, má vždy koncovou endpoint 0 a endpoint 1. Endpoint 0 se používá při inicializaci. Vlastní užitková data se z mikrořadiče v určitých časových odstupech zapisují do endpointu 1 a odtud si je vybírá PC. USB software tvoří tzv. roury (pipes) k jednotlivým endpointům (koncovým adresám). Jedna pipe je logický kanál k jednomu endpointu v jednom zařízení. Pipe si můžeme představit jako datový kanál tvořený jediným vodičem. Ve skutečnosti však jsou data v pipe přenášena jako datové pakety v milisekundových rámcích a hardwarem rozdělována na reálné paměti podle jejich koncové (endpoint) adresy. Jedno zařízení může současně používat několik rour (pipes), takže přenosová rychlost celkově vzroste.

Základní vlastnosti

  • Maximální délka kabelu mezi sousedními zařízeními je 5 m, jedná se o délku, která je garantovaná. Delší kabel může být, ale nemusí už správně fungovat přenos dat. Kabel obsahuje 4 vodiče. Dva jsou pro napájení (5 V a zemnění). Druhý pár je kroucený a slouží pro přenos dat.

  • I ta nejnižší přenosová rychlost mnohonásobně překračuje možnosti sériového portu. (Při porovnání obou portů je však třeba brát v úvahu i to, že jedno zařízení si nikdy nemůže nárokovat celou šířku pásma.)

  • Sběrnice USB přináší tu výhodu, že při připojení přídavného rozdělovače sběrnice (hub) jsou k dispozici tři nové porty.

  • Celkem je možno na USB připojit až 127 zařízení.

  • Nevýhodou pro amatérského vývojáře je velká složitost USB. Na straně přístroje je třeba použít buďto převodník na USB nebo softwarovou knihovnu. Knihovna komunikuje obvykle jako HID zařízení, která zabere část výpočetního výkonu a řádově kB programové paměti; dále komunikace vyžaduje poměrně rychlé taktování mikrokontroleru. Na straně PC je nutný ovladač. Pro zprovoznění byť jednoduché komunikace je tedy třeba využívat USB knihovny na obou stranách. To se ale dnes řeší pomocí specializovaných obvodů typu FTDI233L

  • Kdo se chce vážně zabývat vývojem, stojí ještě před další překážkou: každé zařízení USB má interní číslo dodavatele (vendorlD), které je oficiálně udělováno organizací USB. Zařízení je možno dodávat na trh jen s platným VID. / mnohdy se od tohoto modelu upouští a používají se takzvané generické třídy. Odpadá tím i nutnost vývoje vlastního USB ovladače. Příkladem budiž jeden z nejrozšířenějších obvodů FTDI232.

Plug and Play

Výhodou je možnost připojování Plug & Play bez nutnosti restartování počítače nebo ručního instalování ovladačů. Zařízení lze připojit za chodu k počítači a během několika sekund je přístupné. Při připojení nového zařízení nejprve hub podle zdvižené datové linky pozná, že se objevilo nové zařízení. Pak proběhnou následující kroky:

  1. Hub informuje hostitelský počítač o tom, že bylo připojeno nové zařízení.

  2. Hostitelský počítač se dotáže hubu, na který port bylo zařízení připojeno.

  3. Po doručení odpovědi vydá počítač příkaz tento port zapnout a provést vynulování (reset) sběrnice.

  4. Hub vyrobí nulovací signál (reset) o délce 10 ms. Uvolní pro zařízení napájecí proud 100 mA. Zařízení je nyní připraveno a odpovídá na implicitní (default) adrese.

  5. Než zařízení USB obdrží svou vlastní adresu sběrnice, je možno se na ně obracet přes implicitní adresu 0. Hostitel si přečte první bajty popisovače zařízení, aby stanovil, jakou délku mohou mít datové pakety.

  6. Hostitel přiřadí zařízení jeho adresu na sběrnici.

  7. Hostitel si ze zařízení pod novou sběrnicovou adresou načte všechny konfigurační informace.

  8. Hostitel přiřadí zařízení jednu z možných konfigurací. Zařízení nyní může odebírat tolik proudu, kolik je uvedeno v jeho popisovači. Tím je připraveno k použití.

Datový přenos

Dvojice datových vodičů (DATA+ a DATA−, standardně zelený a bílý vodič) je kroucená, vodiče \$V_{C C}\$ (+5 V, červený) a GND (černý) nikoli. Celý kabel je potom stíněný hliníkovou fólií.

Napájení

Rozlišuje se mezi zařízeními s vlastním napájecím zdrojem a zařízeními, která jsou napájena přes sběrnici USB. V mnoha případech je možno volit oba způsoby. Zařízení pak má například konektor pro napájecí zdroj, který je možno volitelně propojit s externím napájecím zdrojem. Podle specifikace USB je proudový odběr ze sběrnice automaticky omezen. Je-li tudíž odebírán větší proud než přípustný, napájení by mělo být odpojeno. Připojeným zařízením USB poskytuje i stejnosměrné napájecí napětí 5 V (přípustné meze jsou 4,4 – 5,25 V). Připojené zařízení tak může po sběrnici odebírat proud až 100 mA, v případě potřeby může zařízení ve standardu USB 2 požádat o větší proud, maximálně však o 500 mA. U osobních počítačů občas bývají napájecí vodiče sběrnice vyvedeny přímo ze zdroje počítače a USB zařízení připojené k počítači tak může odebírat i mnohem vyšší proud. Tohoto triku zneužívají například některé externí USB pevné disky, jejichž odběr je vyšší než požadovaných 500 mA a které po připojení k některému počítači nemusí fungovat.

Měřič napájení pro USB (157 Kč)

usb power detector meric proudu a napeti z usb portu

Table 1. Konektory dostupné v příslušných USB standardech
Standard USB 1.0 USB 1.1 USB 2.0 USB 2.0 revidovaný USB 3.0 USB 3.1 USB 3.2 USB 4 USB 4 V2

Maximální přenosová rychlost

1.5 MBit/s

12 Mbps

480 Mbps

5 Gbps

10 Gbps

20 Gbps

40 Gbps

80 Gbps

Konektor typ A

USB Type A receptacle White

USB Type A receptacle Black

USB 3.0 Type A receptacle blue

Konektor typ B

align-center

USB 3.0 Type B receptacle blue

Konektor Mini-A

USB Mini A receptacle

Konektor Mini-B

USB Mini B receptacle

Konektor Mini-AB

USB Mini AB receptacle

Konektor Micro-A

USB Micro A

USB 3.0 Micro A

Konektor Micro-B

USB Micro B receptacle

USB 3.0 Micro B receptacle

Konektor Micro-AB

USB Micro AB receptacle

USB micro AB SuperSpeed

Konektor typ C

USB Type C Receptacle Pinout

Historie

USB vzniklo za spolupráce firem Compaq, Hewlett-Packard, Intel, Lucent, NEC, Microsoft a Philips. Nahrazuje rozsáhle používaný sériový port RS-232. Univerzální sériová sběrnice ulehčuje obecně práci uživateli a má větší šířku pásma než sériový port RS-232. První specifikace USB byla navržena v roce 1995, jako levné univerzální rozhraní pro externí zařízení, která vystačí s nižší průchodností dat. Jeho účelem bylo sjednotit způsob připojování těchto periférií. Skutečného rozšíření se dočkalo až v roce 1998, a to pravděpodobně díky dvěma faktům. Jednak byl na trh uvedený revoluční počítač iMac firmy Apple. Tento barevný poloprůhledný počítač byl jako první na světě vybaven pouze porty USB a podnítil výrobce k většímu zájmu o výrobu USB periférií a příslušenství. Počítačů iMac se prodalo za celou dobu produkce několik miliónů kusů a mimo své úlohy na rozšíření USB znamenal také návrat firmy Apple na stoly běžných spotřebitelů. Druhým podnětem pro zahájení hromadné výroby USB periferií bylo uvedení operačního systému Microsoft Windows 98 (25 milionů prodaných licencí za rok 1998). Do té doby používané Windows 95 totiž podporovaly USB pouze od verze OEM Service Release 2.1 bez možnosti doinstalování do starších verzí, koncové verze Windows 95 (tzv. "krabicové") USB nepodporovaly vůbec.

USB 1.1

Ve verzi USB 1.1 existují pomalá (Low-Speed) zařízení s přenosovou rychlostí 1,5 Mbit/s (187,5 kB/s) a rychlá zařízení (Full-Speed) s rychlostí 12 Mbit/s (1,5 MB/s). USB 1.1 však nebylo schopno konkurovat vysokorychlostním rozhraním, např. FireWire (IEEE 1394) od firmy Apple (400 Mbit/s; až 63 zařízení).

USB 2.0

V roce 1999 se začalo uvažovat o druhé generaci USB, která by byla použitelná i pro náročnější zařízení (např. digitální kamery). Tato nová verze, označovaná jako USB 2.0, přišla v roce 2000 a nabídla maximální rychlost 480 Mbit/s (60 MB/s) v režimu Hi-Speed, avšak zachovala zpětnou kompatibilitu s USB 1.1 (režimy Low-Speed a Full-Speed).

Nabíječky USB

Většina síťových zdrojů k nabíjení mobilních telefonů je v dnešní době sjednocená a má výstup pro USB kabel. Aby mohl být síťový zdroj co nejjednodušší, je řízení nabíjení integrováno do regulátoru v přístroji (mobilním telefonu, tabletu,…​). Nabíjecí elektronika zjistí, že je připojená ke zdroji schopnému dodávat větší proud, otestováním odporu mezi datovými vodiči - má být mezi 0 a 200 Ohmy.

USB 3.1 generace 1 (přejmenováno z původního označení USB 3.0)

Třetí verze (označovaná také jako Superspeed USB) byla hotová již 17. listopadu 2008, ale pravděpodobně kvůli finanční krizi[1] se její masové rozšíření opozdilo a rozvíjet se začíná až roku 2010. USB 3.1 disponuje více než desetinásobnou rychlostí, přenosová rychlost je 5 Gbit/s (671 MB/s). Nová technologie má 9 vodičů namísto původních 4 (datové vodiče jsou již 4), přesto zpětně podporuje USB 2.0 a slibuje možnou nižší spotřebu energie (díky Power managementu). Díky tomu je možné používat libovolnou kombinaci zařízení a portů USB 2.0 a USB 3.1.

USB 3.0 Standard A konektor

200px USB 3.0 A Buchse 13

USB 3.0 Standard B konektor

238px USB 3.0 B Stecker 15

Table 2. USB 3.1 Stanard-A a Standard-B
Pin barva význam (konektor A) význam (konektor B)

1

červená

\$V_{C C}\$ (napájecí napětí +)

2

bílá

\$D-\$ (data -)

3

zelená

\$D+\$ (data +)

4

černá

GND (zem, 0 V)

5

modrá

StdA_SSRX-

StdA_SSTX-

6

žlutá

StdA_SSRX+

StdA_SSTX+

7

kryt

GND_DRAIN

8

fialová

StdA_SSTX-

StdA_SSRX-

9

oranžová

StdA_SSTX+

StdA_SSRX+

kryt

stínění

USB 3.0 Micro-B connector

Connector USB 3 IMGP6033 wp

Table 3. USB 3.1 Powered-B
Pin význam popis

1

\$V_{C C}\$

napájení

2

\$D-\$

rozdílový pár USB 2.0

3

\$D-\$

rozdílový pár USB 2.0

4

GND

zem napájení

5

StdB_SSTX-

superrychlostní vysílač diferenciálního páru

6

StdB_SSTX+

superrychlostní vysílač diferenciálního páru

7

GND_DRAIN

zem signálová

8

StdB_SSRX-

superrychlostní přijímač diferenciálního páru

9

StdB_SSTX+

superrychlostní přijímač diferenciálního páru

10

DPWD

napájení zajišťuje zařízení

11

DGND

zem pro DPWR

kryt

stínění

kryt

USB 3.1 generace 2

Verze 3.1, též pod názvem USB SuperSpeed+ 3.1, byla představena 31. července 2013. Hlavní avizovanou vlastností byla zpětná kompatibilita a plánovaná rychlost 10 Gb/s, čímž se vyrovná konkurenčnímu Thunderboltu první verzi (možná neaktuální).

USB4

USB4 verze 1.0 byla vydána 29. srpna 2019.[5] Specifikace USB4 je založen na protokolu Thunderbolt 3, který věnovala USB Implementers Forum firma Intel.[6] USB4 umožňuje dynamicky sdílet jeden vysokorychlostní přenosový kanál mezi více koncovými zařízeními. Na rozdíl od předchozích verzí USB protokolu je USB4 definováno už jen pro konektor USB-C.

Specifikace USB4 2.0 zveřejněnilo USB Implementers Forum dne 18. září 2022.

USB konektor C

USB C

Označení jednotlivých verzí

Označení jednotlivých verzí může být matoucí:

Generace Rok vydání Přenosová rychlost Označení Poznámka

USB 1.0

1996

1.5 Mbps

187.5 kB/s

Low Speed

USB 1.1

1996

12Mbps

1.5MB/s

Full Speed

USB 2.0

2001

480 Mbps

60 MB/s

High Speed

USB 3.0

2011

5 Gbps

625 MB/s

Super Speed

USB 3.1 Gen 1

2014

5 Gbps

625 MB/s

Super Speed

= USB 3.0

USB 3.1 Gen 2

2014

10 Gbps

1.25 GB/s

Super Speed+

USB 3.2 Gen 1

2017

5 Gbps

625 MB/s

Super Speed

= USB 3.1 Gen 1 = USB 3.0

USB 3.2 Gen 2

2017

10 Gbps

1.25 GB/s

Super Speed 10 Gbps

= USB 3.1 Gen 2

USB 3.2 Gen 2x2

2017

20 Gbps

2.5 GB/s

Super Speed 20 Gbps

USB4

2019

40 Gbps

5 GB/s

Super Speed 40 Gbps

definován už pouze USB-C

USB4 2.0

2022

80 Gbps

10 GB/s

Domácí úkol

Stáhněte a nainstalujte si na svém domácím počítači s Windows program HWiNFO (viz předchozí úkol PCI sběrnice) a vypište USB zařízení připojená k vašemu počítači. Instalaci HWiNFO je potřeba dělat pod Administrátorem.

Nebo se to dá udělat programem USBDevView.

Vypracovaný úkol v prostém textu jako přílohu mi pošlete mailem na adresu chraska.jiri@sspvc.cz do 30.2.2023.

Ve Windows použijte program Notepad (Poznámkový blok) nebo jiný textový editor, který umí ukládat prostý text.

Nepoužívejte prosím žádné Teamsy a odkazy na nějaká vzdálená úložiště, posíláte malý textový soubor.

Na linuxu se to dělá mnohem snadněji, použije se příkaz lsusb

Výstup příkazu lsusb na pracovní stanici s Linuxem
jirka@jirka-Precision-T3610:~/vyuka_sspvc/hardware/sbernice$ lsusb
Bus 002 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 0781:55a3 SanDisk Corp.  SanDisk 3.2Gen1
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Výstup příkazu lsusb -v na pracovní stanici s Linuxem (zkráceně jenom 1. zařízení)
jirka@jirka-Precision-T3610:~/vyuka_sspvc/hardware/sbernice$ lsusb -v

Bus 002 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        32
  idVendor           0x046d Logitech, Inc.
  idProduct          0xc52b Unifying Receiver
  bcdDevice           24.00
  iManufacturer           1
  iProduct                2
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0054
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          4
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      59
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     148
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      98
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               2

Pokud nechcete nic instalovat, stáhněte si linuxovou distribuci Finnix Vytvořte se bootovací USB klíčenku, nabootujte počítač z ní a tam máte utility lspci i lsusb.

Odkazy a zdroje