USB: Funzionamento, Velocità e Protocolli di Trasferimento Dati

Inviato da Javi e classificato in Elettronica

Scritto il in italiano con una dimensione di 24,89 KB

1. Introduzione

USB (Universal Serial Bus) è un'interfaccia per la trasmissione dei dati e l'erogazione di energia che è stata introdotta nel mercato dei PC e delle periferiche per migliorare le vecchie e obsolete interfacce seriali (RS-232) e parallele. L'interfaccia è composta da 4 fili, supporta diverse velocità di lavoro ed è "plug and play", senza necessità di alimentazione esterna nella maggior parte dei casi.

Universal Serial Bus è un bus seriale che permette il collegamento di un massimo di 127 periferiche a una singola porta di un PC, con rilevamento e configurazione automatici, una volta collegato fisicamente, senza dover installare alcun hardware o software aggiuntivo e senza riavviare il computer. È stato sviluppato da aziende leader nel settore delle telecomunicazioni e dei computer: Compaq, DEC, IBM, Intel, Microsoft, NEC e Northern Telecom.

2. Caratteristiche

Il bus USB supporta lo scambio simultaneo di dati tra un computer host e una vasta gamma di periferiche. Tutti i dispositivi periferici condividono la larghezza di banda del bus attraverso un protocollo di passaggio di token; il computer assegna il controllo alla periferica selezionata, la quale, in risposta, restituisce il token. Questo permette ai dispositivi di essere collegati/scollegati dal bus senza influire su altri dispositivi.

Poiché tutti i dispositivi periferici condividono il bus, le informazioni possono essere presentate in qualsiasi momento e, al tempo stesso, sono suddivise in pacchetti. Ogni intestazione di pacchetto contiene un identificatore che ne indica il destinatario. I pacchetti utilizzano un sistema di rilevamento e correzione degli errori molto robusto, basato su un CRC.

2.1 Velocità

I dispositivi USB sono classificati in quattro tipi, a seconda della velocità di trasferimento dati:

  • Low Speed (USB 1.0): Offre una velocità di trasferimento fino a 1.5 Mbit/s (192 KB/s). Utilizzato principalmente per i dispositivi di interfaccia utente come tastiere, mouse e joystick (ancora in uso per la sua economicità).
  • Full Speed (USB 1.1): Velocità di trasferimento fino a 12 Mbit/s (1.5 MB/s). Questa era la velocità più elevata prima dell'introduzione della specifica USB 2.0. Questi dispositivi condividono la larghezza di banda della connessione USB tra loro, sulla base di un algoritmo di buffering FIFO.
  • High Speed (USB 2.0): Velocità di trasferimento fino a 480 Mbit/s (60 MB/s).
  • Super Speed (USB 3.0): Attualmente in fase finale di sviluppo, con una velocità di trasferimento fino a 4.8 Gbit/s (600 MB/s). La velocità del bus è dieci volte superiore a quella di USB 2.0, grazie all'introduzione di nuove linee dati che consentono una trasmissione full-duplex, pur mantenendo la compatibilità con i connettori e gli standard precedenti (USB 2.0).

2.2 Interfaccia Fisica

L'USB definisce due linee per la trasmissione di dati (D+ e D-) e altre due per la trasmissione di alimentazione (VBUS e GND), evitando così, in molti casi, l'uso di alimentazione esterna. Per la trasmissione dei dati viene utilizzato un algoritmo NRZI (Non Return to Zero Inverted).

L'USB trasferisce segnale e alimentazione alle periferiche tramite un cavo a 4 fili, schermato per trasmissioni a 12 Mbps o superiori, e non schermato per trasmissioni a 1.5 Mbps.

Nel cavo schermato, la coppia di fili del segnale è intrecciata, e i fili di alimentazione e massa sono dritti. Nel caso di cavi non schermati, tutti i fili sono dritti.

Struttura del Cavo USB

Il cavo USB trasferisce segnale e alimentazione su quattro fili.

Z

A Livello di Alimentazione

Il cavo fornisce la tensione nominale di 5 V. È necessario definire correttamente il diametro dei fili per evitare una caduta di tensione eccessiva sul cavo. Una resistenza di terminazione è installata sulla linea dati per rilevare la porta e determinarne la configurazione e la velocità.

A Livello del Segnale

A livello del segnale, si ha un'impedenza caratteristica di 90 Ω. La sensibilità del ricevitore deve essere di almeno 200 mV e deve essere in grado di sostenere un buon livello di reiezione del modo comune di tensione. Il clock viene trasmesso nel flusso di dati codificato in NRZI, e un dispositivo genera bit di riempimento (stuffing bit) che assicura che la frequenza di clock rimanga costante. Ogni pacchetto è preceduto da un campo di sincronizzazione.

2.3 Tipi di Connettori

Per quanto riguarda i connettori, se ne possono trovare di due tipi principali, a seconda della piattaforma del dispositivo: Tipo A e Tipo B.

Connettori Tipo A

I connettori di Tipo A, di forma rettangolare, sono generalmente utilizzati per i dispositivi che non richiedono eccessiva larghezza di banda (come tastiera, mouse, webcam, ecc.).

Connettori Tipo B

I connettori di Tipo B hanno una forma quadrata e sono utilizzati principalmente per i dispositivi ad alta velocità (hard disk esterni, ecc.).

OcbEz9uze6e6v5UpqnrdcbJVIeVNVKYWiul4wdTHVbWSGFqrZSOH0x1WFkjham1Ujp emV1NuK + + + + MNVhZY0UptZK6fjBVIeVNVKYWiul47cnpoe92Df9h9SsrpQ8TwAAAABJRU5ErkJggg MNVhZY0UptZK6fjBVIeVNVKYWiul4wdTHVbWSGFqrZSOH0x1WFkjham1Ujp MNVhZY0UptZK6fjBVIeVNVKYWiul4wdTHVbWSGFqrZSOH0x1WFkjham1Ujp ==

y3bA + IL8y5CcqAKSi2LopA2yqRU6sDCAVxdZNGWBTLXJiZQCpKLZuJ2DgcnD5B1wtrgqJniN6AAAAAElFTkSuQmCC

Connettori Tipo A e Tipo B

3. Protocollo di Trasferimento USB

Tutti i dispositivi USB sono composti da una serie di endpoint e un indirizzo univoco assegnato dal sistema. Un endpoint è un buffer che memorizza i dati all'interno del dispositivo. Ogni endpoint ha un identificativo univoco che è specifico del produttore e una direzione del flusso di dati. Tutti i dispositivi devono supportare l'endpoint 0, che viene utilizzato per la configurazione.

Le connessioni tra i vari endpoint di un dispositivo e l'host sono chiamate pipe. Le pipe consentono di spostare i dati tra il software host e gli endpoint del dispositivo. Ogni pipe è determinata dal tipo di servizio, dal numero di endpoint, dalla dimensione del pacchetto, dall'indirizzo, ecc.

Ci sono quattro tipi di endpoint distinti (controllo, bulk, interrupt e isocrono), ciascuno utilizzato in un tipo di trasferimento, e le associazioni (pipe) che si verificano tra questi endpoint sono:

  • Pipe di controllo o di messaggio: È un canale di comunicazione tra due endpoint di controllo, uno di ingresso e uno di uscita, in modo da poter stabilire una comunicazione bidirezionale. Tutti i dispositivi hanno due endpoint di controllo presso l'indirizzo 0, che possono essere impostati prima della configurazione del dispositivo. Attraverso questo endpoint l'host può leggere il dispositivo USB prima di avviare il trasferimento.
  • Pipe di flusso: Un canale di comunicazione unidirezionale tra l'host e gli endpoint di tipo bulk, interrupt e isocrono.

I trasferimenti possono essere, a seconda del tipo di endpoint, di tipo:

Trasferimento di Controllo

Modalità utilizzata per le impostazioni: coinvolge sempre l'endpoint 0. Tutti i dispositivi USB devono supportare questo tipo di trasferimento.

I dati di controllo sono utilizzati per configurare il dispositivo quando connesso alla porta USB. Alcuni driver specifici possono utilizzare questa connessione per caricare le proprie informazioni di controllo.

Questa connessione non ha alcuna perdita di dati, poiché i dispositivi USB implementano meccanismi attivi di rilevamento e recupero degli errori.

Trasferimento Isocrono

Modalità utilizzata per la trasmissione di dati audio o video compressi. Questo tipo di trasmissione opera in tempo reale. Questa è la modalità a più alta priorità.

Solo gli endpoint isocroni Full Speed e High Speed possono essere utilizzati.

La trasmissione della voce è un esempio di questa applicazione. Se non viene trasmesso correttamente, possono essere ascoltati disturbi (glitches) e l'applicazione potrebbe rilevare errori chiamati underrun.

Trasferimento Interrupt

Modalità utilizzata per la trasmissione di pacchetti di piccole dimensioni, veloci, destinati a interazioni umane (es. puntatori del mouse).

Questo tipo di trasferimento è per i dispositivi che richiedono attenzione regolare e operano a bassa velocità.

Questo tipo di trasmissione garantisce il trasferimento di piccole quantità di dati. Il tempo di risposta non può essere inferiore al valore specificato dall'interfaccia. Il mouse o altro dispositivo di puntamento è una tipica applicazione di questa modalità di trasmissione.

Trasferimenti Bulk

Questa modalità è utilizzata per la trasmissione di grandi quantità di informazioni. Come per i trasferimenti di controllo, questa connessione non prevede alcuna perdita di dati. Questo tipo di trasferimento è utile quando la velocità di trasferimento non è critica, come l'invio di un file per la stampa o la ricezione di dati da uno scanner.

In queste applicazioni, il trasferimento è veloce, ma può attendere se necessario. Solo i dispositivi a media e alta velocità supportano questo tipo di trasferimento.

Enumerazione

Quando si collega un dispositivo USB al PC, si verifica il processo di Enumerazione, durante il quale l'host interroga la periferica per conoscerne le caratteristiche e i parametri, quali:

  • Il consumo di energia, espresso in unità di carico
  • Numero e tipi di endpoint
  • Classe di prodotto
  • Tipo di trasferimento
  • Motivo del controllo, e così via.

Il processo di enumerazione viene inizializzato dall'host quando rileva che un nuovo dispositivo si è collegato al bus. L'host assegna un indirizzo al dispositivo e ne consente la configurazione, abilitando così il trasferimento dei dati.

Voci correlate: