Știu răspunsul Google și răspunsul Wikipedia pentru întrebarea de mai sus. Dar am la îndemână o întrebare mai specifică. Hub-urile USB au multe intrări și porturi și doar un singur port de ieșire, din această cauză sunt capabil să folosesc numărul de dispozitive. Dar, nu înțeleg cum poate un port USB să facă transferuri de date cu numărul n de porturi USB?
cum poate trimite date diferite către toate porturile USB în același timp?

*

schematic

simulează acest circuit – Schema creată utilizând CircuitLab

*.

Comentarii

  • Aproape același mod în care routerul dvs. de rețea poate conecta un port LAN (internet) la mai multe dispozitive. Fiecărui punct final (dispozitiv USB) i se atribuie o adresă, iar hub-urile pur și simplu redirecționează cererile de la gazdă la dispozitivul corect, urmărind ce adresă este pe ce port. ' este mult mai simplu pentru USB, în sensul că există un singur master (portul gazdă) care inițiază toate tranzacțiile.
  • @TomCarpenter Atunci cum portul USB ar trimite date diferite ' împreună?
  • Portul gazdă cere unui punct final specific să vorbească. Endpoint-urile vorbesc înapoi numai la cererea gazdei.
  • @TomCarpenter Dar toate sunt utilizate simultan și nu unul câte unul, ci toate împreună.
  • Amintiți-vă că magistrala USB poate rulează până la 480 Mbps pe USB 2.0. Gazda vorbește doar cu un singur punct final la un moment dat, dar vorbește cu toți secvențial și comutând între ele atât de repede încât nu s-ar putea spune '. Același lucru pe care îl fac rețelele. " Hei, mouse-ul pe portul 1, spune-mi dacă te-ai mutat ' Bine, acum tastatura de pe portul 2 aveți apăsări de taste pentru a raporta? Acum, tu acolo pe portul 3, unitate flash, stochează aceste date pentru mine. Altcineva cu care trebuie să vorbesc? nu, ok atunci, mouse-ul pe portul 1, spune-mi dacă te-ai mutat ' … "

Răspuns

Totul este legat de arbitraj. Orice sistem care necesită conectarea mai multor dispozitive are nevoie de un mod de a determina cine ar trebui să vorbească când. Există scheme diferite așa cum v-ați aștepta în funcție de aplicație.

Un exemplu obișnuit – în rețea avem multe noduri, toate vorbind între ele. Acest lucru se face prin fiecare nod având o adresă (de exemplu, IP adresa), iar atunci când un nod dorește să vorbească cu un alt nod, acesta trimite un pachet către acea adresă. Apoi aveți dispozitive precum routere care preiau pachetele care intră pe mai multe porturi și le redirecționează către portul corect. Arbitrajul este finalizat folosind memoria pentru a stoca pachete până când portul de destinație este liber.


Acum pe USB. Acest lucru este de fapt mult mai simplu decât rețeaua, deoarece nu toate nodurile sunt egale. Aveți două tipuri, un gazdă și un punct final. Există doar o singură gazdă, dar pot fi multe puncte finale. În acest caz, arbitrajul este mult mai ușor, deoarece doar portul gazdă are voie să vorbească după bunul plac. Punctele finale sunt permise să vorbească numai atunci când gazda le cere , iar gazda vorbește doar cu un singur punct final la un moment dat.

Pentru pachetele de puncte finale host- >, hub-urile USB transmit pur și simplu cererea de la gazdă la toate punctele finale. Deoarece toate punctele finale au o adresă, numai cel căruia i s-a adresat solicitarea va face ceva cu ea (de exemplu, răspunde), toate celelalte vor ignora pachetul.

Pentru punct final- > pachete de gazdă, gazda trimite mai întâi un pachet la un anumit punct final prin adresă pentru a spune " puteți vorbi acum " , și apoi acel punct final trebuie să trimită imediat un răspuns. Deoarece un singur punct final este permis să vorbească la un moment dat, hub-ul USB va direcționa pur și simplu pachetul de la oricare port răspunde la o solicitare din partea gazdei.


În ceea ce privește modul în care funcționează gazda ce dispozitive sunt atașate și cum își obține adresa finală, acest lucru se realizează prin enumerare.

Toate porturile gazdă și hub au rezistențe pull-down (15kOhm) pe liniile D + și D-. Acestea plasează liniile de date ale acelui port într-o stare cunoscută atunci când nu există niciun dispozitiv atașat, o stare în care portul nu va transmite deloc date pe liniile D + / D.

Când un dispozitiv este atașat, se face cunoscut prin conectarea liniei de date D + (full-speed) sau D- (low speed) la VCC folosind un rezistor de 1,5kOhm. Aceasta declanșează un eveniment de enumerare. Portul va începe apoi procesul de configurare a dispozitivului și atribuirea unei adrese.Dacă ar fi să conectați simultan două dispozitive, acestea vor fi enumerate pe rând .

Dacă nu există hub-uri, gazda vorbește pur și simplu cu noul dispozitiv și îl configurează. Dacă există hub-uri în sistem, este hub-ul care raportează că noul dispozitiv este atașat . Dacă un hub raportează că este conectat un dispozitiv nou, gazda va instrui hub-ul să reseteze noul dispozitiv și să pornească comunicațiile. În timpul resetării, punctului final i se dă o adresă implicită de 0 (*). Gazda poate vorbi apoi cu punctul final folosind adresa implicită și o poate configura cu o adresă unică diferită de zero, care îi va permite să știe când se vorbește cu ea.

(*) Deoarece un singur dispozitiv este enumerată vreodată la un moment dat, adresa 0 va fi întotdeauna unică pentru noul dispozitiv atașat.


S-ar putea să întrebați, " bine cum pot avea apoi mai multe dispozitive care vorbesc în același timp? ". Să presupunem că aveți un mouse, o tastatură și o unitate flash conectate la același hub USB. Știm cu toții că puteți utiliza mouse-ul și tastatura în același timp, în timp ce copiați fișiere pe / de pe unitatea flash, dar dacă un singur dispozitiv poate vorbi la un moment dat, cum poate fi posibil acest lucru?

Ei bine , totul se reduce la faptul că cele câteva sute de milisecunde necesare creierului pentru a observa că ați apăsat o tastă și vă așteptați ca ecranul să se actualizeze este o eternitate pentru computer. O interfață USB 2.0 poate rula până la 480 Mbps (USB 3.1 poate rula până la 10 Gbps!), Ceea ce înseamnă că, deși gazda vorbește vreodată cu un singur punct final la un moment dat, se deplasează între ele atât de repede încât puteți „Nu-i spuneți că o face.

Gazdă USB: " Hei, mouse-ul pe portul 1, spune-mi dacă te-ai mutat. Bine, acum tastatura din portul 2 ai apăsări de taste pentru a raporta? Acum ești acolo pe portul 3, unitate flash, stochează aceste date pentru mine. Oricine altcineva trebuie să vorbesc? nu, ok, atunci mouse-ul pe portul 1, spune-mi dacă te-ai mutat … "

Om: " Oh, uite , computerul a observat că tocmai mi-am mutat mouse-ul, am apăsat o tastă de pe tastatură și am copiat o imagine pe unitatea flash, în același timp! "

Dispozitivul gazdă urmărește care e Se utilizează adrese ndpoint și vor trimite pachete către fiecare în mod secvențial sau după cum este necesar (adică când sistemul de operare solicită accesul la un anumit dispozitiv). Deci, deși nu se întâmplă totul simultan, arbitrajul este atât de rapid încât computerele de companie nu pot face diferența.

Comentarii

  • adăugați: dispozitivele USB (numai punctele finale „întrerupere”, mai precis) pot solicita interogarea la un anumit interval de până la 1 ms. Atâta timp cât nu aveți sute de dispozitive de intrare, nu veți observa niciodată o întârziere.
  • Cum știe gazda ce puncte finale sunt conectate? De asemenea, acest lucru nu ' pare să răspundă la întrebarea inițială despre hub-uri. Cum interacționează în acest proces ? Cum interacționează în enumerare?
  • @YonaAppletree enumerare. Gazdele și hub-urile scanează toate porturile lor pentru conexiuni de dispozitiv – detectează un rezistor de tracțiune de 1,5kOhm fie pe D + (Full Speed), fie pe D- (Viteză redusă). Am ' voi adăuga câteva informații cu privire la modul în care punctele finale sunt atribuite unei adrese.
  • @YonaAppletree în ceea ce privește hub-urile în timpul funcționării, răspunsul vorbește despre asta deja.Pentru gazdă până la punctul final: " hub-urile USB transmit pur și simplu cererea de la gazdă la toate punctele finale ". Pentru punctul final pentru gazdă: " Deoarece numai un punct final este permis să vorbească la un moment dat, hub-ul USB va purta pur și simplu pachetul de la oricare port răspunde "

Răspuns

Răspuns mai scurt: gazda trimite date care sunt adresate unui anumit dispozitiv ( care a fost „enumerat” preliminar), o tranzacție la rând, secvențial. Hubul transmite toate pachetele pe toate dispozitivele. Un dispozitiv răspunde doar la tranzacțiile care îi sunt adresate. Asta este tot, adevărat pentru dispozitivele HS.

Pentru dispozitivele FS și LS procesul este puțin mai complicat. Folosește „traducători de tranzacții” care sunt încorporați în fiecare hub pentru fiecare port, care traduc astfel -numite „tranzacții divizate” în trafic LS sau FS.

Comentarii

  • Dar USB 3?
  • Huburile USB3 sunt mai inteligent pentru legătura Super-Speed și utilizați rutare explicită către dispozitiv / puncte finale. Secțiunea USB2 rămâne aceeași. Consultați secțiunea 3.1 " Rezumat arhitectural " dintre cele mai recente specificații USB3.1, usb.org/developers/docs/usb_31_052016.zip

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *