background image

 

 

 

 

 

Transmisja

 szeregowa USB  

background image

 

 

1. Magistrala USB - wprowadzenie 

 
 

Magistrala  USB  początkowo  miała  słuŜyć  jedynie  do  przesyłania  informacji  z 

wykorzystaniem  linii  telefonicznej.  Stworzono  zatem  w  tym  celu  standardowy  interfejs. 
Szybko  okazało  się  jednak,  Ŝe    doskonale  nadaje  się  on  do  podłączania  komputerowych 
urządzeń  peryferyjnych.  Opis  uniwersalnej  magistrali  szeregowej  (USB  1.1)    z  dnia  23 
września  1998r.  stał  się  podstawowym  standardem  stosowanym  przy  dołączaniu  urządzeń 
współpracujących  z  komputerem.  Dotychczas  masowo  stosowany  był  port  równoległy  LPT 
(Centronix,  tzw.  ”port  drukarki”)  oraz  RS-232,  którego  historia  sięga  jeszcze  lat 
sześćdziesiątych ubiegłego stulecia. Według nowego standardu dane moŜna było przesyłać z 
szybkością  1,5Mb/sec  (tzw.  ”mała  częstotliwość”)  lub  12Mb/sec  (tzw.  ”pełna 
częstotliwość”).  USB  bardzo  szybko  się  rozpowszechniła.  Za  jej  pośrednictwem  zaczęto 
podłączać  klawiatury,  myszy  oraz  manipulatory,  czyli  urządzenia  pracujące  z  ”małą 
częstotliwością”.  Z  ”pełnej  częstotliwości”  korzystano  głównie  podczas  pracy  z  linią 
telefoniczną  oraz  przesyłając  pliki  audio.  W  polskiej  literaturze  często  spotkać  moŜna 
Ŝ

artobliwe  rozszyfrowanie  skrótu  USB,  brzmiące  „USuń  Bałagan”.  Niewątpliwie  wygoda 

połączeń,  małe  i  wąskie  wtyki  połączeniowe,  drzewiasta  struktura  magistrali,  a  takŜe 
moŜliwość  zasilania  urządzeń  bezpośrednio  z  gniazda  USB  wpłynęły  na  błyskawiczne 
rozpowszechnienie standardu i jednoczesne coraz częstsze odstępowanie przez producentów 
nowych  urządzeń  od  standardu  RS-232.  Dotyczyło  to  szczególnie  domowych  urządzeń 
peryferyjnych. 
 

Gwałtowny rozwój techniki mikroprocesorowej  w przeciągu ostatnich lat i ogromny 

postęp  techniczny  w  dziedzinie  audio-video  zmusiły  do  opracowania  szybszej  wersji  USB, 
która pozwoliłaby przesyłać dane dodatkowo z  urządzeń wideo. Rok 1999 często nazywa się 
rokiem  DVD,  więc  naleŜało  stworzyć  nowy  standard  obsługujący  urządzenia  rejestrujące 
obraz i dźwięk. Słusznie przypuszczano, Ŝe w przeciągu nadchodzących lat w tym kierunku 
odnotowywać  będziemy  gwałtowny  rozwój  techniki.  Sprzyjały  teŜ  temu  powolne  tendencje 
odchodzenia  od  magnetycznych  nośników  informacji  (  taśmy  ferromagnetyczne, 
magnetowidy,  kamery  VHS  itp.)  oraz  rozpowszechnianie  odpowiadających  im  cyfrowych 
urządzeń  o  zbliŜonych  funkcjach,  wykorzystujących  coraz  częściej  pamięci  statyczne. 
Kolejnym powodem skłaniającym firmy do opracowania standardu pozwalającego przesyłać 
obrazy  w  czasie  rzeczywistym  był  teŜ  spadek  cen  za  usługi  internetowe  (przewidywano 
zainteresowanie  klientów  kamerami  internetowymi)  oraz  rozwój  telefonii  komórkowej, 
dąŜący  do  stworzenia  w  przyszłości  moŜliwości  przesyłania  obrazów.  Tak  więc  juŜ  27 
kwietnia  2000  roku  czołowi  producenci  urządzeń  komputerowych  i  telekomunikacyjnych 
(Compaq,  Hewlett-Packard,  Intel,  Lucent  Technologies,  Microsoft,  NEC  i  Philips)  ogłosili 
kolejną  normę  („Universal  Serial  Bus  Specification  Revision  2.0”),  która  zakładała 
moŜliwość  przesyłania  po  magistrali  USB  danych  z  dodatkową,  40-krotnie  większą  od 
dotychczasowej,  maksymalną  prędkością  (czyli  480  Mb/sec!).  Norma  ta  zakładała  pełną 
kompatybilność  z  urządzeniami  USB  1.1,  tzn.  by  w  jednej  sieci  obok  urządzeń 
przesyłających  strumienie  bitów  z  szybkością  480  Mb/sec  mogły  pracować  takie,  które 
przesyłają dane z szybkością 1,5Mb/sec lub 12Mb/sec.  W celu odróŜnienia uŜywanych dla 
USB  1.1  określeń  szybkości  ”low  speed”  i  ”full  speed”,  obecną  największą  szybkość  dla 
USB  2.0  nazwano  ”high  speed”  .  Nowa  norma  określiła  takŜe  budowę  układów 
sprzęgających,  a  takŜe  zawarto  w  niej  informacje  o  programach  obsługi  urządzeń  wejścia-
wyjścia  oraz  opis  konstrukcji  koncentratorów  i  głównego  sterownika  magistrali  USB. 
Powiązania    komputera    macierzystego    z    urządzeniami    peryferyjnymi    opisane  zostały  z 
zachowaniem podziału na  róŜne  szczeble hierarchii. W warstwie  fizycznej przedstawiono  

background image

 

współdziałanie układów sprzęgających, w warstwie  logicznej organizacje przepływu danych  
pomiędzy    oprogramowaniem    systemowym    i    urządzeniami    logicznymi,    a    w    warstwie  
funkcjonalnej  sposób w  jaki programy wykonywane na komputerze macierzystym odwołują  
się do funkcji realizowanych przez urządzenia wykonawcze.  
 

Początkowo  podstawową  wadą  koncepcji  USB  był  brak  moŜliwości  wykorzystania 

łącza  USB  do  bezpośredniej  transmisji  danych  pomiędzy  dwoma  komputerami  lub  dwoma 
urządzeniami  peryferyjnymi.  W  ramach  rozwoju  standardu  USB  w  grudniu  2001  roku 
powstała  dodatkowo  specyfikacja  urządzeń  ”USB  On-The-Go”.  Stanowi  ona  rozszerzenie 
standardowej,  pozwalając  na  komunikację  pomiędzy  urządzeniami  bez  pośrednictwa 
komputera. Tutaj takŜe  wprowadzono tzw. ”mniejsze wtyczki”. Wszystko to związane było 
głównie z rosnącą popularnością mikroprocesorowych urządzeń mobilnych. 
 

 

 

Rys. 1. ZastrzeŜone znaki charakteryzujące rodzaj transmisji urządzenia (od lewej: USB 1.1, 

USB 1.1 On-The-Go, USB 2.0, USB 2.0 On-The-Go, Wireless USB) 

 

 

Wireless  USB  oznacza  bezprzewodową  magistralę  USB  zgodną  z  USB  2.0,  gdzie 

warstwa fizyczna wykorzystuje łącze radiowe. 
 

Warto  dodać,  Ŝe  producenci  sprzętu  elektronicznego  często  na  produktach 

zaprojektowanych  w  czasach  istnienia  wyłącznie  USB  pierwszej  generacji,  a 
wyprodukowanych juŜ po opublikowaniu normy USB 2.0, umieszczają napis ”USB 2.0”. Nie 
oznacza to w większości przypadków moŜliwości osiągania parametrów charakteryzujących 
USB  2.0,  lecz  kompatybilność,  co  jest  rzeczą  oczywistą,  biorąc  pod  uwagę  załoŜenia 
standardu.  Warto  więc  dokładnie  czytać  dane  techniczne  urządzeń,  a  nie  sugerować  się 
napisami na opakowaniach, które często są tylko chwytami marketingowymi. 
 

background image

 

2. Hierarchia magistrali USB 

 
 

Magistralę USB 2.0 wykorzystuje się w trybie synchronicznym do średniej i szybkiej 

transmisji oraz w asynchronicznym do wolnej. Komputer macierzysty pełni funkcję jednostki 
zarządzającej  magistralą,  która  ma  strukturę  hierarchiczną  .  Jego  system  operacyjny 
kontroluje magistralę, tak więc dowolne urządzenie moŜe przesłać dane na szynę USB tylko i 
wyłącznie po otrzymaniu zezwolenia od systemu operacyjnego. System kontroluje magistralę 
na  bieŜąco,  więc  moŜliwe  jest  dołączanie  i  odłączanie  urządzeń  komunikujących  się  z 
komputerem  przez  USB  bez  ponownego  uruchamiania  systemu  operacyjnego.  Stąd 
określenie  ”plug’n’play”,  oznaczające  gotowość  urządzenia  do  pracy  zaraz  po  podłączeniu 
do magistrali. Wcześniej muszą być jednak zainstalowane w systemie sterowniki urządzenia, 
o ile ich nie zawierał. 
 

Główny koncentrator umieszczony jest w komputerze macierzystym. Sieć tworzy się 

kaskadowo,  a  maksymalna  liczba  koncentratorów  w  kaskadzie  nie  moŜe  być  większa  niŜ 
pięć.  Dzięki  układom  umieszczonym  w  koncentratorach,  nowo  podłączone  urządzenie  ma 
ograniczenie  podawanej  do  niego  mocy  do  0,5  W.  Dopiero  pod  kontrolą  programu  obsługi 
magistrali  moc  dostarczana  do  urządzenia  moŜe  być  zwiększona  do  2,5  W.  Urządzenia 
podłączane  do  magistrali  USB  muszą  ponadto  mieć  moŜliwość  przechodzenia  w  stan 
uśpienia, w którym ich pobór prądu z magistrali nie przekracza 500µA. 
 

USB 2.0 dzięki operacji SPLIT eliminuje zakłócenia mogące powstać przy obecności 

urządzeń przesyłających w sieci dane z ”małą” lub ”pełną” szybkością (USB 1.1). Operacja 
polega na ”inteligentnym” lokalizowaniu określonych urządzeń w sieci i przesyłaniu danych 
z  koncentratorów,  i  ile  moŜna,  z  maksymalną  szybkością,  a  tylko  od  urządzenia  do 
koncentratora  dane  podawane  są  z  szybkością    urządzenia  USB  1.1.  Podczas  korzystania  z 
róŜnych koncentratorów naleŜy zatem pamiętać o poprawnej kolejności ich połączeń. 
 
 
 
 

background image

 

3. Struktura magistrali 

3.1. Wa

Ŝ

ne terminy i skróty stosowane w opisie normy 

 

1.

 

Akceptacja  (  ACK  –  Acknowledgment  )  –  pakiet  potwierdzający  bezbłędny  odbiór 
danych, wysyłany przez komputer dla operacji IN, bądź urządzenie dla operacji OUT, 
SETUP lub PING. 

2.

 

Brak akceptacji ( NACK – Negative acknowledgment ) – pakiet wysyłany wyłącznie 
przez urządzenie w przypadku braku gotowości do wysłania danych lub informujący 
o braku akceptacji odebranych danych. 

3.

 

Cykliczna  kontrola  nadmiarowa  (  CRC  –  Cyclic  redundancy  check  )  –  nadmiarowe 
bity  kontrolne,  słuŜące  do  kontroli  poprawności  przesyłanych  w  polu  roboczym 
danych.  Bity  te  umieszczane  są  w  polu  sumy  kontrolnej,  sąsiadującym  z  polem 
roboczym. 

4.

 

Ewidencja  urządzeń  USB  (  USB  Enumeration  )  –  detekcja  i  identyfikacja  urządzeń 
podłączonych do magistrali. 

5.

 

Faza operacji (Phase) – zapowiedź, przesył danych lub odpowiedź. 

6.

 

Funkcja  (Function)  –  funkcja  pełniona  przez  urządzenie  przyłączone  do  magistrali 
USB. 

7.

 

Główny  sterownik  (  Host  controller)  –  układy  interfejsowe  komputera  i  związane  z 
nimi oprogramowanie. 

8.

 

Identyfikator  pakietu  (PID  =  Packet  ID)  –  pole  na  początku  pakietu  danych, 
zawierające ośmiobitowy zakodowany typ pakietu. 

9.

 

Klient  (Client)  –  program  uŜytkowy  odwołujący  się  za  pośrednictwem 
oprogramowania  systemowego  do  określonej  funkcji  realizowanej  przez  urządzenie 
wykonawcze. 

10.

 

Kod  odwrotny  bez  powrotu  do  zera  (  NRZI  –  Non  return  to  zero  inverted  )  – 
samosynchronizująca metoda transmisji szeregowej wykorzystana w USB. 

11.

 

Komunikat  (Message)  –  postać  informacji  przesyłanej  potokiem  sterującym.  W  tym 
trybie pierwszym w sekwencji jest pakiet zapowiedzi SETUP. Zawiera on informację 
o rodzaju i kierunku przesyłania danych. 

12.

 

Kontrola dostępu ( PFC – Ping flow control ) – uŜywana dla USB 2.0 (480 Mb/sec) 
kontrola dostępności punktu końcowego dla operacji zapisu. 

13.

 

Kontrola  sekwencji  pakietów  danych  (Data  toggles)  –  mechanizm  kontrolujący 
naprzemienność  parzystych  i  nieparzystych  pakietów  informacji.  Sprawdza  on 
zgodność  identyfikatorów  PID  (DATA0  i  DATA1)  ze  stanem  przełączników 
ustawianych w nadajniku i odbiorniku. 

14.

 

Mikroramka  (  Microframe  )  –  125-mikrosekundowy  przedział  czasu  pomiędzy 
kolejnymi  SOF  (  Start  of  frame)  dla  duŜej  częstotliwości  przysyłu  danych  (480 
Mb/sec). 

15.

 

Preambuła ( PRE - Preamble) – pakiet poprzedzające dane dla urządzeń powolnych. 
Dzięki niemu koncentratory rozpoznają do jakiego urządzenia przesyłane są  dane. 

16.

 

Operacja dzielona (SPLIT Transaction) – operacja polegająca na szybkim przesyłaniu 
przez koncentrator danych odebranych z powolnego urządzenia. 

17.

 

Operacja  magistralowa  (Transaction)  –  inicjowany  przez  komputer  cykl  przesłania 
informacji. 

18.

 

Pakiet  (Packet)  –  blok  danych  przygotowany  do  transmisji.  Składa  się  z  pola 
identyfikatora, pola roboczego i bitów kontrolnych. 

background image

 

19.

 

Początek  ramki  (  SOF  –  Start  of  frame  )  –  początek  ramki  lub  mikroramki,  w 
zaleŜności od szybkości transmisji danych. 

20.

 

Pole  synchronizacji  (SYNC  Field)  –  zakodowana  w  NRZI  postać  siedmiu  lub 
trzydziestu  jeden  (  high  speed  )  zer  zakończonych  jedynką,  poprzedzająca  kaŜdy 
pakiet  danych  przesyłany  magistralą.  Pole  to  słuŜy  do  dostrajania  urządzeń 
odbierających informacje z magistrali. 

21.

 

Potok  (  Pipe  )  –  abstrakcyjny  obiekt,  za  pośrednictwem  którego  program  przesyła 
informację z bufora komputera do urządzenia wykonawczego. 

22.

 

Program  obsługi  magistrali  (  USBD  –  USB  driver  )  –  część  systemowego 
oprogramowania komputera, obsługująca program typu Klient. 

23.

 

Program  obsługi  sterownika  magistrali  (  HCD  –  Host  controller  driver  )  –  część 
systemowego  oprogramowania  komputera  dostosowującego  dane  do  postaci 
wymaganej  na  magistrali  lub  odwrotnie,  wydzielającego  dane  robocze  z  pakietów 
odebranych z USB. 

24.

 

Przekaz  izochroniczny  (Isochronous  transfer)  –  jeden  z  czterech  sposobów 
przesyłania  danych  magistralą  USB.  Polega  na  ciągłej,  izochronicznej  transmisji, 
umoŜliwiającej  zachowanie  zaleŜności  czasowych  pomiędzy  kolejnymi  próbkami 
sygnału analogowego. 

25.

 

Przekaz  masowy  (Bulk  transfer)  –  jeden  z  czterech  sposobów  przesyłania  danych 
magistralą  USB.  Stosowany  do  asynchronicznego  przesyłania  duŜych  pakietów 
danych. 

26.

 

Przekaz  przerwaniowy  (Interrupt  transfer)  –  jeden  z  czterech  sposobów  przesyłania 
danych  magistralą  USB.  Urządzenie  wykonawcze  co  jakiś  czas  przesyła  do 
komputera niewielkie porcje danych, np. zgłoszenie potrzeby obsługi. 

27.

 

Przekaz sterujący ( Control transfer) – jeden z czterech sposobów przesyłania danych 
magistralą  USB.  Asynchroniczna,  inicjowana  przez  oprogramowanie  komputera 
łączność,  polegająca  na  przesyłaniu  komunikatów,    wykorzystywana  typowo  przy 
przesyłaniu deskryptorów konfiguracji, rozkazów i słów stanu. 

28.

 

Punkt  kontrolny  (  Control  Endpoint  )  –  para  punktów  końcowych  (wejściowy  i 
wyjściowy ) o tym samym numerze. Wykorzystywane są one przez potok sterujący. 

29.

 

Punkt  końcowy  (  Endpoint  )  –  jednoznacznie  określony  cel  lub  źródło  danych 
przesyłanych po USB. 

30.

 

Punkt końcowy zablokowany ( STALL – Endpoint stalled) – pakiet z informacją od 
urządzenia  USB  o  blokadzie  punktu  końcowego.  Wymagana  jest  interwencja 
komputera  macierzystego.  Informacja  taka  nigdy  nie  moŜe  być  wysyłana  przez 
komputer! 

31.

 

Ramka (  Frame  ) - przedział czasu (1 ms) na magistrali pracującej z małą lub pełną 
szybkością, obejmujący serię operacji pomiędzy kolejnymi SOF. 

32.

 

Stan  J  –  jeden  z  dwóch  stanów  magistrali,  reprezentujących  wartość  logiczną 
strumienia bitów, przeciwny do K. 

33.

 

Stan  K  –  jeden    z  dwóch  stanów  magistrali,  reprezentujących  wartość  logiczną 
strumienia bitów, przeciwny do J. 

34.

 

Strumień (stream)  - jednokierunkowy, przesyłany magistralą ciąg bitów. 

35.

 

Sygnały logiczne o szybko narastających zboczach, tzn. o czasie narastania 4-20ns. 

36.

 

Sygnały logiczne o wolno narastających zboczach, tzn. o czasie narastania 75-300ns. 

37.

 

Urządzenie (Device) – urządzenie wykonawcze lub koncentrator. 

38.

 

Urządzenie czynne (Active device) – urządzenie dostępne, z włączonym zasilaniem. 

39.

 

Wstawianie  bitów  (  Bit  stuffing  )  -  wstawianie  po  sześciu  jedynkach  zera  – 
przeprowadzane przed kodowaniem NRZI. 

background image

 

40.

 

Zapowiedź  (  Token  Packet  )  –  pakiet  wysyłany  przez  komputer  macierzysty, 
mówiący o tym, jakiego rodzaju operacja zostanie wykonana na magistrali (SETUP, 
IN, OUT). 

41.

 

Zerowanie  (Reset)  –  sygnalizowane  przez  ustalenie  napięcia  na  liniach  D+  i  D- 
poniŜej  0,8  V  na  co  najmniej  10ms.  Urządzenie  po  resecie  jest  podłączone  do 
magistrali, lecz nie ma jeszcze przydzielonego adresu i ustalonej konfiguracji.  

42.

 

Znacznik końca pakietu ( EOF - End of packet ) – po nim na magistrali ustala się stan 
jałowy. 

43.

 

Znacznik początku pakietu ( SOP – Start of packet ) – po nim magistrala przechodzi 
ze stanu jałowego w stan K, od którego rozpoczyna się pole synchronizacji pakietu. 
 
 

3.2. Kodowanie danych metod

ą

 NRZI 

 

Dane  przesyłane  na  magistralę  USB  są  zakodowane  kodem  NRZI  (  tzw.  kod 

odwrotny  bez  powrotu  do  zera,    z  ang.  non-return-zero  inverted  ).  Bity  podawane  są  w 
kolejności  od  najmniej  do  najbardziej  znaczących.  Nie  ma  potrzeby  przesyłania  impulsów 
zegarowych,  poniewaŜ  NRZI  jest  kodem  samosynchronizującym.  Jedynka  logiczna  jest  w 
nim reprezentowana przez brak zmiany, zero natomiast przez zmianę poziomu na liniach D+ 
i  D-.  Jeszcze  przed  zakodowaniem,  po  kaŜdych  sześciu  jedynkach  wstawiane  zostaje  zero. 
Robi się to w celu ochrony pętli PLL przed zablokowaniem. 
 

 

 

Rys. 2.    Kodowanie metodą NRZI 

 

 

Rys. 3.  Mechanizm wstawiania zer przed kodowaniem 

 
 

Przed wstawieniem bitów i kodowaniem NRZI do kaŜdego pakietu danych dołączony 

zostaje bajt synchronizacji ( SYNC, składający się z siedmiu jedynek i zera ) 
 

background image

 

3.3. Cz

ęść

 elektryczna magistrali 

3.3.1 Przewód USB 

 
 

Kabel  magistrali  USB  zawiera  cztery  przewody.  Są  to  dwie  linie  do  przekazywania 

danych: D+ i D- oraz dwie zasilające : VBUS (5 V) i GND. Dla urządzeń przesyłających po 
magistrali  strumień  bitów  z  pełną  lub  duŜą  szybkością  stosuje  się  linie  danych  w  postaci 
ekranowanej  skrętki.  W  urządzeniach  pracujących  z  małą  szybkością  (  klawiatury,  myszy, 
manipulatory  )  moŜna  stosować  zwykły  kabel  bez  ekranowania,  jednak  jego  długość  nie 
powinna być większa niŜ 3m. 
 

 

 

Rys. 4. Przewód USB  

 

 

Przewody  magistrali  USB  są  zakończone  od  strony  komputera  wtykiem  typu  A,  z 

drugiej  wtykiem  typu  B,  o  ile  nie  są  połączone  z  urządzeniem  na  stałe  (np.  klawiatury, 
myszy). 

 

 

Rys.5. Rodzaje wtyczek (gniazd) USB - przekroje 

 
 

 

Rys.6. Najczęściej spotykane złącza USB (typu A – po lewej, typu B – po prawej) 

 

W przenośnych pamięciach, odtwarzaczach plików muzycznych itp. często zrezygnowano z 
przewodu umieszczając jedynie wtyk typu A w obudowie urządzenia. Chcąc podłączyć takie 
urządzenie do komputera moŜna to zrobić wkładając ten wtyk bezpośrednio do gniazda USB 
lub zastosować przedłuŜacz. 
 

Przewody  od  strony  urządzenia  mogą  być  zakończone  wtykami  typu  B  róŜnego 

rodzaju.  Producenci  chcą  często  skłonić  w  ten  sposób  uŜytkowników  ich  produktów  do 
zakupu  oryginalnych  kabli  połączeniowych  lub  związane  jest  to  z  duŜą  miniaturyzacją 
urządzenia  i  brakiem  moŜliwości  umieszczenia  w  jego  obudowie  tradycyjnego  gniazda  dla 
wtyku B.  Dotyczy to głównie cyfrowych aparatów fotograficznych, kamer video, telefonów 
komórkowych,  palmtopów  itd.  Tradycyjny  wtyk  typu  B  stosowany  jest  natomiast  często  w 
drukarkach, skanerach, modemach itd. 
 

background image

 

3.3.2. Elektryczna reprezentacja bitów 

 

Bity  w  obrębie  pakietu  danych  są  reprezentowane  przez  jeden  z  dwóch  stanów:  J  w 

NRZI  odpowiada  stanowi  wysokiemu,  K  natomiast  jest  stanem  przeciwnym.  W  zaleŜności 
od  szybkości  z  jaką  przesyłane  są  magistralą  strumienie  danych,  stany  J  i  K  mają  róŜną 
reprezentacją na róŜnicowych liniach sygnałowych D+ i D-.  
 

Podczas  transmisji  z  małą  szybkością  (1,5  Mb/sec)  stan  J  reprezentowany  jest  przez 

napięcie  róŜnicowe  (D+)  –  (D-)  <  -200mV,  natomiast  stan  K  przez  napięcie  (D+)  –  (D-) 
>200mV. W praktyce zmianą stanów uzyskuje się przez zamianę potencjałów panujących na 
liniach sygnałowych. 
 

Podczas  transmisji  z  pełną  szybkością  obowiązuje  juŜ  odwrotna  logika.  Stan  J 

reprezentowany jest przez napięcie róŜnicowe (D+) – (D-) >200mV, natomiast stan K przez 
napięcie (D+) – (D-) <-200mV.  
 

Przy  duŜej  szybkości  transmisji  danych  obowiązuje  logika  jak  dla  pełnej  szybkości, 

lecz zaostrzono wymagania co do napięcia róŜnicowego. Tak więc stan J jest reprezentowany 
przez  napięcie  róŜnicowe  (D+)  –  (D-)  >300mV,  a  stan  K  przez  napięcie  (D+)  –  (D-)<-
300mV. 
 

Jak widać, o szybkości transmisji mówią róŜnice potencjałów na liniach danych, a o 

aktualnym stanie ( J lub K ) ich znak. 
 

Dodatkowo magistrala moŜe znajdować się w stanie jałowym lub aktywnym. O tym 

decyduje natomiast bezwzględne napięcie panujące na liniach danych odniesione względem 
masy.  Przy  ustalonym  poziomie  logicznym,  napięcie  na  jednej  linii  sygnałowej  musi  być 
większe  od  0,8  V.  Początek  pakietu  SOP  jest  sygnalizowany  wysterowaniem  magistrali  ze 
stanu  jałowego  (w  czasie  którego  ustalają  się  a  magistrali  róŜnice  napięć  charakterystyczne 
dla danej szybkości przesyłu danych ) do stanu K. Jest to pierwszy bit pola synchronizacji. 
 

W  przypadku  transmisji  1.5Mb/sec  i  12Mb/sec  bajt  synchronizacji  SYNC  to 

zakodowany  w  NRZI  ciąg  siedmiu  zer  zakończonych  jedynką,  któremu  odpowiada  ciąg 
KJKJKJKK (jako Ŝe zeru odpowiada zmiana stanu na liniach sygnałowych). Ograniczeniem 
pakietu  jest  EOP,  sygnalizowany  poprzez  sprowadzenie  obu  linii  sygnałowych  na  okres 
dwóch  bitów  poniŜej  poziomu  0,8  V  względem  masy.  Zanim  magistrala  przejdzie  w  stan 
jałowy, konieczne jest po tym ustalenie na magistrali na czas trwania jednego bitu stanu J. 
 
 

 

Tabela 1. Potencjały dla stanu jałowego magistrali USB 2.0 

 

 

 
 

Nieco  inaczej  sygnalizuje  się  początek  pakietu  przy  transmisji  480Mb/sec.  Ciąg 

SYNC  jest  tu  31-bitowy:  KJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKK.  Na  końcu  pakietu 
danych  umieszcza  się  natomiast  zakodowany  w  NRZI  bajt  składający  się  z  zera  i  siedmiu 
jedynek. Tu jednak nie obowiązuje zasada polegająca na dokładaniu zera po kaŜdych sześciu 
jedynkach.  Zgodnie  z  zasadami  kodowania,  zero  i  siedem  jedynek  uzyskuje  się  poprzez 
zmianę  ostatniego  stanu  jaki  panował  na  magistrali  podczas  przesyłania  informacji  (zero)  a 
następnie  przytrzymanie  zmienionego  stanu  na  okres  odpowiadający  trwaniu  siedmiu 
jedynek,  jako  Ŝe  jedynkom  odpowiada  brak  zmiany  stanu.  Jeśli  ostatni  bit  informacji  był 
reprezentowany  przez  stan  K,  to  mieć  będziemy  JJJJJJJJ  (K->J  –  zero,  JJJJJJJ  –  siedem 
jedynek), po których na magistrali ustali się stan jałowy ( D+ i D- na poziomie GND ). 

background image

 

 

Rys.7.  Początek transmisji USB 

 

 

Rys.8.  Sygnalizacja końca pakietu dla małej i pełnej transmisji 

 

3.4. Warstwy USB 

 
 

USB    posiada  warstwę  fizyczną,  logiczną  oraz  funkcjonalną.  Na  najniŜszym 

poziomie,  tzn.  w  warstwie  fizycznej,  znormalizowany  został  interfejs  magistrali,  za 
pośrednictwem  którego  są  nadawane  i  odbierane  pakiety  danych.  W  warstwie  logicznej 
omawiana  jest  organizacja  przepływu  danych  pomiędzy  urządzeniem  logicznym,  a 
naleŜącym do oprogramowania systemowego programem obsługi magistrali. Abstrakcyjnym 
obiektem  słuŜącym  do  przesyłania  informacji  jest  potok.  Pomimo  złoŜoności  warstwy 
fizycznej  (drzewiasta  architektura)  komputer  macierzysty  łączy  się  z  kaŜdym  z  urządzeń, 
jakby  było  podłączone  bezpośrednio  do  portu  we-wy.  W  warstwie  funkcjonalnej 
uwidocznione  są  natomiast  wyłącznie  relacje  pomiędzy  urządzeniem  wykonawczym,  a 
programem  Klient,  który  się  do  niego  odwołuje.  Z  jego  poziomu  obsługa    urządzeń 
wykonawczych jest niezaleŜna od przydzielonego im miejsca w przestrzeni adresowej. 
 
 

W normie USB opisano cztery kategorie składowych systemu. Są to : 

 
 

1. Program Klient, odwołujący się za pośrednictwem oprogramowania systemowego 

USB do określonej funkcji urządzenia wykonawczego. 
 

2. Oprogramowanie systemowe, obejmujące programy obsługi magistrali i sterownika 

w ramach systemu operacyjnego. 
 

3. Oprogramowanie i układy interfejsowe komputera macierzystego. 

 

4. Urządzenie USB, czyli koncentrator lub urządzenie wykonawcze. 

 

3.5. Przepływ danych 

 
 

O  przepływie  danych  decyduje  program  Klient,  związany  z  funkcją  pełnioną  przez 

urządzenie  wykonawcze.  Rozpatrywany  jest  przepływ  danych  z  bufora  komputera  do 
punktów  końcowych,  którymi  są  jednoznacznie  rozpoznawalne  części  urządzeń 

background image

 

10 

zewnętrznych.  Program  Klient  przesyła  informacje  wykorzystując  potok.  KaŜdy  punkt 
końcowy jest określony przez: 
- parametry dostępu do magistrali, 
- wymagane pasmo transmisji danych, 
- adres punktu końcowego ( numer punktu i kierunek transmisji ), 
- rozmiar pola roboczego w największym obsługiwanym pakiecie, 
- sposobu obsługi błędów, 
- rodzaju transmisji. 
Wszystkie  te  elementy  muszą  być  uwzględniane  w  programie  odnoszącym  się  do  danego 
punktu  końcowego.  Do  czasu  skonfigurowania  punkty  końcowe  pozostają  w  stanie 
nieokreślonym,  będąc  niedostępnymi  dla  komputera  macierzystego.  Zgodnie  z  normą  w 
kaŜdym urządzeniu musi znajdować się punkt końcowy o numerze zero. Za pośrednictwem 
tego  punktu  inicjowana  jest  praca  urządzeń  logicznych  oraz  ustalana  ich  konfiguracja. 
Punkty  te  konfigurowane  są  natychmiast  po  podłączeniu  urządzenia  do  zasilania  i  linii 
danych  magistrali  USB.  Urządzenie  moŜe  posiadać  maksymalnie  16  punktów  końcowych 
(dla pełnej i duŜej szybkości) lub 3 (dla małej szybkości) łącznie z punktem zerowym. 
 

3.5.1. Potok – rodzaje 

 
 

Potok  to  abstrakcyjny  obiekt  realizujący  przepływ  danych  pomiędzy  programem 

Klient  a  urządzeniem  wykonawczym.  Układy  związane  z  magistralą  nie  badają  treści 
przesyłanych  przez  niego  informacji,  te  są  istotne  jedynie  z  punktu  widzenia  programu 
sterującego funkcjami urządzenia wykonawczego.  
 
 

WyróŜnia się dwa rodzaje potoku: 

 
1.  Potok  danych  –  jednokierunkowy  strumień  bitów  nieistotnych  dla  systemu.  Za  jego 
pomocą realizowane są przekazy przerwaniowe, umoŜliwiające urządzeniom USB okresową 
wymianę danych z komputerem macierzystym.  Potok danych wykorzystywany jest takŜe w 
przekazach  masowych  (  stosowanych  do  przekazywania  informacji  ze  zmienną  szybkością, 
dostosowaną  do  aktualnie  dostępnego  pasma  transmisji)  i  izochronicznych  (słuŜących  do 
przesyłania danych w funkcji ściśle powiązanej z czasem, np. przekaz dźwięku) . 
2.  Potok  sterujący  –  informacje  przesyłane  w  obu  kierunkach,  posiadające  ściśle  określony 
format. Wykorzystywany  jest przy  konfiguracji  urządzeń USB. Przesyłane nim komunikaty 
odwołują się zerowego punktu końcowego 
 

3.5.2. Strumie

ń

 

 
 

Strumieniem nazywamy ciąg bitów o określonym kierunku  transmisji, przesyłanych 

potokiem.  Ich  wartości  nie  są    istotne  dla  warstwy  logicznej  i  fizycznej  magistrali.  KaŜdy 
strumień  musi  mieć  oddzielny  punkt  końcowy  w  urządzeniu  wykonawczym  ze  względu  na 
kierunek przepływu danych. Bity danych opuszczają potok w tej samej kolejności, w której 
zostały  do  niego  wprowadzone.  Strumień  jest  przypisany  do  jednego  programu  Klient.  Nie 
ma  zatem  problemu  konieczności  systemowej  kontroli,  czy  róŜne  programy  Klient 
(wysyłając strumień danych) nie chcą odwołać się do tego samego potoku. 
 

Normalnie  nie  ma  moŜliwości  przesłania  do  określonego  punktu  końcowego 

kolejnego  strumienia,  jeśli  obsługa  poprzedniego  nie  zostanie  zakończona.  Komputer  moŜe 
jednak przerwać transmisje w momencie zaistnienia błędów w komunikacji. Punkt końcowy 

background image

 

11 

moŜe  w  pewnym  stopniu  kontrolować  przepływ  danych  przesyłając  negatywną  odpowiedź 
NAK.  Sygnalizuje  on  w  ten  sposób  brak  gotowości  do  nadawania.  Nie  oznacza  to  jednak 
odrzucenia  zgłoszenia  Ŝądania  dostępu  do  urządzenia  (  IRP  –  I/O  requet  packet  ).  Podczas 
obsługi tego samego zgłoszenia NAK moŜe być przesyłany wielokrotnie. Nie oznacza on teŜ 
wystąpienia błędu. 

3.6. Tryby przesyłania danych 

 
 

W  normie  USB  2.0  zdefiniowane  zostały  cztery  tryby  przesyłania  danych:  przekazy 

sterujące, przerwaniowe, izochroniczne i masowe. Aby zrealizować transmisję danych naleŜy 
wykonać  szereg  operacji    magistralowych.  KaŜda  z  takich  operacji  wymaga  przesłania 
informacji  sterujących  a  następnie  danych  właściwych.  Na  początku  kaŜdej  informacji  z 
komputera  macierzystego  wysyłana  jest  informacja  adresowana  do  określonego  punktu 
końcowego  urządzenia  wykonawczego.  Następnie  zostaje  przesłanych  kilka  pakietów 
danych, po czym odbiornik musi przesłać informację o poprawnym zakończeniu transmisji. 
 

3.6.1. Przekazy steruj

ą

ce 

 
 

Obsługa przekazów sterujących jest obowiązkowa. Przesyłają one Ŝądania i odbierają 

informacje  o  stanie  bądź  konfiguracji  urządzenia  wykonawczego.  W  deskryptorze  punktu 
końcowego  (  w  polu  wMaxPacketSize  )  zapisana  jest  maksymalna  długość  pakietu  danych 
jaki  moŜe  być  odebrany  lub  wysłany  na  magistralę  przez  urządzenie  podczas  przekazu 
sterującego.  Zgodnie  z  normą,  mogą  to  być  8,  16,  32  lub  64  bajty.  W  praktyce  urządzenia 
pracujące z duŜą szybkością powinny móc obsłuŜyć najdłuŜsze pakiety, natomiast urządzenia 
pracujące z małą szybkością przesyłają co najwyŜej 8 bitów. 
 

 

Rys. 9.  Kolejne etapy przekazu sterującego 

 
 

SETUP  zawiera  zakodowaną  informację  Ŝądania  dostępu  do  informacji  sterujących. 

W  etapie  transmisji  danych  dane  przesyłane  są  tylko  w  jednym  kierunku,  zgodnie  z 
załoŜeniami  potoku,  strumienia  i  przypisanego  mu  jednego  punktu  końcowego.  Ostatnim 
etapem  przekazu  sterującego  jest  etap  statusu.  Od  poprzedniego  etapu  odróŜnia  go  zmiana 
kierunku transmisji.  

background image

 

12 

 

Rys.10. Przepływ informacji w przekazach sterujących 

 

 

Urządzenie  w  czasie  etapu  transmisji  lub  statusu  ma  prawo  informować  komputer  o 

zajętości.  Ten  ponawia  wtedy  komunikację.  W  przypadku  operacji  SETUP  urządzenie  nie 
moŜe przesyłać takiej informacji. Albo przesyła ACK ( jest gotowe do pracy ) albo odrzuca 
uszkodzony  pakiet  nie  przesyłając  Ŝadnej  informacji.  Wysyłany  na  koniec  transmisji 
komunikat  stanu  moŜe  sygnalizować  jedna  z  następujących  sytuacji:    wykonanie  operacji 
zakończyło  się  pomyślnie,    czegoś  brakuje  do  poprawnego  zakończenia  sekwencji  operacji 
lub urządzenie wciąŜ jeszcze jest zajęte wykonywaniem operacji.

 

Czas  dostępny  dla  tego  

trybu  przesyłania  danych  zmienia się zaleŜnie od  liczby urządzeń  aktualnie dołączonych 
do magistrali  i  jak często zgłaszane są przekazy danych. Dlatego teŜ nie moŜna przewidzieć 
jak długo trwać będzie przekaz sterujący skierowany do określonego punktu końcowego

.  

 
 

Tabela 2. Komunikaty o wykonaniu przekazu sterującego 

 

 

3.6.2. Przekazy przerwaniowe 

 
 

Przekazy  przerwaniowe  polegają  na    tym,    Ŝe    łączność    z  danym  punktem  

końcowym      nawiązywana    jest    okresowo    w    równych,    wcześniej  zaprogramowanych 
odstępach czasu (cykliczne odpytywanie urządzeń peryferyjnych, przerwania w określonych 
odstępach czasu).  

background image

 

13 

Częstotliwość  ponawiania  takich  przekazów    ustalana  jest  podczas  inicjacji  potoku 

przerwaniowego.    Do    tego    celu    wykorzystywana    jest    informacja    zawarta    w    opisie  
punktu  końcowego    (w    polu  bInterval).    Urządzenia    wykorzystujące    pełną    częstotliwość  
transmisji  mogą    mieć    ustawione    wartości    z    przedziału    od    1    ms    do    255    ms,  
przesyłające natomiast  z  małą częstotliwością - jedna z wartości od 10 ms do 255 ms.  
Protokół    przepływu    danych    i    parametry    magistrali    ograniczają    liczbę    przekazów 
przerwaniowych  moŜliwych  do  umieszczenia  w  ramce, wynoszącą  do  71  pakietów 8-
bajtowych, przesyłanych  przez  urządzenia  pracujące  z   szybkością  transmisji 12Mb/sec.  
Dla urządzeń  działających  z  szybkością 1.5Mb/sec,  liczba  ta  jest  ograniczona  do  6-ciu  
pakietów 8-bajtowych. 

 

Rys. 11. Przepływ danych w przekazach przerwaniowych 

 

 

Obsługa  przerwania  charakteryzuje  się  błyskawicznym  przekazywaniem  danych  o 

niewielkim  rozmiarze  (często  jest  to  kilka  bitów).  Pozwala  ono  na  bardzo  szybkie 
powiadomienie  kontrolera  o  konieczności  obsługi  przerwania  zgłoszonego  przez  dołączone 
do USB urządzenie zewnętrzne, np. mysz komputerową. Jeśli np. mysz oczekuje na obsługę, 
to  po  otrzymaniu  pakietu  identyfikatora  IN  z  kontrolera  (komputera)  wyśle  do  niego  dane. 
Poprawnie wykonana transmisja zostanie potwierdzona pakietem ACK. Jeśli kontroler chce 
przesłać  dane  np.  do  myszy,  wysyła  na  magistralę  pakiet  OUT  oraz  dane  do  urządzenia. 
Mysz  z  kolei  po  poprawnym  odbiorze  danych  wysyła  ACK  lub  przy  błędnym  zakończeniu 
transmisji pakiet NACK lub STALL. 

 

 

3.6.3. Przekazy izochroniczne 

 
 

Przekaz    izochroniczny      przenosi    jednokierunkowy  strumień    danych.  Ten    tryb  

pracy    ma    zapewnić    stała    szybkość    transmisji    niezaleŜnie    od  wielkości    ruchu  
generowanego  na  magistrali.  Transmisję  izochroniczną  stosuje  się  do przesyłania danych 
audiowizualnych, zwłaszcza sygnałów głosowych i wideofonicznych, czyli takich, w których  
wymagany    jest    stały    przepływu    pakietów,    docierających    do    odbiornika    w    równych 
odstępach czasu i w kolejności nadania. 
 

W  ramce    (przy    pełnej    częstotliwości)    moŜna    zmieścić    maksymalnie    88    8-

bajtowych    pakietów  operacji    izochronicznych,    a    przy    duŜej    częstotliwości,    podczas  

background image

 

14 

trwania    jednej    mikroramki,  magistralą  USB  2.0  moŜna  przesłać  163  8-bajtowe  pakiety 
danych.  
 

W    normie    nie    sprecyzowano    sposobu    kontroli    przebiegu    transmisji    danych  

przesyłanych  izochronicznie.    Urządzeniom,    wykorzystującym    ten  przekaz,    w    systemie  
USB  zagwarantowano  jedynie  dostęp  do  magistrali  bez  opóźnień  ponad  wyznaczony  limit 
(uwaŜa    się,    Ŝe    podczas    prowadzonej    „na    Ŝywo”    transmisji    danych    audiowizualnych 
opóźnienia    w    przekazach    pakietowych    między    skrajnymi    punktami    transmisji    nie  
powinny  przekraczać:    50  ms    dla    danych    obrazowych  i  150  ms    dla    fonii)  oraz  stałą 
częstotliwość  przepływu  danych  w  potoku,  bez    podejmowania    próby    ratowania    danych  
przez  ponawianie  transmisji w momencie wykrycia błędów. 
 

 

Rys. 12. Przepływ danych w przekazach izochronicznych 

 

 

Rezerwacja  kanału  transmisji  izochronicznej  przez  kontroler  USB  odbywa  się  na 

podstawie  deklaracji  złoŜonej  przez  urządzenie  na  etapie  konfiguracji  magistrali.  W  tym 
trybie błędy nie są korygowane, bowiem brak tu pakietów potwierdzających ACK. Transfer 
ten  ma  jednak  pierwszeństwo  przed  transmisją  asynchroniczną.  Oparty  na  zapytaniach 
kontrolera  systemu  przydział  pasma  w  kanale  asynchronicznym  mógłby  spowodować 
niedopuszczalne  opóźnienia  zakodowanych  sygnałów  wizyjnych  lub  dźwiękowych,  a  tym 
samym zdyskwalifikować całkowicie sens przekazów izochronicznych. 

3.6.4. Przekazy masowe 

 
 

Przekazy    masowe    stosuje  się    do    przesyłania    duŜych    porcji    danych,    jeśli 

dopuszczalna jest przy tym zmienność czasu transmisji.   
Przekaz  taki  składa  się  z  jednej  lub  kilku  operacji  IN  albo  OUT.  Dla  danych  w  pakietach 
przekazów  masowych  moŜna    deklarować  maksymalną  wielkość    pola    roboczego  
wynoszącą    8,  16,    32    lub    64    bajty.    Nie    jest    jednak  wymagane  aby    wielkość    pola  
danych    zawsze  osiągała    zadeklarowana  wartość.  Ten  tryb  przesyłania  danych  moŜe  być 
wykorzystywany  jedynie  w  urządzeniach  pracujących  z  pełną  częstotliwością. 
Przepustowość  magistrali  umoŜliwia  ulokowanie  w  ramce  do  71  ośmiobajtowych  pakietów 
przekazów masowych.  

background image

 

15 

 

Rys. 13. Przepływ danych w przekazach masowych 

 

 

Ten  sposób  transmisji  gwarantuje  powtarzanie  pakietów  uszkodzonych,  zapewniając 

bardzo  duŜą  niezawodność  i  spójność  przekazywanych  danych.  Nie  gwarantuje  on  jednak 
określonej  przepustowości  i  limitu  czasu  transmisji,  bowiem  obie  te  wartości  zaleŜą  od 
chwilowej  aktywności  magistrali  USB.  Nie  stanowi  to  jednak  tu  Ŝadnego  problemu, 
poniewaŜ  typowe  zastosowanie  trybu  masowego  to  obsługa  pamięci  masowych,  odbiór 
danych ze skanera bądź wysyłanie do drukarki. 
 

background image

 

16 

4. Rodzaje pakietów 

 
 

W normie opisującej USB 2.0 w części „Protokół komunikacyjny”  wyspecyfikowano 

strukturę  pakietów  danych  przesyłanych  za  pośrednictwem  linii  D+  i  D-  magistrali. 
Informacje  przesyłane  zostają  na  magistralę  począwszy  od  LSB  do  MSB,  zapełniając  bufor 
pamięci  począwszy  od  najniŜszego  adresu.  KaŜdy  pakiet  poprzedza  ciąg  bitów 
synchronizujących SYNC, a kończy znacznik końca pakietu EOP ( End of packet ). Ostatnie 
dwa  bity  synchronizacji  KK  wyznaczają  poziom  odniesienia  dla  bitów  w  uŜytkowej  części 
pakietu danych, na początku której znajduje się identyfikator - PID. 
 

Typowy pakiet, pomijając pola SYNC i EOP, składa się z identyfikatora (PID), pola 

roboczego (zawierającego dane lub instrukcje sterujące) oraz bitów kontrolnych CRC. 
 

 

Rys. 14.  Część uŜytkowa pakietu 

 

 

Pole  PID  składa  się  z  czterobitowego  kodu  rodzaju  pakietu  i  czterech  bitów 

kontrolnych. Punkt końcowy urządzenia wykonawczego powinien ignorować pakiet, jeśli nie 
jest  przystosowany  do  obsługi  danego  rodzaju  pakietu  bądź  nadesłany  pakiet  jest 
uszkodzony.  Za  uszkodzony  pakiet  uwaŜa  się  taki,  w  którym  wartości  kolejnych  bitów 
kontrolnych nie są negacją bitów kodu rodzaju pakietu. 
 

Magistralą  USB  przesyłane  są  cztery  rodzaje  pakietów  danych.  Są  to  zapowiedzi, 

dane, odpowiedzi i pakiety specjalne. KaŜdy rodzaj ma swój 4-bitowy identyfikator. 
 

Tabela 3. Rodzaje pakietów ( strzałka oznacza kierunek transmisji ) 

background image

 

17 

 

 

4.1. Pakiety zapowiedzi 

 
 

Pakiety  zapowiedzi  informują  o  rodzaju  nadchodzących  informacji  (IN,  OUT, 

SETUP).  Na  końcu  takiego  pakietu  umieszczone  jest  5-bitowe  pole  cyklicznej  kontroli 
nadmiarowej  CRC5.  Kontrolą  CRC  objęte    jest  pole    robocze    (pole  PID  ma  swoje  bity 
kontrolne).  Łącznie  część    uŜytkowa    pakietu    zapowiedzi  ma  3    bajty.    Jeśli    przesyłany 
pakiet  zostanie rozpoznany właśnie jako  pakiet  zapowiedzi,  a  po  3 bajtach  nie  zakończy  
się  EOP,  to musi on być uniewaŜniony.

  

 

Szczególnie waŜnym pakietem zapowiedzi jest przesyłany w jednakowych odstępach 

czasu SOF ( Start of frame, co 1,00 ms ±0,0005 ms - dla małej i pełnej szybkości i  co  125 
µs ±0,0625 µs  -  dla  duŜej  szybkości ). W przypadku zmiany szybkości transmisji (SPLIT, 
retransmisja danych odebranych przez koncentrator z małą szybkością) SOF moŜe być takŜe 

background image

 

18 

generowany  w  koncentratorze.  W  11-bitowym  polu  roboczym  umieszczane  są  kolejne 
numery  ramek.  Po  przepełnieniu  (7FFh)  zliczanie  następuje  od  początku.  Przy  szybkich 
transmisjach danych (ramki o kolejnych numerach co 1 ms) dodatkowo „przypominany” jest 
numer  bieŜącej  ramki    co  125µs.  Stąd  teŜ  uznaje  się,  Ŝe  w  jednej  ramce  mieści  się  osiem 
mikroramek o tym samym numerze. 
 

 

 

Rys.15. Ramki i 

mikroramki

 

 

 

Za  pomocą  pozostałych  pakietów  zapowiedzi  (11-bitowe)  przesyłane  są 

siedmiobitowe  adresy  urządzenia  (stąd  do  magistrali  USB  moŜna  dołączyć  127  urządzeń) 
oraz  czterobitowe  adresy  jego  punktu  końcowego  (dlatego  teŜ  poza  zerowym  punktem 
końcowym w urządzeniu wykonawczym moŜe istnieć 15 dodatkowych punktów). 
 

4.2. Pakiety danych 

 
 

Pole    robocze    pakietu    danych    składa    się    z  maksymalnie    8    bajtów    dla  małej,  

1023  bajtów  dla  pełnej  i  1024  bajtów  dla  duŜej częstotliwości przesyłu danych .  Liczba  
bajtów w polu roboczym musi być całkowita.  
 

 

Rys.16. Format pakietu danych 

 

 

Podczas transmisji wielokrotnych, tzn. takich, w których duŜe pakiety danych zostały 

podzielone  na  mniejsze  porcje,  przesyłane  w  kolejnych  ramkach  danych,  sprawdza  się 
naprzemienność parzystych i nieparzystych pakietów. Do kontroli słuŜą  identyfikatory PID 
(DATA0  i  DATA1)  oraz  oddzielne  dla  odbiornika  i  nadajnika  jednobitowe  przełączniki. 
Przełączniki te zmieniają stan po poprawnie wykonanej funkcji pełnionej przez nadajnik lub 
odbiornik. 
 

4.3. Pakiety odpowiedzi 

 
 

Pakiety odpowiedzi składają się wyłącznie z identyfikatora PID zakończonego EOF. 

Rodzaj odpowiedzi zawarty jest w typie pakietu. Jako odpowiedź moŜe być przesłany ACK, 
NAK,  STALL  lub  NYET.  Znaczenie  skrótów  i  moŜliwości  wysyłki  określonego  pakietu 
zostały opisane w rozdziale 2.3.1. Warto pamiętać, Ŝe wyróŜnia się odpowiedzi na operację 
IN,  OUT  lub  SETUP.  W  przypadku  punktów  końcowych  transmitujących  z  duŜa 
częstotliwością  zwykły  mechanizm  powstrzymywania    transmisji    za  pomocą  odpowiedzi 

background image

 

19 

NAK  jest niewystarczający. Stosowany jest  zatem bardziej  złoŜony  protokół   PING,  w  
którym dodatkowo  wykorzystywana  jest odpowiedź NYET

.

 

 

4.4. Pakiety specjalne 

 
 

Wśród  pakietów  specjalnych  wyróŜniamy  trzy  zapowiedzi  i  jedną  odpowiedź. 

Informacje  poprzedzone  zapowiedzią  PRE  adresowane  są  do  urządzeń  wykonawczych 
pracujących  z  małą  szybkością.  Koncentrator  otrzymujący  informację  z  zapowiedzią  PRE 
uaktywnia  mechanizm  wolno  narastających  zboczy,  by  mógł  bezbłędnie  przekazać  taką 
informację  do  wolnego  urządzenia.  Mechanizm  ten  zostaje  wyłączony  wraz  z  otrzymaniem 
znacznika  EOP.  Nie  istnieje  niebezpieczeństwo  błędnego  odczytania  pakietu  z  zapowiedzią 
PRE,  bowiem  wolno  zmienne  bity  nie  mogą  utworzyć  kombinacji,  która  zostałaby 
zinterpretowana jako poprawna w ramach transmisji z pełną szybkością. Dane przekazywane 
z  wolnych  urządzeń  przez  koncentratory  w  górę  sieci  są  traktowane  na  równi  z  danymi 
przesyłanymi z pełną lub duŜą częstotliwością. 

Kolejnym  pakietem  specjalnym  jest  24-bitowa  zapowiedź  PING.  SłuŜy  ona  do 

sprawdzania  dostępności  urządzenia  wykonawczego  w  celu  wykonania  operacji  OUT  przy 
pracach  z  duŜą  szybkością.  Ma  ona  zabezpieczyć  przed  niepotrzebnym  zajmowaniem 
magistrali  podczas  braku  gotowości  urządzenia  do  wykonania  zadania.  Do  momentu 
uzyskania  gotowości  program  sterujący  wstrzymuje  wysłania  danych  do  urządzenia.  Na 
zapowiedź PING punkt końcowy odpowiada wysyłając ACK lub NAK. 

Następnym  pakietem  specjalnym  jest  4-bajtowy  SPLIT.  Poprzedza  on  operację 

SPLIT,  polegającą  na  retransmisji  z  duŜą  szybkością  danych,    pochodzących  z  wolnego 
urządzenia.  WyróŜniamy  dwa  rodzaje  pakietu  SPLIT:  rozpoczynający  i  kończący 
retransmisję. 

 

 

Rys. 17.  Pakiet rozpoczynający SPLIT (SSPLIT) 

 

 

Rys. 18.  Pakiet kończący SPLIT (CSPLIT) 

5. Kontrola poprawno

ś

ci przesyłania danych 

 
 

Poprawność komunikacji jest kontrolowana na kilka sposobów. Od strony odbiornika 

sprawdza  się,  czy  po  sekwencji  sześciu  jedynek  wstawiane  jest  zero  oraz  analizowane  są 
wartości bitów kontrolnych PID oraz sum kontrolnych CRC. W przypadku wystąpienia błędu 
odbywa  się  powtórzenie  wysyłki  nie  odebranych  poprawnie  danych.  MoŜe  zaistnieć  jednak 
sytuacja,  w  której  dane  odebrane  są  poprawnie,  ale  przekłamana  zostanie  informacja  o 
poprawnym odebraniu danych, przesyłana do nadajnika. Wtedy nadajnik, ”myśląc”, Ŝe dane 
nie  zostały  odebrane,  ponawia  ich  wysyłkę,  w  efekcie  czego  te  same  dane  dochodzą  do 
odbiornika  drugi  raz.  Mówimy  wtedy  o  retransmisji  (  nie  naleŜy  mylić  z  retransmisją 

background image

 

20 

SPLIT!).  Aby  wyeliminować  zjawisko  przypadkowego  wielokrotnego  odbioru  tych  samych 
danych,  sprawdzana  jest  zgodność  identyfikatorów  PID  (DATA0  i  DATA1)  oraz 
przełączników odbiornika i nadajnika. 
 

Istnieje  jeszcze  mechanizm  cyklicznej  kontroli  nadmiarowej  (CRC).  Przed 

wstawieniem  zer  po  kaŜdych  sześciu  jedynkach  i  przed  kodowaniu  NRZI  są  dodatkowo 
umieszczane w polu sumy kontrolnej bity nadmiarowe CRC. Mechanizm kontroli CRC jest 
skuteczny  zarówno  przy  przekłamaniach  jedno  jak  i  dwubitowych,  a  polega  on  na 
traktowaniu  sekwencji  bitów  jako  wielomianu  ze  współczynnikami  0  lub  1.  Do 
wygenerowanie bitów CRC stosowany jest wielomian G(x). Operacja polega na dopisaniu do 
sumy kontrolnej odpowiadającej przesyłanemu ciągowi bitów takiej sumy, by całość dzieliła 
się bez reszty przez wielomian generacyjny G(x). Jeśli przy dzieleniu wystąpi reszta, oznacza 
to błąd transmisji danych. 
 

W systemie USB stosuje się dwa rodzaje kontroli CRC: pięciobitową sumę kontrolną 

CRC5 dla zapowiedzi i szesnastobitową CRC16 dla pakietów danych. Postaci wielomianów 
generacyjnych  dla  tych  przypadków  zostały  dokładnie  określone  w  normie  USB  2.0. 
Najczęściej stosowany wielomian generacyjny ma postać CRC16 = X16 + X15 + X2 + 1. 

6. Rodzaje operacji 

 
 

WyróŜniamy  operacje  ustawiania,  zapisu,  odczytu  i  operacje  izochroniczne.  W 

ostatniej mamy do czynienia tylko z pakietem zapowiedzi i pakietem danych, w pozostałych 
obowiązują  zapowiedź,  pakiet  danych  i  odpowiedź,  przesyłana  w  kierunku  przeciwnym  do 
kierunku przesyłania danych.  
 

 

Urz

ą

dzenia do obsługi transmisji szeregowej USB 

 
 

Magistrala  USB  naleŜy  do  róŜnicowych,  a  względne  stany  linii  danych  określają 

wartości  logiczne  oraz  mówią  o  szybkości  transmisji.  Bezwzględne  poziomy  napięć  na 
liniach sygnałowych informują natomiast o tym, czy magistrala jest zajęta, czy teŜ znajduje 
się  w  stanie  jałowym.  Aby  móc  zatem  zbudować  urządzenie  do  komunikacji  po  magistrali 
USB  potrzebny  jest  bardzo  skomplikowany  hardware,  posiadający  wbudowane  bardzo 
dokładne  źródła  napięciowe,  pozwalające  zrealizować  linie  D+  i  D-.    Tak  więc  nie  jest  juŜ 
moŜliwe  łatwe  napisanie  programu  realizującego  magistralę  USB,  tak  jak  moŜna  to  zrobić 
dla  I

2

C  lub  UART  (stosując  dodatkowo  przetwornicę  np.  MAX232  lub  MAX202) 

dysponując  stosunkowo  prostym  mikrokontrolerem.  Chcąc  budować  urządzenie  USB 
projektant  musi  teŜ  dodatkowo  dysponować  sterownikami,  dzięki  którym  będzie  mógł 
wymieniać  dane  pomiędzy  programem  Klient  a  urządzeniem  przyłączonym  do  magistrali. 
Dodatkowy wymóg stanowi duŜa szybkość przesyłania danych po USB,  zatem wybrany do 
projektu mikroprocesor musi mieć moŜliwość pracy z odpowiednio duŜą częstotliwością.  
 

Na rynku elektronicznym istnieje wiele mikrokontrolerów, które moŜna wykorzystać 

jako  trzon  nowo  powstającego  urządzenia.  Producenci  wyraźnie  podają  w  notach 
aplikacyjnych,  czy  zaimplementowany  hardware  do  obsługi  magistrali  USB  jest  zgodne  ze 
standardem  1.1  czy  2.0.  NaleŜy  pamiętać,  Ŝe  pojawienie  się  mikrokontrolerów 
przystosowanych  do  obsługi  USB  2.0  wcale  nie  eliminuje  starszych  wersji  produktów. 
Kompatybilność  USB  2.0  z  wcześniejszym  standardem  daje  nam  gwarancję  poprawnego 
działania  urządzenia,  zatem  do  obsługi  wolnozmiennych  procesów  moŜna  bez  problemu 
wykorzystać tańszy mikrokontroler pracujący w standardzie USB 1.1 
 

Istnieją  takŜe  autonomiczne  układy  obsługujące  warstwę  fizyczną  magistrali  USB. 

Przesyła  się  do  nich  jedynie  dane  do  wysyłki  (lub  odczytuje  odebrane  informacje)  i 

background image

 

21 

uaktywnia  odpowiednie  funkcje  przeprowadzane  na  szynie  USB.  Są  to  moduły,  które 
podłączone do komputera z zainstalowanymi sterownikami są gotowe do pracy.