Commenti
- Hai esaminato la Specifica Universal Serial Bus , in particolare USB capitolo 9? O leggi Jan Axelson ' s USB Complete?
- Grazie per queste risorse, ma lunico problema è che so a malapena qualcosa di elettronica, quindi la guida non ha senso me. So che la comprensione dellintero protocollo USB richiede una conoscenza approfondita specifica, ma ho solo bisogno di una rapida panoramica (questa domanda non è ' t per un progetto. era curioso)
Risposta
Cercherò di rispondere alle tue domande nellordine in cui le hai proposte (numerando può aiutare).
Ci sono effettivamente quattro fili (ignorando USB3.x per il momento). Due per lalimentazione (+ 5V e GND) e due per i segnali (D + e D -).
La cosa fondamentale da notare sui fili del segnale è il loro nome, nota il + e – (anche a volte P e N o P e M). Questi indicano tipicamente nellelettronica che qualcosa è differenziale. significa che 1 “se 0” sono indicati dalla polarità della tensione tra ciascun cavo. Questo è in contrasto con lestremità singola dove 1 “se 0” sono trasportati come un tensione relativa a GND.
Cosa intendo per polarità? Immagina che il cavo D + sia portato a \ $ + 3,3 \ m athrm {V} \ $, e D- è guidato a \ $ 0 \ mathrm {V} \ $. La differenza tra i due è \ $ V_ {D +} – V_ {D-} = 3.3 – 0 = 3.3 \ mathrm {V} \ $. Ora se invece il cavo D + è stato portato a \ $ 0 \ mathrm {V} \ $ e il cavo D- a \ $ + 3.3 \ mathrm {V} \ $, la differenza diventa \ $ V_ {D +} – V_ {D- } = 0 – 3,3 = -3,3 \ mathrm {V} \ $. Notare il segno meno, che indica la polarità opposta.
Perché questo funzioni allora, i due cavi dati devono essere complementari (quando uno è alto, laltro è basso) per trasferire i dati, quindi deve funzionare alla stessa frequenza. Potresti pensare perché preoccuparti, usa solo un cavo. Il fatto è che il mondo è un posto piuttosto rumoroso, un cavo single-ended (modo comune) è molto soggetto al rumore che ad alta velocità (anche a basse velocità in ambienti difficili) può corrompere i dati (fare un 1 a 0). Nella segnalazione differenziale, entrambi i cavi sono esposti allo stesso rumore, quindi si annulla!
Un rapido esempio. Supponiamo che il segnale che stai inviando sia \ $ 2 \ mathrm {V} \ $ o \ $ 0 \ mathrm {V} \ $. Diciamo anche che su ogni filo ottieni \ $ 1 \ mathrm {V} \ $ di rumore (non realistico, ma un esempio). Per single ended, i tuoi segnali al ricevitore sarebbero \ $ 2 + 1 = 3 \ mathrm {V} \ $ che è chiaramente un 1 logico, o \ $ 0 + 1 = 1 \ mathrm {V} \ $ a quel punto tu non ho idea di cosa fosse. Per il differenziale, tuttavia, i tuoi segnali al ricevitore sarebbero \ $ (2 + 1) – (0 + 1) = 2 \ mathrm {V} \ $ o \ $ (0 + 1) – (2 + 1) = – 2 \ mathrm {V} \ $ che sono uguali come se non ci fosse alcun rumore!
Ci sono altri vantaggi nellavere due fili. Quando non si inviano dati, la specifica USB utilizza i due fili indipendentemente per i segnali di controllo, ad es. un segnale di sincronizzazione, un comando di reset, ecc. Questi possono essere chiaramente distinti dai pacchetti di dati con vari accorgimenti che probabilmente sono troppo approfonditi (sarà tutto nelle specifiche USB menzionate nei commenti).
In USB, entrambi i dispositivi devono avere la stessa frequenza. Questo di solito è un multiplo di 12 MHz, motivo per cui vedrai dispositivi USB funzionare a frequenze di clock come 48 MHz o 12 MHz, ecc. Queste frequenze sono generate da un riferimento di cristallo di solito che è tipicamente preciso a circa 20 ppm (240 Hz per un cristallo da 12 MHz ). Questo è generalmente abbastanza vicino che in virtù degli impulsi di sincronizzazione sulle linee dati e del fatto che i dati vengono inviati a raffica (il che significa che la deriva di frequenza non si somma per un lungo periodo di tempo), i due dispositivi possono rimanere sincronizzati. se dovessi accidentalmente utilizzare, ad esempio, un cristallo da 16 MHz, il dispositivo probabilmente non riuscirà a enumerare.
Come fa il master a sapere che il dispositivo ha bisogno di alimentazione? Semplice, tutti i dispositivi USB possono disegnare un quantità di corrente senza richiederla – fino a \ $ 100 \ mathrm {mA} \ $ per quanto ricordo. Questo dà al dispositivo abbastanza potenza per accendersi, affermare la sua presenza (con una resistenza di pull up sulla linea D + – di nuovo probabilmente troppo in profondità). Una volta che il master è a conoscenza del dispositivo, assegna una quota di alimentazione a quel dispositivo e chiede se ne avrà bisogno di più (ad esempio per un dispositivo ad alta potenza, se vuole il \ $ 500 \ mathrm {mA} \ $ indennità di corrente elevata).
Il protocollo USB è tutto nelle specifiche. Cercare di andare oltre sarebbe probabilmente ancora troppo approfondito.Tuttavia, detto che potresti voler dare unocchiata a questa risposta a unaltra domanda che fornisce alcuni dettagli.
Risposta
USB 1.x (1,5 Mbit / se 12 Mbit / s) e 2.0 (480 Mbit / s) utilizzano quattro fili, V \ $ _ {BUS} \ $ ( +5), D +, D- e GND. La D + e la D- formano una coppia differenziale. Esiste anche unestensione chiamata OTG (On-The-Go) che consente a un dispositivo di agire come host o dispositivo USB, e questo fa uso di un quinto lead ID che possiamo ignorare.
Se il la velocità massima di ciascun host e dispositivo è diversa, viene eseguita una negoziazione e viene utilizzata la velocità più alta comune a entrambi.
La segnalazione differenziale prevede un alto grado di immunità ai disturbi. I segnali di dati vengono inviati in modo positivo sulla linea D + e negativi sulla linea D-. Sul lato ricevente, la derivazione positiva viene inviata alla derivazione + di un comparatore (che funge da sottrattore) e la derivazione meno viene inviata alla derivazione – del comparatore.
Per gli impulsi validi, questi due aggiungono (poiché limpulso negativo è stato inviato il – lead del comparatore, aggiungono). Ma se il rumore è indotto sulla linea, in generale influirà allo stesso modo su entrambe le linee D + e D- e il comparatore le sottrarrà.
Il diagramma mostra i dati che vanno in una sola direzione. Questo perché i segnali USB sono half-duplex, i dati vanno solo una direzione alla volta.
USB 3.0 (fino a 10 Gbit / s) utilizza nove fili invece di quattro e fornisce il funzionamento full-duplex da allora ci sono coppie differenziali in ogni direzione per la trasmissione e la ricezione.
I dispositivi possono assorbire fino a 100 mA senza dover “chiedere”. Per USB 1.xe 2.0, il dispositivo può chiedere allhost di fornire fino a 500 mA. Per USB 3.0, questo è stato aumentato a 900 mA. Esiste un protocollo separato utilizzato per la ricarica della batteria (nessuno scambio di dati); in alcuni casi può arrivare fino a 5A.
Commenti
- Grazie per la risposta. Cosa succede se i due dispositivi hanno frequenze di clock diverse?
- Viene utilizzata una tecnica chiamata " clock recovery ": arrowdevices.com/blog/beginners-guide-to-clock-data-recovery
Risposta
USB utilizza la segnalazione differenziale per ridurre le interferenze e consentire la trasmissione ad alta velocità su una lunga distanza. Un bus differenziale è costruito con due fili, uno dei quali rappresenta i dati trasmessi e laltro è complementare. Lidea è che la tensione “media” sui fili non trasporta alcuna informazione, con conseguente minore interferenza. Seriale più moderna bus (USB, Ethernet, PCIe, SATA, ecc.) sono differenziali in quanto il costo dei cavi aggiuntivi è di gran lunga superato dai vantaggi nella riduzione del rumore. USB 2 è anche quello che viene chiamato “half duplex”. Ciò significa che solo il collegamento funziona in una direzione in un dato momento. Ad esempio, il tuo computer può inviare un messaggio al tuo mouse. Oppure il tuo mouse può inviare un messaggio al tuo computer. Ma non entrambi contemporaneamente. Lautobus deve essere “girato intorno” ciascuno i dati sullora devono essere inviati nella direzione opposta.
Per quanto riguarda il clock, lUSB sfrutta dispositivi chiamati serializzatori e deserializzatori. Il serializzatore è responsabile della generazione dei dati seriali sullestremità di trasmissione e il deserializzatore è responsabile del recupero dei bit sullaltro en d. Parte del lavoro del serializzatore è la codifica dei dati in modo che sia facile da decodificare includendo le informazioni di framing e sincronizzazione. Parte del lavoro del deserializzatore è recuperare il segnale di clock. LUSB utilizza una codifica chiamata NRZI, o non ritorno a zero invertita. In NRZI, lo 0 logico è rappresentato da una transizione e l1 logico è rappresentato da nessuna transizione. LUSB utilizza il bit stuffing per limitare la lunghezza dei successivi 1 inviati tramite cavo. Il risultato di ciò significa che ci sono transizioni abbastanza spesso da recuperare tutti i bit, anche se gli orologi del trasmettitore e del ricevitore non battono esattamente alla stessa velocità. Devono essere relativamente vicini, però. Ci sono anche sequenze di sincronizzazione esplicite che vengono inviate insieme ai dati.
Per quanto riguarda lalimentazione, il dispositivo può assorbire una certa quantità di energia senza chiedere allhost. Per disegnare più di questo, è necessario negoziare per assicurarsi che lhost non venga sovraccaricato. Il dispositivo deve attendere fino a quando non ottiene lautorizzazione prima di poter assorbire più corrente.