Protokol

Redoslijed slanja bitova na sabirnicu je od LSb-a prema MSb-u kao i redoslijed bajtova u višestrukom polju. Kao što je prije spomenuto postoji nekoliko formata (vrsta) paketa koji ''kolaju'' USB kabelom. To su token, data, start-of-frame, handshake i još neki specijalni paketi. O njima će više biti riječi kasnije, a za početak objasnit ćemo strukturu pojedinih polja nužnih za razumijevanje njihovih formata.
Svi paketi počinju sa sinkronizacijskim poljem SYNC koje ima zadaću usklađenja nadolazećih podataka s unutarnjim taktom. Duljina SYNC polja varira za pojedine brzine prijenosa i iznosi 8 bita za full/low - speed i 32 bita za high - speed prijenos. Zadnja dva bita SYNC polja koriste se za označavnje njegova završetka tj. početka PID polja (Packet Identifier Field).
PID polje uvijek slijedi iza SYNC-a u svakom USB paketu. To se polje sastoji od dvije skupine po četiri bita pri čemu je druga komplement prve da se postigne zalihost i mogućnost previda pogreške svede na minimum. Njegova struktura prikazana je slikom 19.

Struktura PID polja

Slika 19. Struktura PID polja

Namjena PID polja je da identificira vrstu paketa i to rasporedom bitova prema tablici 2.

Tablica 2. PID tipovi

Funkcijski endpoint adresira se kombinacijom adresnog polja i endpoint polja. Adresno polje sastoji se od 7 bitova kako je prikazano slikom 20, a služi za identifikaciju USB uređaja.

Struktura adresnog polja

Slika 20. Struktura adresnog polja

Endpoint polje sastoji se od 4 bita i omogućava adresiranje pojedinih endpointa USB uređaja. Endpoint polje prikazano je slikom 21.

Struktura endpoint polja

Slika 21. Struktura endpoint polja

Frame number polje sastoji se od 11 bita koje inkrementira host za svaki novi vremenski odsječak (frame, odnosno micro frame). Može postići maksimalnu vrijednost 7FFH, a šalje se kao samo u u start-of-frame (SOF) paketima.
Podatkovno polje varira od jednog do 1024 byte-a. Slika 22. prikazuje format za više byteova. Bitovi svakog byte-a se šalju počevši od LSB-a, a veličina paketa podataka ovisi o tipu prijenosa podataka.

Podatkovno polje

Slika 22. Format podatkovnog polja

Cyclic Redundancy Check polje, kao što mu i ime govori koristi se za zaštitu svih polja (osim PID-a). Ono osigurava provjeru ispravnosti poslanih byteova i osigurava stopostotnu točnost detekcije greške za jednostruke i dvostruke pogreške. Kada dođe do takve greške, prijemnik ignorira taj podatak, a najčešće i cijeli paket. CRC se obavlja uvijek prije generiranja ''ubačenih bitova'' (stuffed bits) na odašiljačkoj, odnosno nakon njihovog vađenja na prijemnoj strani. Kao ubačeni bit (stuffed bit) dodaje se nula ako prije nje slijedi šest bitova jedinica.


FORMATI PAKETA

Token paketi

Slika 23. prikazuje format token paketa. On se sastoji od PID polja, koje specificira da li se radi o ulaznom, izlaznom ili SETUP tipu paketa, ADDR i ENDP polju. Postoji posebna vrsta token paketa PING koja također ima ovakvu strukturu. Za izlazni i SETUP promet adresno i endpoint polje jedinstveno identificiraju endpoint koji je namijenjen za prijem podatkovnog paketa, dok za ulazni promet identificiraju endpoint koji treba emitirati paket. Za PING transakcije identificira se endpoint koji treba odgovoriti s handshake paketom. Bitno je to da jedino računalo (host) može izdavati token pakete pa možemo reći da je USB primjer centraliziranog pristupa mediju za razliku od npr. IEEE 802.3 Etherneta, IEE 802.4 Token Busa, itd. Ulazni PID definira podatkovni prijenos od uređaja prema računalu. Izlazni i SETUP PID definira podatkovni prijenos od računala prema uređaju. PING PID definira handshake prijenos od uređaja prema računalu.
Token paketi sadrže 5 bitni CRC koji osigurava detekciju pogreške u ADDR i ENDP poljima. CRC ne pokriva PID polje iz zbog same njegove strukture kako je to prije objašnjeno. Token i SOF paketi su delimitirani EOP poljem (End-of-packet) nakon tri byte-a podataka.

Format token paketa

Slika 23. Format token paketa

Start-of-frame (SOF) paketi

SOF pakete izdaje računalo svakih 1.00ms za full-speed i svakih 125 µs za high-speed sabirnicu. SOF paket sastoji se od PID polja koje identificira tip paketa, 11-bitnog frame numbera i 5-bitnog CRC polja. Njegova struktura prikazana je slikom 24.

SOF paket

Slika 24. SOF paket

U SOF paketu sadržane su dvije vrste informacije: početak frame-a i broj frame-a Uređaj je informiran da se pojavio SOF kada detektira SOF PID. Uređaji koji su osjetljivi na frame timing, a ne moraju pratiti broj framea ignoriraju frame number i CRC i dekodiraju PID (npr. hub koji radi na full-speed).

USB definira full-speed 1 ms frame indicirano SOF paketom svakih 1 ms. Također definira high-speed 125 µs microframe. Veza imeđu frame-a i microframe-a prikazana je slikom 25. High-speed uređaji vide SOF paket osam puta tijekom full-speed 1 ms perioda.

Veza između framea i microframea

Slika 25. Veza između framea i microframea

Podatkovni paketi

Podatkovni paket sadrži PID, podatkovno polje koje sadrži nula ili više byte-ova podataka i 16-bitni CRC. Postoje četiri tipa podatkovnih paketa, koji se identificiraju PID poljem. Podatkovni paket prikazan je slikom 26.

Podatkovni paket

Slika 26. Podatkovni paket

Maksimalna veličina podatkovnog polja je 8 byte-a za low-speed uređaje, 1023 byte-a za full-speed uređaje, a 1024 byte-a za high-speed uređaje.


Handshake paketi

Handshake paket prikazan je slikom 27, a koriste se da potvrde uspješno obavljenu komunikaciju. Postoji nekoliko podvrsta handshake paketa, a svaka indicira određeno stanje komunikacije. To su ACK, NAK, STALL, NYET i ERR.

Handshake paket

Slika 27. Handshake paket

BULK PRIJENOS

Bulk promet je karakteriziran mogućnošću garantiranja točnog prijenosa podataka između računala i uređaja. Namijenjen je uređajima koji primaju ili šalju velike količine podataka u različitim vremenskim intervalima i pri tome koriste neznatnu širinu pojasa. Koristi prijenos u tri faze: token, podaci i handshake kako je prikazano na slici 28. PING paketi koriste se samo s uređajima koji rade u high-speed modu.

Bulk prijenos

Slika 28. Bulk prijenos

Kad je računalo spremno za prijam bulk podataka izdaje ulazni tip tokena. Funkcijski endpoint odgovara podatkovnim paketom ili ako nije u stanju obaviti prijenos NAK ili STALL handshakeom. NAK izdaje ako trenutno nije u stanju emitirati podatke, a STALL ako ne može emitirati podatke uopće. Ako računalo korektno primi poslane podatke odgovara s ACK handshakeom, a ako detektira pogrešku ne vraća nikakav handshake.
Kad je računalo spremno za emitiranje bulk podataka šalje izlazni tip paketa iza kojeg slijede podaci ili PING token. U slučaju da je uređaj primio podatke bez greške vratit će ACK NAK ili STALL handshake na isti način kao i kod slanja podataka, a ako je nastala greška handshake paket se ne vraća.
Bulk podatci prenose se stream pipeom koji je jednosmjeran pa su za dvostruku komunikaciju potrebna dva pipea. Maksimalna veličina payloada je 64 byte-a za full-speed mod, a 512 byte-a za high-speed mod.

KONTROLNI PRIJENOS

Kontrolni prijenos minimalno se obavlja u dvije faze: Setup i Status. Općenito može još sadržavati podatkovnu fazu. Tijekom Setup faze, SETUP prijenos se koristi za prijenos informacije kontrolnom funkcijskom endpointu. Slika 29. prikazuje format SETUP transakcije. Ukoliko funkcijski endpoint primi novu SETUP transakciju prije nego što je kontrolni prijenos bio završen , uređaj prekida trenutnu operaciju i prihvaća novu transakciju. Podatkovna faza kontrolnog prijenosa završava kada endpoint pošalje količinu podataka najavljenu u SETUPU, ili kada pošalje payload s količinom podataka manjom od maksimalne. Maksimalni payload za high-speed iznosi 64 Byte-a, za full-speed 8, 16, 32, 64 Byte-a, a za low-speed 8 Byte-a.

Kontrolni Setup prijenos

Slika 29. Kontrolni Setup prijenos

U podatkovnoj fazi, ako postoji, kontrolni prijenos se sastoji od jednog ili više ulaznih ili izlaznih prijenosa po istim pravilima kao bulk prijenos. Status faza je posljednja faza u nizu i također slijedi pravila bulk prijenosa.

PREKIDNI (INTERRUPT) PRIJENOS

Prekidni prijenos može se sastojati od ulaznih i izlaznih prijenosa. O uspješnosti prijenosa obavještava se handshake paketima. Protokol je prikazan slikom 30.

Interrupt prijenos

Slika 30. Interrupt prijenos

IZOKRONI PRIJENOS

Izokroni prijenos sadrži token i podatkovnu fazu, ali ne i handshake fazu. Računalo izdaje ili ulazni ili izlazni token iza kojeg slijede podatci. To je prikazano slikom 31.

Slika 31. Izokroni prijenos