Ik ken het antwoord van Google en het antwoord van Wikipedia op de bovenstaande vraag. Maar ik heb een meer specifieke vraag bij de hand. USB-hubs hebben veel inkomende en poorten en slechts één uitgaande poort, hierdoor kan ik zeg maar een n-aantal apparaten samen gebruiken. Maar ik begrijp niet hoe kan een USB-poort gegevensoverdracht uitvoeren met een n-aantal USB-poorten?
hoe kan het verschillende gegevens tegelijkertijd naar alle USB-poorten sturen?

*

schema

simuleer dit circuit – Schema gemaakt met CircuitLab

*.

Opmerkingen

  • Vrijwel dezelfde manier waarop uw netwerkrouter een LAN-poort (internet) kan verbinden met meerdere apparaten. Elk eindpunt (USB-apparaat) krijgt een adres toegewezen en de hubs routeren eenvoudigweg verzoeken van de host naar het juiste apparaat door bij te houden welk adres zich op welke poort bevindt. Het ' is veel eenvoudiger voor USB in de zin dat er maar één master (de hostpoort) is die alle transacties initieert.
  • @TomCarpenter Hoe dan zou de USB-poort verschillende gegevens ' s samen verzenden?
  • De hostpoort vraagt een specifiek eindpunt om te praten. Eindpunten praten alleen terug als de host daarom vraagt.
  • @TomCarpenter Maar ze worden allemaal tegelijkertijd gebruikt en niet een voor een, maar allemaal samen.
  • Onthoud dat de USB-bus draaien tot 480 Mbps op USB 2.0. De host praat altijd maar met één eindpunt tegelijk, maar hij praat opeenvolgend met ze allemaal en schakelt zo snel tussen hen dat je het niet ' kon vertellen. Hetzelfde als netwerken. " Hé, muis op poort 1, vertel me of je ' hebt verplaatst. Oké, toetsenbord op poort 2, heb je toetsaanslagen om te melden? Nu ben je daar op poort 3, flashstation, sla deze gegevens voor mij op. Is er nog iemand met wie ik moet praten? nee, oké dan, muis op poort 1, vertel me of je ' hebt verplaatst … "

Antwoord

Het heeft allemaal te maken met arbitrage. Elk systeem waarbij meerdere apparaten moeten worden aangesloten, heeft een manier nodig om te bepalen wie er moet praten wanneer. Er zijn verschillende schemas zoals je zou verwachten, afhankelijk van de applicatie.

Een bekend voorbeeld – in netwerken hebben we veel knooppunten die allemaal met elkaar praten. Dit wordt gedaan doordat elk knooppunt een adres heeft (bijv. adres), en wanneer een knooppunt met een ander knooppunt wil praten, stuurt het een pakket naar dat adres. Je hebt dan apparaten zoals routers die pakketten ontvangen die op meerdere poorten binnenkomen en ze doorsturen naar de juiste poort. De arbitrage is gedaan met het gebruik van geheugen om pakketten op te slaan totdat de bestemmingspoort vrij is.


Nu naar USB. Dit is eigenlijk veel eenvoudiger dan netwerken omdat niet alle knooppunten gelijk zijn. Je hebt twee soorten, een host en een eindpunt. Er is maar één host, maar er kunnen veel eindpunten zijn. In dit geval is arbitrage veel gemakkelijker omdat alleen de hostpoort naar believen mag praten. Eindpunten mogen alleen praten wanneer daarom wordt gevraagd door de host , en de host praat altijd met één eindpunt tegelijk.

Voor host- > -eindpuntpakketten geven de USB-hubs het verzoek van de host eenvoudig door aan alle eindpunten. Omdat alle endpoints een adres hebben, zal alleen het adres waaraan het verzoek is gericht er iets mee doen (bijv. Reageren), alle andere zullen het pakket negeren.

Voor endpoint- > host pakketten, de host stuurt eerst een pakket naar een specifiek eindpunt op adres om te zeggen " je kunt nu praten " , en dan moet dat eindpunt onmiddellijk een antwoord sturen. Omdat slechts één eindpunt tegelijk mag praten, zal de USB-hub het pakket eenvoudigweg routeren vanaf de poort die reageert op een verzoek van de host.


In termen van hoe de host werkt uit welke apparaten zijn aangesloten, en hoe het eindpunt hun adres krijgt, dit wordt bereikt door middel van opsomming.

Alle host- en hubpoorten hebben pull-down weerstanden (15kOhm) op de D + en D- lijnen. Deze zetten de datalijnen van die poort in een bekende staat wanneer er geen apparaat is aangesloten, een toestand waarin de poort helemaal geen data over D + / D- lijnen verzendt.

Wanneer een apparaat is aangesloten aangesloten, maakt het zichzelf bekend door de D + (volledige snelheid) of D- (lage snelheid) datalijn aan te sluiten op VCC met behulp van een weerstand van 1,5 kOhm. Dit activeert een opsommingsgebeurtenis. De poort begint dan met het configureren van het apparaat en het toewijzen van een adres.Als u twee apparaten tegelijk zou aansluiten, , worden ze een voor een opgesomd .

Als er geen hubs zijn, praat de host gewoon met het nieuwe apparaat en stelt het in. Als er hubs in het systeem zijn, is het de hub die meldt dat het nieuwe apparaat is aangesloten . Als een hub meldt dat er een nieuw apparaat is aangesloten, zal de host de hub instrueren het nieuwe apparaat te resetten en de communicatie op te starten. Tijdens de reset krijgt het eindpunt het standaardadres 0 (*). De host kan dan met het eindpunt praten met behulp van het standaardadres, en het configureren met een uniek niet-nul adres, zodat het weet wanneer er wordt gepraat.

(*) Omdat er maar één apparaat is ooit wordt opgesomd, zal het adres 0 altijd uniek zijn voor het nieuw aangesloten apparaat.


Je zou dan kunnen vragen, " hoe kan ik dan meerdere apparaten tegelijk laten praten? ". Stel dat u een muis, een toetsenbord en een flashstation hebt aangesloten op dezelfde USB-hub. We weten allemaal dat u uw muis en toetsenbord tegelijkertijd kunt gebruiken terwijl u ook bestanden van / naar uw flashstation kopieert, maar als er maar één apparaat tegelijk kan praten, hoe is dat dan mogelijk?

Welnu komt het allemaal neer op het feit dat de paar honderd milliseconden die je hersenen nodig hebben om te merken dat je een toets hebt ingedrukt en verwacht dat het scherm wordt bijgewerkt, een eeuwigheid zijn voor de computer. Een USB 2.0-interface kan tot 480 Mbps werken (USB 3.1 kan tot 10 Gbps draaien!), Wat betekent dat, hoewel de host altijd maar met één eindpunt praat, het zo snel tussen de twee eindpunten wisselt dat je kunt “t tell it” doet het.

USB-host: " Hé, muis op poort 1, vertel me of je “bent verhuisd. Oké, toetsenbord op poort 2 heb je nog toetsaanslagen om te melden? Nu ben je daar op poort 3, flashstation, bewaar deze gegevens voor mij. Is er iemand anders met wie ik moet praten? Nee, oké dan, muis op poort 1, vertel me of je “bent verhuisd … "

Mens: " Oh kijk , merkte de computer dat ik zojuist mijn muis bewoog, op een toets op mijn toetsenbord drukte en tegelijkertijd een afbeelding naar de flashdrive kopieerde! "

Het hostapparaat houdt bij welke e ndpoint-adressen worden gebruikt en sturen pakketten naar elk opeenvolgend of indien nodig (d.w.z. wanneer het besturingssysteem toegang vraagt tot een specifiek apparaat). Dus hoewel het niet allemaal tegelijkertijd gebeurt, is de arbitrage zo snel dat de computers die de mens azen “het verschil niet kunnen zien.

Opmerkingen

  • Aan add: USB-apparaten (alleen interrupt-eindpunten, om precies te zijn) kunnen verzoeken om te worden gepolld met een bepaald interval tot 1 ms. Zolang je geen honderden invoerapparaten hebt, zul je nooit een vertraging opmerken.
  • Hoe weet de host welke eindpunten zijn verbonden? Ook lijkt dit ' t niet echt de oorspronkelijke vraag over hubs te beantwoorden. Hoe werken ze samen in dit proces ? Hoe werken de interacties in opsomming?
  • @YonaAppletree enumeration. Hosts en hubs scannen al hun poorten op apparaatverbindingen – ze detecteren een pull-upweerstand van 1,5 kOhm op D + (Full Speed) of D- (Lage snelheid). Ik ' zal wat informatie toevoegen over hoe aan eindpunten een adres wordt toegewezen.
  • @YonaAppletree in termen van hubs tijdens gebruik, het antwoord spreekt daar al over. Voor host naar eindpunt: " USB-hubs geven het verzoek van de host eenvoudig door aan alle eindpunten ". Voor eindpunt naar host: " Omdat slechts één eindpunt tegelijk mag praten, stuurt de USB-hub het pakket eenvoudigweg vanaf de poort die reageert "

Antwoord

Korter antwoord: de host stuurt gegevens die zijn geadresseerd aan een bepaald apparaat ( die voorlopig “opgesomd” was), één transactie tegelijk, opeenvolgend. De hub zendt alle pakketten naar alle apparaten. Een apparaat reageert alleen op transacties die eraan zijn geadresseerd. Dat is alles, waar voor HS-apparaten.

Voor FS- en LS-apparaten is het proces een beetje ingewikkelder. Het gebruikt “transactievertalers” die in elke hub voor elke poort zijn ingebouwd, die zo vertalen -genoemd “gesplitste transacties” in LS- of FS-verkeer.

Opmerkingen

  • Hoe zit het met USB 3?
  • USB3-hubs zijn intelligenter voor Super-Speed link, en gebruik expliciete routering naar apparaat / endpoints. USB2-sectie blijft hetzelfde. Zie sectie 3.1 " Architecturale samenvatting " van de meest recente USB3.1-specificaties, usb.org/developers/docs/usb_31_052016.zip

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *