background image

USB

USB

Adam Orzechowski 2TIB

Adam Orzechowski 2TIB

background image

Anatomia USB

Koncepcja magistrali USB (Universal Serial Bus) jest wspólnym 
dziełem zespołu powołanego do życia przez grupę firm 
założycielskich: Compaq, DEC, IBM, Intel, NEC i Northerm Telecom. 
Choć znaczna część twórców USB przeszła już do historii, z tego 
sposobu łączenia komputerów z urządzeniami peryferyjnymi 
korzystać będziemy jeszcze długo.
Głównym założeniem konstrukcyjnym magistrali USB było optymalne 
wykorzystanie pasma przepustowego na potrzeby urządzeń 
peryferyjnych o różnych wymaganiach szybkości transmisji danych. 
Łącze USB charakteryzuje się szeregową transmisją danych, 
transferem danych w formie pakietowej z wydzielonym kanałem o 
paśmie gwarantowanym i automatycznym sposobem konfiguracji 
magistrali w trakcie pracy (rozpoznawane jest podłączenie nowego 
urządzenia peryferyjnego oraz jego odłączenie). USB zapewnia 
automatyczny przydział adresów dla podłączonych urządzeń 
peryferyjnych oraz pracę magistrali bez konieczności instalacji 
terminatorów - końcówek dopasowujących na końcach magistrali. 
Zaletą USB jest możliwość dostarczania przez łącze zasilania również 
dla urządzeń peryferyjnych o niewielkim poborze mocy.

background image

Magistrala USB ma strukturę drzewa rozrastającego się od kontrolera 
USB (Host Adapter), w dół do każdego gniazda, do którego można 
podłączyć urządzenie peryferyjne (NODE lub FUNCTION) albo kolejny 
rozdzielacz (HUB). Dopuszczalna liczba wszystkich urządzeń (łącznie 
z rozdzielaczami i urządzeniami końcowymi) nie może przekroczyć 
127.
Ponieważ liczba dopuszczalnych poziomów nie może przekroczyć 7, a 
długość przewodu łączącego urządzenie peryferyjne z rozdzielaczem 
nie może być większa niż 5 m, maksymalna odległość urządzeń 
peryferyjnych od kontrolera USB (korzenia) wynosi 35 m. W 
podstawowej wersji specyfikacji (USB 1.1) zdefiniowano dwa kanały 
informacyjne o różnej przepustowości - Low Speed (LS) dla wolnych 
urządzeń (pasmo do 1,5 Mb/s) oraz Full Speed (FS) - pasmo do 12 
Mb/s. W specyfikacji USB 2.0 zdefiniowano dodatkowy kanał High 
Speed (HS) o przepustowości 480 Mb/s. Koncentratory (HUB) 
stanowią układy aktywne wzmacniające sygnały magistrali, które są 
wyposażone w jeden port wejściowy połączony z wyższym poziomem 
(Upstream Port) oraz kilka portów wyjściowych, przeznaczonych do 
połączenia z niższym poziomem (Downstream Port). W skład 
urządzeń niższego poziomu mogą wchodzić urządzenia peryferyjne 
jako końcówki lub rozdzielacze kolejnego poziomu. Rozdzielacze poza 
powielaniem gniazd USB zapewniają dostarczanie energii dla 
urządzeń peryferyjnych pozbawionych własnego zasilania. 
Dopuszczalny pobór prądu z magistrali wynosi bowiem jedynie 500 
mA.

background image

Wszelkie akcje na magistrali realizuje kontroler USB, będący częścią składową 
architektury komputera. Każde urządzenie peryferyjne USB jest odpytywane 
przez kontroler, czy nie potrzebuje obsługi. Zaletą tej procedury obsługi jest 
zabezpieczenie przed możliwością kolizji, do której mogłoby dojść przy 
równoległej wymianie danych urządzeń peryferyjnych podłączonych do 
magistrali USB. Wadą natomiast zajmowanie dużej części dostępnego pasma 
magistrali przez pakiety odpytujące poszczególne urządzenie magistrali USB, 
dlatego też z zaoferowanych w trybie Full Speed 12 Mb/s do praktycznego 
wykorzystania pozostaje około 1 Mb/s. 

background image

Magistrala USB synchronizuje transmisję pakietów pomiędzy 
kontrolerem USB a urządzeniami peryferyjnymi wewnętrznym 
sygnałem zegarowym, wkomponowanym w przesyłany strumień 
danych. Sygnał USB kodowany jest zgodnie z zasadami określonymi 
dla kodu NRZI (Non Return to Zero Invert). Każde logiczne 0 wyzwala 
zmianę polaryzacji sygnału na przeciwną, a logiczna 1 pozostawia bez 
zmian poziom sygnału cyfrowego. Oznacza to, że jak długo w ciągu 
impulsów wejściowych występuje 1 logiczne, kodowany przebieg ma 
stałą polaryzację.
Specjalny algorytm kodowania zapewnia obecność impulsów 
synchronizujących w dowolnej sekwencji danych, nawet składających 
się z samych logicznych 1. Przewiduje stosowanie zerowych impulsów 
wypełniających (Bit stuffing), wstawianych w ciąg danych 
zawierających co najmniej 6 impulsów jedynek logicznych. Oznacza 
to w praktyce, że każde urządzenie USB ma możliwość 
zsynchronizowania swojego wewnętrznego zegara co najmniej raz na 
siedem taktów sygnału danych. Do synchronizacji transmisji pakietów 
USB stosowany jest 8-bitowy ciąg binarny KJKJKJKK, rozpoczynający 
każdy pakiet USB, gdzie: K odpowiada 0 logicznemu, a J - 1 logicznej 
dla FS i odwrotnie dla LS. Urządzenie peryferyjne dekoduje dane kodu 
NRZI, rozpoznaje i usuwa impulsy wypełnienia z ciągu danych przed 
odczytem.

background image
background image

Obsługa magistrali USB

Obsługa magistrali USB

identyfikacja rodzaju transmisji

identyfikacja rodzaju transmisji

przesyłanie danych pomiędzy 

przesyłanie danych pomiędzy 

kontrolerem USB komputera a 

kontrolerem USB komputera a 

urządzeniem peryferyjnym, zgodnie z 

urządzeniem peryferyjnym, zgodnie z 

kierunkiem określonym w fazie 

kierunkiem określonym w fazie 

identyfikacji rodzaju transmisji

identyfikacji rodzaju transmisji

potwierdzenie realizacji lub informacja o 

potwierdzenie realizacji lub informacja o 

błędach transmisji danych. 

błędach transmisji danych. 

Obsługa łącza USB odbywa się poprzez transmisję sygnałów sterujących oraz 
danych złożonych z protokołów. Każdorazowa transmisja sygnałów przebiega 
w trzech fazach: 

background image

W fazie identyfikacji wykorzystywane mogą być trzy rodzaje grup protokołów. 
Protokoły identyfikacyjne służą do konfigurowania dołączonych do 
magistrali urządzeń. Pakiet identyfikacji kierunku przesyłania danych określa 
kierunek transmisji danych (OUT - z komputera do urządzeń peryferyjnych; IN 
w odwrotnym kierunku).
Pakiet SOF (Start of Frame) wskazuje na początek ramki transmisyjnej 
synchronizującej magistralę USB z okresem 1 mikrosekunda (0,5 ms dla 
przepustowości LS i FS, a 125 ms +/- 6,25 ns dla przepustowości HS), czyli do 
480 Mb/s. Pakiet zawiera 11-bitowe pole numeru bieżącego ramki, która 
może być wykorzystana przy synchronizacji transmisji danych, szczególnie 
izochronicznych.
  Format pakietu SETUP
Pakiet SETUP sygnalizuje wysyłanie w kolejnych pakietach danych, które 
sterują urządzeniami peryferyjnymi przez kontroler USB. Do danych 
sterujących zaliczamy np. komendy SET_ADDRESS (ustawienie adresu dla 
wybranego urządzenia peryferyjnego), GET_DEVICE_DESCRIPTOR (żądanie 
przez kontroler USB pełnej informacji o konfiguracji wybranego urządzenia 
peryferyjnego podłączonego do magistrali), SET_CONFIGURATION (ustawienie 
wymaganej konfiguracji dla wybranego urządzenia peryferyjnego).

background image
background image

Ze względu na wymagania synchronizacji magistrali USB, protokoły danych 
(o maksymalnej długości 1024 bajtów) dla transmisji LS i FS rozróżniane są za 
pomocą nagłówka pakietu PID (Packed Identifier) - Data0/Data1. W praktyce 
oznacza to, że kolejne pakiety danych występujące na przemian jako Data0 
oraz Data1 rozróżniane są za pomocą nagłówków PID, tzn. pakiet z danymi 
oznaczony jako Data0 ma PID o wartości binarnej 0011, a następny pakiet 
oznaczony jako Data1 - PID o wartości binarnej 1011. W transmisji HS 
wykorzystywane są dodatkowe dwa rodzaje nagłówków PID Data2(binarnie 
0111)/Mdata(binarnie 1111).
  Format pakietu potwierdzenia
Protokoły potwierdzenia stosowane są do przekazywania informacji 
zwrotnej o sukcesie lub błędzie zrealizowanego transferu danych w magistrali 
USB. Mamy trzy typy pakietów potwierdzenia, różniące się wartością 
nagłówka PID: ACK (acknowledgement - potwierdzenie odbioru danych przez 
urządzenie pełniące funkcje odbiornika), NAK (negative acknowledgement - 
urządzenie odbiorcze chwilowo nie może odebrać ani wysyłać danych (w 
przypadku transferu obsługi przerwania NAK informuje kontroler USB, że nie 
ma żadnych danych do wysłania); STALL - urządzenie końcowe znajduje się w 
stanie wymagającym interwencji kontrolera.

background image

Skróty literowe nazw stosowane do identyfikacji pól w 

Skróty literowe nazw stosowane do identyfikacji pól w 

przedstawionych protokołach oznaczają odpowiednio:

przedstawionych protokołach oznaczają odpowiednio:

 

 

SYNC(8b) - sygnał synchronizacji pakietów USB (8 bitów); 

SYNC(8b) - sygnał synchronizacji pakietów USB (8 bitów); 

PID(8b) - identyfikator rodzaju pakietu; 

PID(8b) - identyfikator rodzaju pakietu; 

ADRESS(7b) - adres urządzenia peryferyjnego dołączonego do 

ADRESS(7b) - adres urządzenia peryferyjnego dołączonego do 

magistrali USB; 

magistrali USB; 

ENDP(4b) - adres bufora (rejestru) cyfrowego w wybranym 

ENDP(4b) - adres bufora (rejestru) cyfrowego w wybranym 

urządzeniu USB odpowiedzialnego za wymianę danych z komputerem 

urządzeniu USB odpowiedzialnego za wymianę danych z komputerem 

w magistrali USB; 

w magistrali USB; 

FRAME(11b) - kolejny numer ramki; 

FRAME(11b) - kolejny numer ramki; 

DATA(1024b) - dane cyfrowe przesyłane w magistrali USB; 

DATA(1024b) - dane cyfrowe przesyłane w magistrali USB; 

EOP(3b) - znacznik końca pakietu; 

EOP(3b) - znacznik końca pakietu; 

CRC(5b) (cykliczny kod nadmiarowy) - służy do detekcji błędów w 

CRC(5b) (cykliczny kod nadmiarowy) - służy do detekcji błędów w 

transmisji danych. Po każdym pakiecie informacji cyfrowej przesyłany 

transmisji danych. Po każdym pakiecie informacji cyfrowej przesyłany 

jest przykładowo 5-bitowy kod CRC obliczony na podstawie wartości 

jest przykładowo 5-bitowy kod CRC obliczony na podstawie wartości 

bitowej tego pakietu. Jeżeli odbiorca otrzyma pakiet informacji 

bitowej tego pakietu. Jeżeli odbiorca otrzyma pakiet informacji 

cyfrowej z błędem, to obliczony na jego podstawie kod CRC będzie 

cyfrowej z błędem, to obliczony na jego podstawie kod CRC będzie 

różny od nadanego i odbiorca może zażądać powtórzenia transmisji 

różny od nadanego i odbiorca może zażądać powtórzenia transmisji 

pakietu cyfrowego. 

pakietu cyfrowego. 

background image
background image

Pakiety danych występują we wszystkich rodzajach 

Pakiety danych występują we wszystkich rodzajach 

transmisji, do których możemy zaliczyć transfery:

transmisji, do których możemy zaliczyć transfery:

 

 

masowy (asynchroniczny); 

masowy (asynchroniczny); 

izochroniczny (synchroniczny); 

izochroniczny (synchroniczny); 

obsługi przerwania; 

obsługi przerwania; 

sterująco-kontrolny. 

sterująco-kontrolny. 

background image

Podstawowy rodzaj transmisji ma charakter asynchroniczny i jest stosowany 
do przesyłania masowych danych (Bulk Transfer). Zapewnia powtarzanie 
pakietów uszkodzonych, co prowadzi do niezawodności i spójności 
przekazywanych danych, ale nie gwarantuje ani określonej przepustowości, 
ani limitu czasu transmisji, ponieważ obie te wartości zależą od chwilowej 
aktywności magistrali USB. Typowe zastosowanie trybu masowego to obsługa 
pamięci masowych, takich jak ZIP, odbiór danych ze skanera lub wysyłanie 
danych do drukarki.
Dla danych, które muszą być dostarczane z określoną częstotliwością 
(dyskretnością) w czasie rzeczywistym, stosowana jest transmisja 
izochroniczna. Klasycznym przykładem zastosowania takiej transmisji jest 
cyfrowy sygnał wizyjny z/do kamery lub fonii z mikrofonu do głośników. 
Rezerwacja kanału transmisji izochronicznej przez kontroler USB odbywa się 
na podstawie deklaracji złożonej przez urządzenie peryferyjne na etapie 
konfiguracji magistrali USB. Oparty na zapytaniach kontrolera system 
przydziału pasma w kanale asynchronicznym mógłby spowodować 
niedopuszczalne opóźnienia zakodowanych sygnałów wizyjnych i fonicznych, 
dyskwalifikując całkowicie sens tego typu transferu. Dla transferu 
izochronicznego kontroler USB rezerwuje fragment pasma magistrali USB w 
regularnych wycinkach czasowych, które odpowiadają w praktyce 
częstotliwości próbkowania sygnału analogowego, np. przy digitalizacji 
obrazu lub dźwięku. W trybie izochronicznym błędy nie są korygowane (brak 
pakietów potwierdzenia ACK), ale transfer ten ma pierwszeństwo przed 
transmisją asynchroniczną. 

background image

Transfer obsługi przerwania charakteryzuje się ekspresowym 
przekazywaniem danych o rozmiarze nieprzekraczającym kilku bitów. Dzięki 
temu możliwe jest błyskawiczne powiadomienie kontrolera o konieczności 
obsługi przerwania zgłoszonego przez podłączone do magistrali USB 
urządzenie, np. mysz komputerową. Transfer obsługi przerwania realizowany 
jest w wyniku cyklicznego odpytywania urządzeń peryferyjnych podłączonych 
do magistrali USB przez kontroler z częstotliwością zdefiniowaną podczas 
identyfikacji wszystkich urządzeń USB.
Jeżeli urządzenie typu mysz komputerowa oczekuje na obsługę, to po 
otrzymaniu pakietu identyfikatora IN z kontrolera zrealizuje przekazanie 
danych do niego. Zakończona sukcesem transmisja zostanie potwierdzona 
pakietem identyfikatora ACK. Jeżeli kontroler chce wysłać dane obsługi 
przerwania do urządzenia - myszy komputerowej, wysyła na magistralę 
pakiet identyfikatora OUT oraz pakiet danych zaadresowanych do wybranego 
urządzenia. Urządzenie po odbiorze danych wysyła identyfikator 
potwierdzenia ACK, w przeciwnym razie informuje kontroler za pomocą 
identyfikatora NAK lub STALL o błędnym zakończeniu transmisji.
Wielkość danych przesyłanych podczas tego typu transferu zależy od 
szybkości transmisji zdefiniowanej dla tego typu urządzenia i wynosi 8 bajtów 
dla urządzeń w trybie LS, 64 bajty - w trybie FS lub 1024 bajty w trybie HS.

Transfer sterująco-kontrolny przeznaczony jest do konfiguracji każdego 
urządzenia peryferyjnego USB w procesie enumeracji urządzeń podłączonych 
do magistrali USB. Po włączeniu nowego urządzenia kontroler rozpoznaje 
rodzaj urządzenia oraz jego parametry obsługi. Transfer sterujący realizowany 
jest w trzech etapach: SETUP, DATA, STATUS. 

background image

W pierwszym etapie kontroler USB wysyła identyfikator 
SETUP, który zawiera adres odpytywanego urządzenia, a 
następnie przesyła dane sterujące zawarte w pakiecie 
DATA0, np. GET_DEVICE _DESKRYPTOR. Odpytywane 
urządzenie potwierdza przyjęcie skierowanych do niego 
danych sterujących za pomocą identyfikatora potwierdzenia 
ACK, w przeciwnym razie ignoruje otrzymane dane.
Na etapie DATA, jeżeli kontroler ustalił odczyt danych z 
urządzenia peryferyjnego za pomocą identyfikatora IN, 
następuje odbiór danych DATA z urządzenia, a następnie 
potwierdzenie identyfikatorem ACK zakończenia transferu 
sukcesem.
Podczas etapu STATUS kontroler informuje urządzenie o 
prawidłowym przebiegu wcześniejszych etapów, tzn. SETUP 
i DATA. Zgodnie z przedstawionym rysunkiem STATUS 
rozpoczyna się identyfikatorem OUT, a następnie 
przesyłany jest pakiet danych DATA0 o zerowej wartości 
(DATA0 Zero Length). W odpowiedzi urządzenie peryferyjne 
przesyła pakiet potwierdzenia ACK. Cechą 
charakterystyczną dla etapu STATUS jest kierunek 
przesyłania pakietu DATA0, który jest zawsze przeciwny do 
kierunku przesyłanych danych.

background image

W działaniu magistrali USB podstawową rolę odgrywa buforowanie danych i 
to zarówno przez kontroler USB, jak i urządzenie peryferyjne oczekujące w 
kolejce na dostęp do magistrali. Ponieważ czas oczekiwania na obsługę bywa 
różny, a urządzenie nie może go przewidzieć, rozmiary buforów lokalnych 
muszą być dobrane z dużym zapasem, tym większym, im większymi porcjami 
realizowana jest wymiana danych. Całkowita przepustowość magistrali USB 
dzielona jest przez kontroler, który tworzy wirtualne kanały przepustowe 
określonego typu. Kontroler przekazuje zdefiniowane kanały wirtualne o 
określonej szerokości i danym kierunku przepływu do dyspozycji 
wyznaczonych urządzeń peryferyjnych.
Obsługa poszczególnych urządzeń peryferyjnych, zgodnie ze zdefiniowanymi 
priorytetami, odbywa się wyłącznie poprzez regulacje częstotliwości 
rozsyłania pakietów identyfikatorów odpytujących poszczególne urządzenia 
peryferyjne o gotowość do wymiany danych użytkowych.
Generalną zasadą obsługi urządzeń USB jest zakaz przerywania trwających 
transmisji na korzyść tych oczekujących w kolejce. W praktyce oznacza to, że 
kontroler może zignorować prośbę o dostęp do magistrali przez urządzenie 
peryferyjne, jeżeli rezerwy pasma nie są wystarczające.
Poza możliwością organizacji kanału o przepływności 480 Mb/s nie ma różnic 
między urządzeniami USB 2.0 a 1.1. Twórcy standardu USB 2.0 zaproponowali 
specjalne logo HI-SPEED USB dla sprzętu, który będzie pracował z prędkością 
480 Mb/s.

background image

Podstawową wadą koncepcji USB jest niemożność wykorzystania łącza USB 
do bezpośredniej transmisji pomiędzy dwoma komputerami czy dwoma 
urządzeniami peryferyjnymi. W ramach rozwoju standardu USB w grudniu 
2001 r. powstała więc specyfikacja urządzeń USB On-The-Go. Stanowi ona 
rozszerzenie standardowej specyfikacji USB, pozwalające na komunikację 
pomiędzy urządzeniami USB bez pośrednictwa komputera (host). Potrzeba 
stworzenia takiego rozszerzenia powstała wraz z rosnącą popularnością 
urządzeń mobilnych (telefony komórkowe, odtwarzacze MP3, palmtopy, 
przenośne pamięci masowe), które do samodzielnej pracy nie wymagają 
wcale komputera PC. Zgodnie ze specyfikacją urządzenia USB On-The-Go 
mają zapewnić: możliwość pełnienia funkcji hosta (w ograniczonym zakresie), 
mniejsze wtyczki i gniazda USB, które pozwolą na zwiększenie mobilności 
urządzeń, niski pobór mocy w celu zapewnienia pracy na bateriach. 

background image

KONIEC

KONIEC


Document Outline