Jeg vet googles svar og wikipedias svar på ovennevnte spørsmål. Men jeg har et mer spesifikt spørsmål tilgjengelig. USB-hubber har mange innkommende og port og bare en utgående port, jeg er i stand til å si si antall enheter sammen på grunn av dette. Men jeg forstår ikke hvordan kan en USB-port gjøre dataoverføring med n-antall USB-porter?
hvordan kan den sende forskjellige data til alle USB-porter samtidig?

*

skjematisk

simulere denne kretsen – Skjematisk opprettet ved hjelp av CircuitLab

*.

Kommentarer

  • Omtrent på samme måte som nettverksruteren din kan koble en LAN-port (internett) til flere enheter. Hvert endepunkt (USB-enhet) tildeles en adresse, og navene rettes rett og slett forespørsler fra verten til riktig enhet ved å holde oversikt over hvilken adresse som er i hvilken port. Det ' er mye enklere for USB i den forstand at det bare er en master (vertsporten) som initierer alle transaksjonene.
  • @TomCarpenter Så hvordan ville USB-porten sendt forskjellige data ' s sammen?
  • Vertsporten ber et bestemt sluttpunkt om å snakke. Endepunkter snakker bare tilbake når verten ber om det.
  • @ TomCarpenter Men de blir alle brukt samtidig og ikke en etter en, men alle sammen.
  • Husk at USB-bussen kan kjøres med opptil 480 Mbps på USB 2.0. Verten snakker bare med ett sluttpunkt om gangen, men det snakker med dem alle sekvensielt og bytter mellom dem så fort at du ikke kunne ' ikke fortelle. Det samme gjør nettverk. " Hei, mus på port 1, fortell meg om du ' har flyttet. Ok nå har tastatur på port 2 noen tastetrykk for å rapportere? Nå er du der på port 3, flash-stasjon, lagre disse dataene for meg. Noen andre jeg trenger å snakke med? nei, ok da, mus på port 1, fortell meg om du ' har flyttet … "

Svar

Alt handler om voldgift. Ethvert system som krever at flere enheter kobles til, trenger en eller annen måte å bestemme hvem som skal snakke når. Det er forskjellige ordninger som du forventer avhengig av applikasjon.

Et vanlig eksempel – i nettverk har vi mange noder som alle snakker med hverandre. Dette gjøres ved at hver node har en adresse (f.eks. IP adresse), og når en node ønsker å snakke med en annen node, sender den ut en pakke til den adressen. Du har da enheter som rutere som tar pakker som kommer inn på flere porter og videresender dem til riktig port. Voldgiften er gjort ved å bruke minne til å lagre pakker til destinasjonsporten er ledig.


Nå på USB. Dette er faktisk mye enklere enn nettverk, fordi ikke alle noder er like. Du har to slags, en vert, og et endepunkt. Det er bare en vert, men kan være mange endepunkter. I dette tilfellet er voldgift mye lettere fordi bare vertsporten har lov til å snakke. Endepunkter er bare tillatt når de blir bedt om det av verten , og verten snakker bare med ett sluttpunkt om gangen.

For verts- > endepunktpakker, sender USB-hubene ganske enkelt forespørselen fra verten til alle sluttpunktene. Fordi alle endepunkter har en adresse, vil bare den som forespørselen ble adressert til gjøre noe med den (f.eks. Svare), vil alle andre ignorere pakken.

For endepunkt- > vertspakker, verten sender først en pakke til et bestemt sluttpunkt etter adresse for å si " du kan snakke nå " , og da må sluttpunktet umiddelbart sende et svar. Fordi bare ett sluttpunkt har lov til å snakke til enhver tid, vil USB-huben ganske enkelt dirigere pakken fra hvilken port som svarer på en forespørsel fra verten.


Når det gjelder hvordan verten fungerer ut hvilke enheter som er koblet til, og hvordan endepunkt får adressen deres, oppnås dette ved oppregning.

Alle verts- og hubporter har nedtrekksmotstander (15kOhm) på D + og D-linjene. Disse setter datalinjene til den porten i en kjent tilstand når det ikke er koblet til en enhet, en tilstand der porten ikke vil sende noen data over D + / D-linjer i det hele tatt.

Når en enhet er festet, gjør den seg kjent ved å koble enten D + (fullhastighet) eller D- (lavhastighets) datalinje til VCC ved hjelp av en 1,5 kOhm motstand. Dette utløser en oppføringshendelse. Porten vil da begynne prosessen med å konfigurere enheten og tildele en adresse.Hvis du skulle koble til to enheter samtidig, blir de oppført en om gangen .

Hvis det ikke er hubber, snakker verten bare til den nye enheten og setter den opp. Hvis det er nav i systemet, er det navet som rapporterer at den nye enheten er festet . Hvis en hub rapporterer at en ny enhet er koblet til, vil verten instruere huben om å tilbakestille den nye enheten og starte kommunikasjonen. Under tilbakestillingen får sluttpunktet en standardadresse på 0 (*). Verten kan deretter snakke med sluttpunktet ved hjelp av standardadressen, og konfigurere den med en unik adresse som ikke er null, slik at den kan vite når den blir snakket med.

(*) Fordi bare en enhet alltid blir oppført om gangen, vil adressen 0 alltid være unik for den nylig tilkoblede enheten.


Du kan da spørre " vel hvordan kan jeg da ha flere enheter som alle snakker samtidig? ". Si at du har en mus, et tastatur og en flash-stasjon som alle er koblet til samme USB-hub. Vi vet alle at du kan bruke musen og tastaturet samtidig mens du også kopierer filer til / fra flash-stasjonen, men hvis bare en enhet kan snakke om gangen, hvordan kan det være mulig?

Vel , alt kommer ned på det faktum at de få hundre millisekundene det tar for hjernen din å legge merke til at du har trykket på en tast og forventer at skjermen oppdateres, er en evighet for datamaskinen. Et USB 2.0-grensesnitt kan kjøre med opptil 480 Mbps (USB 3.1 kan kjøre med opptil 10 Gbps!), Noe som betyr at selv om verten bare snakker med ett sluttpunkt til enhver tid, går det mellom dem så raskt at du kan «t tell it» s doing it.

USB-vert: " Hei, mus på port 1, fortell meg om du har flyttet. Ok nå har tastatur på port 2 noen tastetrykk til å rapportere? Nå er du der på port 3, flash-stasjon, lagre disse dataene for meg. Noen andre jeg trenger å snakke med? nei, ok da, mus på port 1, fortell meg om du har flyttet … "

Human: " Å se , datamaskinen la merke til at jeg bare flyttet musen, trykket på en tast på tastaturet og kopierte et bilde til flash-stasjonen, alt på samme tid! "

Vertenheten holder oversikt over hvilke e ndpoint-adresser brukes og vil sende pakker til hver enkelt i rekkefølge eller etter behov (dvs. når operativsystemet ber om tilgang til en bestemt enhet). Så selv om ikke alt skjer samtidig, er voldgiften så rask at datamaskinene som kjæledyr ikke kan se forskjellen.

Kommentarer

  • Til legg til: USB-enheter (bare «avbryt» endepunkter, for å være presis) kan be om å bli pollet med et bestemt intervall ned til 1 ms. Så lenge du ikke har hundrevis av inngangsenheter, vil du aldri merke en forsinkelse. / li>
  • Hvordan vet verten hvilke endepunkter som er koblet til? Dette ser ikke ' t ut til å svare på det opprinnelige spørsmålet om nav. Hvordan samhandler de i denne prosessen ? Hvordan samhandler opptellingen?
  • @YonaAppletree-oppregning. Verter og nav skanner alle porter for enhetstilkoblinger – de oppdager en 1,5 kOhm pull-up-motstand på enten D + (Full Speed) eller D- (Lav hastighet). Jeg ' Jeg vil legge til litt informasjon om hvordan endepunkter tildeles en adresse.
  • @YonaAppletree når det gjelder nav under drift, svaret snakker om det allerede. For vert til endepunkt: " USB-hubber sender ganske enkelt forespørselen fra verten til alle endepunktene ". For endepunkt å være vert: " Fordi bare ett endepunkt har lov til å snakke til enhver tid, vil USB-huben ganske enkelt dirigere pakken fra hvilken port som svarer "

Svar

Kortere svar: verten sender data som er adressert til en bestemt enhet ( som var foreløpig «oppregnet»), en transaksjon om gangen, sekvensielt. Navet sender alle pakkene til alle enheter. En enhet reagerer bare på transaksjoner som er adressert til den. Det er sant for HS-enheter.

For FS- og LS-enheter er prosessen litt mer komplisert. Den bruker «transaksjonsoversettere» som er bygd i hvert knutepunkt for hver port, som oversetter det -kalt «delte transaksjoner» i LS- eller FS-trafikk.

Kommentarer

  • Hva med USB 3?
  • USB3-hubber er mer intelligent for Super-Speed-kobling, og bruk eksplisitt ruting til enhet / endepunkter. USB2-delen forblir den samme. Se avsnitt 3.1 " Arkitektonisk sammendrag " av de siste USB3.1-spesifikasjonene, usb.org/developers/docs/usb_31_052016.zip

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *