Conosco la risposta di google e wikipedia per la domanda precedente. Ma ho una domanda più specifica a portata di mano. Gli hub USB hanno molte porte e porte in entrata e solo una porta in uscita, per questo motivo sono in grado di usare un numero n di dispositivi insieme. Ma non capisco come può una porta USB trasferire dati con un numero n di porte USB?
come può inviare dati diversi a tutte le porte USB contemporaneamente?
*
simula questo circuito – Schema creato utilizzando CircuitLab
*.
Commenti
- Più o meno allo stesso modo in cui il router di rete può connettere una porta LAN (Internet) a più dispositivi. A ogni endpoint (dispositivo USB) viene assegnato un indirizzo e gli hub semplicemente instradano le richieste dallhost al dispositivo corretto tenendo traccia di quale indirizzo si trova su quale porta. ' è molto più semplice per USB, nel senso che esiste un solo master (la porta host) che avvia tutte le transazioni.
- @TomCarpenter Allora come la porta USB invierà dati diversi ' insieme?
- La porta host chiede a un endpoint specifico di parlare. Gli endpoint rispondono solo quando viene richiesto dallhost.
- @TomCarpenter Ma vengono utilizzati tutti contemporaneamente e non uno per uno, ma tutti insieme.
- Ricorda che il bus USB può funziona fino a 480 Mbps su USB 2.0. Lhost parla solo a un endpoint alla volta, ma parla con tutti loro in sequenza e passa da uno allaltro così velocemente che ' non lo puoi dire. La stessa cosa che fanno le reti. " Ehi, passa il mouse sulla porta 1, dimmi se ' ti sei spostato. Ok ora la tastiera sulla porta 2 hai pressioni di tasti da segnalare? Ora sei sulla porta 3, unità flash, archivia questi dati per me. Qualcun altro con cui ho bisogno di parlare? no, ok allora, passa il mouse sulla porta 1, dimmi se ' ti sei spostato … "
Risposta
Ha tutto a che fare con larbitrato. Qualsiasi sistema che richiede la connessione di più dispositivi necessita di un modo per determinare chi deve parlare quando. Ci sono diversi schemi come ci si aspetterebbe a seconda dellapplicazione.
Un esempio comune – in rete abbiamo molti nodi che parlano tutti tra loro. Questo viene fatto da ogni nodo che ha un indirizzo (ad esempio IP indirizzo), e quando un nodo vuole parlare con un altro nodo, invia un pacchetto a quellindirizzo. Hai quindi dispositivi come router che accettano i pacchetti in arrivo su più porte e li inoltrano alla porta corretta. Larbitrato è fatto usando la memoria per memorizzare i pacchetti fino a quando la porta di destinazione non è libera.
Ora passiamo allUSB. Questo è in realtà molto più semplice del networking perché non tutti i nodi sono uguali. Hai due tipi, uno host e un endpoint. Cè sempre un solo host, ma possono esserci molti endpoint. In questo caso larbitrato è molto più semplice perché solo la porta host può parlare a volontà. Gli endpoint possono parlare solo quando richiesto dallhost e lhost parla solo a un endpoint alla volta.
Per i pacchetti endpoint > host, gli hub USB passano semplicemente la richiesta dallhost a tutti gli endpoint. Poiché tutti gli endpoint hanno un indirizzo, solo quello a cui è stata indirizzata la richiesta farà qualcosa con esso (ad es. Rispondere), tutti gli altri ignoreranno il pacchetto.
Per endpoint- > pacchetti host, lhost invia prima un pacchetto a un endpoint specifico in base allindirizzo per dire " puoi parlare ora " e quindi quellendpoint deve inviare immediatamente una risposta. Poiché solo un endpoint può parlare in un dato momento, lhub USB instraderà semplicemente il pacchetto da qualsiasi porta risponde a una richiesta dallhost.
In termini di come funziona lhost quali dispositivi sono collegati e come lendpoint ottiene il proprio indirizzo, questo si ottiene tramite lenumerazione.
Tutte le porte host e hub hanno resistori pull-down (15kOhm) sulle linee D + e D-. Questi mettono le linee dati di quella porta in uno stato noto quando non è collegato alcun dispositivo, uno stato in cui la porta non invierà alcun dato sulle linee D + / D-.
Quando un dispositivo è collegato, si fa conoscere collegando la linea dati D + (velocità massima) o D- (bassa velocità) a VCC utilizzando una resistenza da 1,5 kOhm. Ciò attiva un evento di enumerazione. La porta inizierà quindi il processo di configurazione del dispositivo e assegnazione di un indirizzo.Se dovessi collegare due dispositivi contemporaneamente, verranno enumerati uno alla volta .
Se non ci sono hub, lhost parla semplicemente con il nuovo dispositivo e lo configura. Se sono presenti hub nel sistema, è lhub che segnala che il nuovo dispositivo è collegato . Se un hub segnala che un nuovo dispositivo è connesso, lhost indicherà allhub di reimpostare il nuovo dispositivo e avviare le comunicazioni. Durante il ripristino, allendpoint viene assegnato un indirizzo predefinito 0 (*). Lhost può quindi parlare con lendpoint utilizzando lindirizzo predefinito e configurarlo con un indirizzo univoco diverso da zero che gli consentirà di sapere quando si parla.
(*) Perché solo un dispositivo viene sempre enumerato alla volta, lindirizzo 0 sarà sempre univoco per il dispositivo appena collegato.
Potresti quindi chiedere, " bene come posso quindi avere più dispositivi che parlano tutti contemporaneamente? ". Supponiamo che tu abbia un mouse, una tastiera e ununità flash collegati allo stesso hub USB. Sappiamo tutti che puoi usare il mouse e la tastiera contemporaneamente mentre copi anche i file sulla / dalla chiavetta USB, ma se solo un dispositivo alla volta può parlare, come può essere possibile?
Bene , tutto si riduce al fatto che le poche centinaia di millisecondi necessari al tuo cervello per notare che hai premuto un tasto e aspettarti che lo schermo si aggiorni sono uneternità per il computer. Uninterfaccia USB 2.0 può funzionare fino a 480 Mbps (USB 3.1 può funzionare fino a 10 Gbps!), Il che significa che anche se lhost sta parlando solo a un endpoint in un dato momento, passa da uno allaltro così velocemente che puoi “diglielo” lo sta facendo.
Host USB: " Ehi, mouse sulla porta 1, dimmi se ti sei spostato. Ok ora la tastiera sulla porta 2 hai pressioni di tasti per segnalare? sulla porta 3, unità flash, memorizza questi dati per me. Qualcun altro con cui ho bisogno di parlare? no, ok allora, passa il mouse sulla porta 1, dimmi se ti sei spostato … "
Umano: " Oh guarda , il computer ha notato che ho appena spostato il mouse, premuto un tasto sulla tastiera e copiato unimmagine nellunità flash, tutto contemporaneamente! "
Il dispositivo host tiene traccia di quale e Gli indirizzi ndpoint vengono utilizzati e invieranno pacchetti a ciascuno in sequenza o secondo necessità (ad es. quando il sistema operativo richiede laccesso a un dispositivo specifico). Quindi, sebbene non avvenga tutto simultaneamente, larbitrato è così veloce che i computer animali domestici non possono “vedere la differenza.
Commenti
- A aggiungi: i dispositivi USB (solo gli endpoint “interrupt”, per essere precisi) possono richiedere di essere interrogati a un certo intervallo fino a 1 ms. Finché non hai centinaia di dispositivi di input non noterai mai un ritardo.
- Come fa lhost a sapere quali endpoint sono collegati? Inoltre, questo ' in realtà non sembra rispondere alla domanda originale sugli hub. Come interagiscono in questo processo ? Come interagiscono nellenumerazione?
- Enumerazione @YonaAppletree. Host e hub eseguono la scansione di tutte le porte per le connessioni dei dispositivi: rilevano una resistenza di pull-up da 1,5 kOhm su D + (Full Speed) o D- (Bassa velocità). ' aggiungerò alcune informazioni su come viene assegnato un indirizzo agli endpoint.
- @YonaAppletree in termini di hub durante il funzionamento, la risposta parla già al riguardo dallhost allendpoint: " gli hub USB trasmettono semplicemente la richiesta dallhost a tutti gli endpoint ". Da endpoint a host: " Poiché solo un endpoint può parlare in un dato momento, lhub USB instraderà semplicemente il pacchetto da qualsiasi porta risponde "
Risposta
Risposta più breve: lhost invia i dati indirizzati a un particolare dispositivo ( che è stato “enumerato” preliminarmente), una transazione alla volta, in sequenza. Lhub trasmette tutti i pacchetti a tutti i dispositivi. Un dispositivo risponde solo alle transazioni ad esso indirizzate. Questo è tutto, vero per i dispositivi HS.
Per i dispositivi FS e LS il processo è un po più complicato. Utilizza “traduttori di transazione” che sono costruiti in ogni hub per ogni porta, che traducono così chiamate “transazioni divise” in traffico LS o FS.
Commenti
- E per quanto riguarda USB 3?
- Gli hub USB3 sono più intelligente per il collegamento Super-Speed e utilizza il routing esplicito a dispositivi / endpoint. La sezione USB2 rimane la stessa. Consulta la sezione 3.1 " Riepilogo architettonico " delle specifiche USB3.1 più recenti, usb.org/developers/docs/usb_31_052016.zip