Universal Serial Bus Alessandro Memo Settembre 2006 Indice degli argomenti 1. 2. 3. 4. 5. 6. 7. Storia Generalità Topologia Componenti Connessione Alimentazione Trasmissione 8. Codifica 9. Il Protocollo 10.Endpoint 11.Pipe 12.USB 2.0 13.USB On-The-Go Storia • Un gruppo di aziende (Compaq, Digital Equipment, IBM, Intel, Microsoft e Northern Telecom) decidono di creare un nuovo standard di interfacciamento per PC • La versione USB 1.0 viene pubblicata il 15.1.96, mentre la 1.1 il 23.9.98 • Il 27 Aprile 2000 nasce la versione 2.0, che apporta migliorie sulla velocità di trasferimento e compatibilità con le precedenti. Generalità • USB è un bus seriale esterno, che consente il collegamento e la rimozione di periferiche ‘a caldo’ (hot swap) • Supporta la tecnologia Plug and Play • Se l’assorbimento di corrente della periferica è basso, questa può essere alimentata tramite bus • La versione 1.1 ha velocità di trasferimento dati diversificate: low [1,5 Mbit/sec] e full [12 Mbit/sec] • La versione 2.0 ammette anche la modalità high [480 Mbit/sec] Topologia • L’USB consente di connettere un massimo teorico di 127 dispositivi, distribuibili su cinque strati (max 5 hub). livello root • La distanza massima per una Host connessione è di 5 m, anche livello 1 se si possono raggiungere 30 m con 5 hub tra PC e livello 2 periferica • L'USB è un bus solo livello 3 da un punto di vista livello 4 logico. Componenti di un bus USB • Host, (in generale è il PC) l'host controlla tutto il traffico sul bus, decidendone le priorità e le diverse modalità, rileva e configura le periferiche connesse. • Hub, permettono di moltiplicare le connessioni USB. Sono essenzialmente dei multiplatori di segnali dotati di una porta di upstream verso l’host e di porte di downstream, indirizzate verso altri hub o dispositivi. Componenti di un bus USB • Gli hub registrano, nei loro bit di stato, le periferiche che vengono collegate o scollegate fisicamente al bus. • Device, sono le periferiche connesse al bus mediante una porta USB. I device possono funzionare anche da hub. Connessione L’USB usa cavi, prese e connettori standardizzati. I cavi sono di due tipi: non schermati per periferiche lente, con lunghezza massima di tre metri e schermati per periferiche veloci, con lunghezza fino a cinque metri. Connessione I connettori alla estremità dei cavi sono diversi: il connettore verso l’hub è detto tipo A, verso le periferiche tipo B. Connettori Serie A Connettori Serie B le spine Serie A sono sempre orientate verso l’Host (upstream) le spine Serie B sono sempre orientate verso il device (downstream) Spina A plug Spina B plug (dal device) (dall’Host) Presa A receptacle (flusso downstream in uscita dall’Host o dall’Hub) Presa B receptacle (flusso upstream in ingresso al device o all’Hub) Connessione connettore (spina) tipo A connettore (spina) tipo B Connessione Alimentazione • Sono previste tre modalità di alimentazione dei device: Self, Bus e Hybrid. • Self: se il dispositivo ha un’alimentazione autonoma e non preleva corrente dal cavo USB (self powered) • Bus: se il dispositivo si alimenta tramite il cavo USB. In tal caso deve avvisare preventivamente l’Host che preleverà una corrente, espressa in multipli di 100 mA low-power device: assorbe meno di 100 mA high-power device: assorbe al massimo 500 mA Alimentazione • Hybrid: se il dispositivo è parzialmente autoalimentato e comunque preleva una quota di corrente anche dal bus (previa negoziazione). • un dispositivo bus-powered low power può essere collegato anche ad una linea gestita da hub • un dispositivo bus-powered high power può avere inconvenienti se collegato ad una linea gestita da hub (meglio se collegato all’Host). Alimentazione • Gli hub possono essere forniti di alimentazione propria oppure essere alimentati tramite il bus . Gli hub bus-powered non possono essere collegati in cascata e non possono avere più di quattro porte • Un dispositivo che assorbe più di 100 mA, ma non dispone di alimentazione separata, non può essere connesso ad un hub alimentato dal bus. Trasmissione • Il cavo ha quattro fili, due per l’alimentazione (Vbus e Ground) e due per i dati • tra i due fili di alimentazione è presente una tensione nominale di 5 Volt • la seconda coppia di fili (D+ e D-) serve alla trasmissione dei dati, con segnali di ampiezza massima di 3,3 Volt Trasmissione • Nello standard USB 1.1 la trasmissione avviene su linea differenziale (cioè il bit dipende dalla tensione su entrambi i fili), sui fili D+ e D-. • Con due fili sono possibili 4 combinazioni: LOW SPEED FULL & HIGH SPEED nome D+ D- nome D+ D- stato J (0) basso alto stato J (1) alto basso stato K (1) alto basso stato K (0) basso alto Single Ended 0 Single Ended 1 basso basso alto alto Single Ended 0 Single Ended 1 basso basso alto alto Trasmissione • Per descrivere lo stato delle linee sul bus sono stati introdotti due simboli: J e K. • In tal modo si uniformano le terminologie nelle comunicazioni low e full speed. Ad esempio la trasmissione sulla linea USB inizia sempre con una commutazione da stato J a stato K. Codifica • La codifica del segnale è la NRZI (No Return Zero Inverted) ; essa prevede la transizione per i bit 'zero' ed il mantenimento di livello per gli 'uno'. • Per la sincronizzazione viene adottata la tecnica del bit stuffing (per gruppi di sei bit alti) • L’inizio del pacchetto è caratterizzato dalla sequenza 01010100, mentre la fine è marcata dallo stato Se0 per la durata di due bit, seguiti da un bit alto e dal passaggio in IDLE del trasmettitore. Il Protocollo • Tutti i trasferimenti sono iniziati dall'host, con metodo polling-selecting,inviando un pacchetto che, come un gettone, autorizza i terminali a comunicare. • A questo punto, se la periferica è pronta, risponde all’invito e da ciò deriva l'instaurazione della trasmissione, tramite una procedura di handshaking. • Gli indirizzi delle periferiche sono assegnati dall'host in maniera dinamica, con un processo che viene continuamente ripetuto. Il Protocollo • Quando un device USB si collega al bus, l’host che lo governa interroga il device utilizzando l’indirizzo di default 0. • Successivamente l’host assegna al device un indirizzo USB univoco nel bus. • L’host successivamente richiede altre informazioni quali: – – – – classe di conformità del dispositivo numero di endpoint posseduti nome del costruttore vendor ID/Product ID Il Protocollo • La comunicazione tra Host e device si definisce transfer. • Ogni transfer si suddivide in una o più transaction, una per ogni coppia host-device • Ogni transaction è suddivisa in packet, ed è composta da – un token packet che definisce il destinatario e il tipo di transaction – uno o più data packet – un handshake packet per il controllo dell’errore. Protocollo NSFER TRANSACTION TOKEN PACKET SYNC TRANSFER TRANSACTION DATA PACKET PID HANDSHAKE PACKET DATA TRANSF TRANSACTION TOKEN PACKET CRC TRANSACTION DATA PACKET HANDSHAKE PACKET Il Protocollo • Il Packet contiene i seguenti campi: – – – – 8 bit di sincronismo (32 bit x high speed) 4+4 bit di Packet Identifier (PID) ulteriori informazioni dipendenti dal PID CRC del packet • Per trasmissioni low/full speed le frame hanno un periodo di 1 mS (125 µS per high speed) Endpoint • Ogni device include al suo interno uno o più endpoint (punti terminali della comunicazione host-device). • Gli endpoint possono essere di tre tipi: – IN (trasmette i dati all’host/hub) – OUT (riceve i dati dall’host/hub) – CONTROL (accesso bidirezionale) • C’è una sola connessione fisica, ma diverse connessioni logiche tra host e device, dette PIPE. Pipe • Ogni Pipe è associata ad un endpoint. • Ogni device, all’avvio, deve attivare la control Pipe associata all’endpoint0. • La Pipe associata all’endpoint0 è bidirezionale di tipo control. • Le Pipe associate agli altri endpoint sono monodirezionali. USB 2.0 Esempio di configurazione USB 1.1 USB 2.0 Esempio di configurazione USB 2.0 USB 2.0 Ruolo del software sull’host: • Le applicazioni correnti del PC continuano ad operare con le periferiche USB 1.1 • Il software di sistema rileva configurazioni limitanti (periferiche USB 2.0 collegate ad hub USB 1.1) ed avvisa l’utente. USB 2.0 Ruolo dell’hub: • Un hub USB 2.0 accetta transaction alla massima velocità ammessa e le inoltra a periferiche di entrambi gli standard, USB 2.0 ed USB 1.1. • Ciò richiede capacità elaborative e di buffering. • L’hub gestisce anche transizioni USB 2.0 inviate dall’host a device USB 1.1 USB On-The-Go • Una estensione del USB chiamata USB-OnThe-Go consente ad una singola porta di fungere sia da device che da host. USB On-The-Go Per evitare una proliferazione dei connettori proprietari. USB-On-The-Go ha definito anche due connettori chiamati, mini-A e mini-B, molto più piccoli dei connettori precedenti. connettore (spina) tipo mini-A