Jeg kender googles svar og wikipedias svar til ovenstående spørgsmål. Men jeg har et mere specifikt spørgsmål ved hånden. USB-hubs har mange indgående og port og kun en udgående port, jeg er i stand til at bruge sige n-antal enheder sammen på grund af dette. Men jeg forstår ikke hvordan kan en USB-port udføre dataoverførsler med n-antal USB-porte?
hvordan kan det sende forskellige data til alle USB-porte på samme tid?

*

skematisk

simuler dette kredsløb – Skematisk oprettet ved hjælp af CircuitLab

*.

Kommentarer

  • Næsten den samme måde, som din netværksrouter kan forbinde en LAN-port (internettet) til flere enheder. Hvert slutpunkt (USB-enhed) tildeles en adresse, og hubberne dirigerer simpelthen anmodninger fra værten til den korrekte enhed ved at holde styr på, hvilken adresse der er på hvilken port. Det ' er meget enklere for USB i den forstand, at der kun er en master (værtsporten), der starter alle transaktionerne.
  • @TomCarpenter Så hvordan ville USB-porten sende forskellige data ' s sammen?
  • Værtsporten beder et specifikt slutpunkt om at tale. Slutpunkter taler kun tilbage, når værten beder om det.
  • @TomCarpenter Men de bruges alle samtidigt og ikke en efter en, men alle sammen.
  • Husk at USB-bussen kan køre med op til 480 Mbps på USB 2.0. Værten taler kun nogensinde med et slutpunkt ad gangen, men det taler til dem alle i rækkefølge og skifter mellem dem så hurtigt, at du ikke kunne ' ikke fortælle det. Det samme gør netværk. " Hej, mus på port 1, fortæl mig, hvis du ' er flyttet. Okay, nu har tastatur på port 2 nogen tastetryk til at rapportere? Nu er du der på port 3, flashdrev, gem disse data for mig. Er der andre, jeg har brug for at tale med? nej, ok så mus på port 1, fortæl mig hvis du ' har flyttet … "

Svar

Det handler alt om voldgift. Ethvert system, der kræver, at flere enheder skal forbindes, har brug for en eller anden måde at bestemme, hvem der skal tale når. Der er forskellige ordninger, som du ville forvente, afhængigt af applikationen.

Et almindeligt eksempel – i netværk har vi mange noder, der alle taler med hinanden. Dette gøres ved, at hver node har en adresse (f.eks. IP adresse), og når en node ønsker at tale med en anden node, sender den en pakke til den adresse. Du har derefter enheder såsom routere, der tager pakker, der kommer ind på flere porte og videresender dem til den korrekte port. Voldgiften er gjort ved hjælp af hukommelse til at gemme pakker, indtil destinationsporten er ledig.


Nu på USB. Dette er faktisk meget enklere end netværk, fordi ikke alle noder er ens. Du har to slags, en vært og et slutpunkt. Der er kun én vært, men kan være mange slutpunkter. I dette tilfælde er voldgift meget lettere, fordi kun værtsporten har lov til at tale. Slutpunkter må kun tale, når værten bliver bedt om det, og værten taler kun nogensinde med et slutpunkt ad gangen.

For host- > slutpunktspakker videregiver USB-hubber simpelthen anmodningen fra værten til alle slutpunkterne. Da alle slutpunkter har en adresse, vil kun den, som anmodningen blev adresseret til, gøre noget med det (f.eks. Svare), vil alle andre ignorere pakken.

For slutpunkt- > værtpakker, værten sender først en pakke til et bestemt slutpunkt efter adresse for at sige " du kan tale nu " , og derefter skal dette slutpunkt straks sende et svar. Fordi kun et slutpunkt får lov til at tale på et givet tidspunkt, dirigerer USB-huben simpelthen pakken fra den port, der svarer på en anmodning fra værten.


Med hensyn til hvordan værten fungerer ud hvilke enheder der er tilsluttet, og hvordan slutpunkt får deres adresse, opnås dette ved optælling.

Alle værts- og hub-porte har pull-down-modstande (15kOhm) på D + og D-linjerne. Disse sætter datalinjerne for den port i en kendt tilstand, når der ikke er tilsluttet en enhed, en tilstand, hvor porten overhovedet ikke sender nogen data over D + / D-linjer.

Når en enhed er fastgjort, gør det sig kendt ved at forbinde enten D + (fuld hastighed) eller D- (lav hastighed) datalinje til VCC ved hjælp af en 1,5 kOhm modstand. Dette udløser en optællingshændelse. Porten begynder derefter processen med at konfigurere enheden og tildele en adresse.Hvis du tilslutter to enheder samtidigt, tælles de en ad gangen .

Hvis der ikke er hubber, snakker værten simpelthen med den nye enhed og indstiller den. Hvis der er hubs i systemet, er det hubben, der rapporterer, at den nye enhed er tilsluttet . Hvis en hub rapporterer, at en ny enhed er tilsluttet, vil værten instruere huben om at nulstille den nye enhed og starte kommunikation. Under nulstillingen får slutpunktet en standardadresse på 0 (*). Værten kan derefter tale med slutpunktet ved hjælp af standardadressen og konfigurere den med en unik adresse, der ikke er nul, der gør det muligt for den at vide, hvornår den bliver talt til.

(*) Fordi kun en enhed er nogensinde opregnet ad gangen, vil adressen 0 altid være unik for den nytilsluttede enhed.


Du kan så spørge " godt hvordan kan jeg så have flere enheder, der alle taler på samme tid? ". Sig, at du har en mus, et tastatur og et flashdrev, der alle er tilsluttet den samme USB-hub. Vi ved alle, at du kan bruge musen og tastaturet på samme tid, mens du også kopierer filer til / fra dit flashdrev, men hvis kun en enhed kan tale ad gangen, hvordan kan det være muligt?

Nå , det hele kommer ned på det faktum, at de få hundrede millisekunder, det tager for din hjerne at bemærke, at du har trykket på en tast og forventer, at skærmen opdateres, er en evighed for computeren. En USB 2.0-grænseflade kan køre med op til 480 Mbps (USB 3.1 kan køre op til 10 Gbps!), Hvilket betyder, at selvom værten kun nogensinde taler til et slutpunkt på et givet tidspunkt, skifter det mellem dem så hurtigt, at du kan “t fortæller det” gør det.

USB-vært: " Hej, mus på port 1, fortæl mig, hvis du er flyttet. Ok nu tastatur på port 2, har du nogen tastetryk til at rapportere? Nu er du der på port 3, flashdrev, gem disse data for mig. En anden, jeg har brug for at tale med? nej, ok så, mus på port 1, fortæl mig, hvis du har flyttet … "

Menneskelig: " Åh se , computeren bemærkede, at jeg lige flyttede musen, trykkede på en tast på mit tastatur og kopierede et billede til flashdrevet, alt på samme tid! "

Værtsenheden holder styr på, hvilken e ndpoint-adresser bruges og vil sende pakker til hver i rækkefølge eller efter behov (dvs. når operativsystemet anmoder om adgang til en bestemt enhed). Så selvom det ikke alt sker samtidigt, er voldgiften så hurtig, at computerne ikke kan se forskellen.

Kommentarer

  • Til tilføj: USB-enheder (kun “afbryde” slutpunkter, for at være præcise) kan anmode om at blive pollet med et bestemt interval ned til 1 ms. Så længe du ikke har hundreder af inputenheder, vil du aldrig bemærke en forsinkelse.
  • Hvordan ved værten, hvilke slutpunkter der er forbundet? Dette synes ikke ' t faktisk at svare på det originale spørgsmål om hubber. Hvordan interagerer de i denne proces ? Hvordan interagerer interaktionen ved optælling?
  • @YonaAppletree-optælling. Værter og hubber scanner alle deres porte for enhedstilslutninger – de registrerer en 1,5 kOhm pull-up-modstand på enten D + (Full Speed) eller D- (Lav hastighed). Jeg ' Jeg tilføjer nogle oplysninger om, hvordan slutpunkter tildeles en adresse.
  • @YonaAppletree med hensyn til nav under drift, svaret taler om det allerede. For vært til slutpunkt: " USB-hubs videregiver simpelthen anmodningen fra værten til alle slutpunkter ". For slutpunkt til vært: " Fordi kun et slutpunkt har lov til at tale på et givet tidspunkt, vil USB-huben simpelthen dirigere pakken fra den port, der reagerer "

Svar

Kortere svar: værten sender data, der er adresseret til en bestemt enhed ( som var foreløbig “opregnet”), en transaktion ad gangen, sekventielt. Navet sender alle pakker til alle enheder. En enhed reagerer kun på transaktioner, der er adresseret til den. Det er alt sammen sandt for HS-enheder.

For FS- og LS-enheder er processen lidt mere kompliceret. Den bruger “transaktionsoversættere”, der er bygget i hvert hub til hver port, der oversætter det -kaldte “splittransaktioner” i LS- eller FS-trafik.

Kommentarer

  • Hvad med USB 3?
  • USB3-hubs er mere intelligent til Super-Speed-link og brug eksplicit routing til enhed / slutpunkter. USB2-sektionen forbliver den samme. Se afsnit 3.1 " Arkitektonisk oversigt " af de seneste USB3.1-specifikationer, usb.org/developers/docs/usb_31_052016.zip

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *