Jag vet googles svar och wikipedias svar på ovanstående fråga. Men jag har en mer specifik fråga till hands. USB-hubbar har många inkommande och portar och bara en utgående port, jag kan använda säg n-antal enheter tillsammans på grund av detta. Men jag förstår inte hur kan en USB-port göra dataöverföringar med n-antal USB-portar?
hur kan det skicka olika data till alla USB-portar samtidigt?

*

schematisk

simulera denna krets – Schematisk bild skapad med CircuitLab

*.

Kommentarer

  • På ungefär samma sätt som din nätverksrouter kan ansluta en LAN-port (internet) till flera enheter. Varje slutpunkt (USB-enhet) tilldelas en adress och naven dirigerar helt enkelt förfrågningar från värden till rätt enhet genom att hålla reda på vilken adress som finns på vilken port. ' är mycket enklare för USB i den meningen att det bara finns en master (värdporten) som initierar alla transaktioner.
  • @TomCarpenter Sedan hur skulle USB-porten skicka olika data ' tillsammans?
  • Värdporten ber en specifik slutpunkt att prata. Slutpunkterna pratar bara tillbaka när värden frågar till dem.
  • @TomCarpenter Men de används alla samtidigt och inte en efter en utan alla tillsammans.
  • Kom ihåg att USB-bussen kan kör upp till 480 Mbps på USB 2.0. Värden pratar bara någonsin med en slutpunkt i taget, men den pratar med dem alla i följd och växlar mellan dem så snabbt att du inte kunde ' inte berätta. Samma sak nätverk gör. " Hej, mus på port 1, berätta för mig om du ' har flyttat. Ok nu tangentbord på port 2 har du några tangenttryckningar att rapportera? Nu är du där på port 3, flash-enhet, lagra dessa data för mig. Någon annan som jag behöver prata med? nej, ok då, mus på port 1, berätta för mig om du ' har flyttat … "

Svar

Det handlar bara om skiljedom. Alla system som kräver att flera enheter är anslutna behöver bestämma vem som ska prata när. Det finns olika system som du kan förvänta dig beroende på applikation.

Ett vanligt exempel – i nätverk har vi många noder som alla pratar med varandra. Detta görs genom att varje nod har en adress (t.ex. IP adress), och när en nod vill prata med en annan nod, skickar den ut ett paket till den adressen. Du har sedan enheter som routrar som tar paket som kommer in på flera portar och vidarebefordrar dem till rätt port. gjort med minne för att lagra paket tills destinationsporten är ledig.


Nu till USB. Detta är faktiskt mycket enklare än nätverk eftersom inte alla noder görs lika. Du har två sorter, en värd och en slutpunkt. Det finns bara en värd, men det kan finnas många slutpunkter. I det här fallet är skiljedom mycket enklare eftersom endast värdporten har möjlighet att prata efter behag. Slutpunkter får bara prata när värden ombeds och värden pratar bara med en slutpunkt åt gången.

För värd- > slutpunktspaket skickar USB-naven helt enkelt begäran från värden till alla slutpunkter. Eftersom alla slutpunkter har en adress, bara den som begäran riktades till kommer att göra något med den (t.ex. svara), kommer alla andra att ignorera paketet.

För slutpunkt- > värdpaket, värden skickar först ett paket till en specifik slutpunkt efter adress för att säga " du kan prata nu " och sedan måste den slutpunkten omedelbart skicka ett svar. Eftersom endast en slutpunkt får prata vid en viss tidpunkt, kommer USB-navet helt enkelt att dirigera paketet från vilken port som svarar på en begäran från värden.


När det gäller hur värden fungerar ut vilka enheter som är anslutna och hur slutpunkten får sin adress, detta uppnås genom uppräkning.

Alla värd- och navportar har neddragningsmotstånd (15kOhm) på D + och D-linjerna. Dessa sätter datalinjerna för den porten i ett känt tillstånd när ingen enhet är ansluten, ett tillstånd där porten inte kommer att skicka data över D + / D-linjer alls.

När en enhet är ansluten, gör den sig känd genom att ansluta antingen D + (fullhastighets) eller D- (låg hastighet) datalinjen till VCC med ett 1,5 kOhm motstånd. Detta utlöser en uppräkningshändelse. Porten börjar sedan processen med att konfigurera enheten och tilldela en adress.Om du ansluter två enheter samtidigt räknas de en i taget .

Om det inte finns några nav, pratar värden helt enkelt med den nya enheten och ställer in den. Om det finns nav i systemet är det navet som rapporterar att den nya enheten är ansluten . Om ett nav rapporterar att en ny enhet är ansluten kommer värden att instruera navet att återställa den nya enheten och starta kommunikation. Under återställningen får slutpunkten en standardadress 0 (*). Värden kan sedan prata med slutpunkten med standardadressen och konfigurera den med en unik adress som inte är noll som gör att den kan veta när den pratas med.

(*) Eftersom endast en enhet räknas någonsin åt gången kommer adressen 0 alltid att vara unik för den nyligen anslutna enheten.


Du kan då fråga, " och hur kan jag då ha flera enheter som alla pratar samtidigt? ". Anta att du har en mus, ett tangentbord och en flash-enhet som alla är anslutna till samma USB-hubb. Vi vet alla att du kan använda musen och tangentbordet samtidigt samtidigt som du kopierar filer till / från din flash-enhet, men om bara en enhet kan prata i taget, hur kan det vara möjligt?

Tja , det handlar allt om att de få hundra millisekunder det tar för din hjärna att märka att du har tryckt på en tangent och förväntar dig att skärmen ska uppdateras är en evighet för datorn. Ett USB 2.0-gränssnitt kan köras med upp till 480 Mbps (USB 3.1 kan köras med upp till 10 Gbps!), Vilket innebär att även om värden bara någonsin pratar med en slutpunkt vid en given tidpunkt, går den mellan dem så snabbt att du kan ”t berättar att det gör det.

USB-värd: " Hej, mus på port 1, berätta om du har flyttat. Ok nu tangentbord på port 2 har du några tangenttryckningar för att rapportera? Nu är du där på port 3, flash-enhet, lagra dessa data åt mig. Någon annan jag behöver prata med? nej, ok då, mus på port 1, berätta för mig om du har flyttat … "

Human: " Åh titt , märkte datorn att jag precis flyttade musen, tryckte på en tangent på tangentbordet och kopierade en bild till flash-enheten, allt samtidigt! "

Värdenheten håller reda på vilken e ndpoint-adresser används och kommer att skicka paket till var och en i följd eller efter behov (dvs. när operativsystemet begär åtkomst till en viss enhet). Så även om allt inte händer samtidigt, är skiljedomen så snabbt att datorerna inte kan se skillnaden.

Kommentarer

  • Till lägg till: USB-enheter (endast ”avbryta” slutpunkter, för att vara exakt) kan begära att bli pollade vid ett visst intervall ner till 1 ms. Så länge du inte har hundratals ingångsenheter kommer du aldrig att märka en fördröjning. / li>
  • Hur vet värden vilka slutpunkter som är anslutna? Detta verkar inte heller ' svara på den ursprungliga frågan om nav. Hur interagerar de i den här processen ? Hur samverkar interaktionen vid uppräkning?
  • @YonaAppletree-uppräkning. Värdar och nav skannar alla sina portar för enhetsanslutningar – de upptäcker ett 1,5 kOhm pull-up-motstånd på antingen D + (Full Speed) eller D- (Låg hastighet). Jag ' Jag lägger till lite information om hur slutpunkter tilldelas en adress.
  • @YonaAppletree när det gäller nav under drift, svaret talar om det redan värd till slutpunkt: " USB-hubbar skickar helt enkelt begäran från värden till alla slutpunkter ". För slutpunkt som värd: " Eftersom endast en slutpunkt tillåts prata vid en given tidpunkt, kommer USB-navet helt enkelt att dirigera paketet från vilken port som än svarar "

Svar

Kortare svar: värden skickar data som är adresserade till en viss enhet ( som var preliminärt ”uppräknat”), en transaktion i taget, sekventiellt. Navet sänder alla paket till alla enheter. En enhet svarar bara på transaktioner som är adresserade till den. Det är allt för HS-enheter.

För FS- och LS-enheter är processen lite mer komplicerad. Den använder ”transaktionsöversättare” som är inbyggda i varje nav för varje port, som översätter så -kallade ”delade transaktioner” i LS- eller FS-trafik.

Kommentarer

  • Vad sägs om USB 3?
  • USB3-nav är mer intelligent för Super-Speed-länk och använd explicit routing till enhet / slutpunkter. USB2-sektionen förblir densamma. Se avsnitt 3.1 " Arkitektonisk sammanfattning " av de senaste USB3.1-specifikationerna, usb.org/developers/docs/usb_31_052016.zip

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *