Hardware - Devices USB bus

Il bus USB


Il materiale e' soggetto a modifiche senza preavviso.
XIA Projects non si assume la responsabilita del contenuto.
Il materiale e' stato raccolto dal CS di Ingeneria Informatica di Pisa.

Contenuti

Introduzione

L'USB (Universal Serial Bus) e' nato nel 1995 dalla collaborazione di quattro multinazionali dell'industria elettronica e informatica: Compaq, Intel, Microsoft e NEC [Com98].
Nel giro di pochi anni e' diventato uno standard industriale, adottato su tutti i PC, compresi i trasportabili.
Piu' chedi bus si tratta di un complesso sistema di interconnessione di periferiche, una vera e propria rete a stella, che ha il suo centro il PC (l'host del sistema).
Di semplice nell'USB non c'e' niente, nemmeno il cavo. La complessita' e' nascosta all'interno dei vari componenti, che appaiono all'utente di facile impiego e semplice installazione. La filosofia progettuale e' stata quella di produrre apparati pronti all'uso: non c'e' che da collegare i cavi e sincerarsi che sul PC sia stato configurato il software dovuto. Emblematica di questa filosofia e' la possibilita' di connessione / disconnessione a caldo delle periferiche.
Elemento fontamentale di USB e' la sua componente software. Sul calcolatore host deve essere presente il cosiddetto software USB di sistema, cioe' una componente da riguardare come parte integrata nel sistema operativo, esattamente come il protocollo TCP/IP, per quanto si riferisce alla piu' generica connettivita' in rete.
Non e' immaginabile di gestire direttamente una periferica USB: sarebbe come pensare di collegarsi ad Internet senza il supporto TCP/IP.
L'esposizione che segue punta a fornire le nozioni che servono a comprendere la natura di questo sistema di interconnessione, evitando di allungare la trattazione con i dettagli di funzionamento, che per essere trattati esaustivamente, richiederebbero un volume a se'.
Poiche' USB adotta un protocollo di comunicazione seriale, il suo studio richiede un minimo di conoscenza circa le tecniche relative a qusto tipo di comunicazione.

Caratteristiche generali

L'USB e' un complesso costituito da un sistema di interconnessione, un protocollo di comunicazione seriale, e un software di gestione, le cui caratteristiche salienti sono:


  1. capacita di collegare un elevato numero di periferiche attraverso una singola porta del sistema host;

  2. elevata velocita' di trasmissione;

  3. presenza imprescindibile del software di gestione.

La struttura fisica del bus e' una rete ad albero con la radice nella porta dell'host.
Lo standard definisce il formato dei connettori e la natura del cavo di interconnessione. (Cfr. 11.8.8)
Il protocollo e' in grado di gestire piu' di 100 periferiche, eliminando i problemi di "mancanza di porte". Teoricamente un host USB (host, nel seguito), nella versione 1.1, puo' arrivare a gestire una catena di 127 periferiche in grado di scambiare i dati a una velocita' che e' pari, a seconda che la periferica sia ad alta o bassa velocita', a 12Mb/s o  1,5Mb/s [1]. Occorre pero' tener presente che la banda disponibile e' sempre suddivisa fra le periferiche connesse [2]. Altro aspetto rilevante e' che la priorita' dipende dalla posizione (il livello della catena) del dispositivo.
Il bus USB e' in grado di alimentare le periferiche attraverso lo stesso cavo utilizzato per lo scambio dati, fornendo potenza in quantita' esigue, ma pur sempre sufficiente a connettere dispositivi di basso assorbimento. Come gia' detto, USB consente la connessione e la disconnessione a caldo delle periceriche, anche di quelli dotati di alimentazione propria.
Il trasferimento dei dati avviene fisicamente attraverso le variazioni della tensione differenziale fra due dei quattro cavatti costituenti il cavo USB. L'osservazione delle variazioni della tensione differenziale consente di riconoscere la connessione - disconnessione degli apparati. L'host e' anche in grado di riconoscere se la aperiferica e' ad alta o bassa velocita'.
E' solo attraverso i servizi forniti dal software USB (che nel seguito indicheremo con la SWU per brevita') che i programmi applicativi hanno accesso alle periferiche connesse. In questo senso SWU puo' essere riguardato, secondo il classico modello ISO/OSI (si veda l'Appendice E), come uno strato che si interpone tra il controllore del bus e i programmi applicativi e che detiene il controllo assoluto di ogni tipo di informazione scambata fra le applicazioni e le pericheriche connesse al bus.
SWU monitorizza costantemente il bus e provvede a instaurare i flussi comunicativi tra i programmi di utente e le periferiche, anche in base all'occupazione di banda. I programmi applicativi vedono le periferiche in base alle funzionalita' da esse offerte, e sono esentati dal tener conto di qualsiasi aspetto relativo alla comunicazione.
Quanto sopra ha, naturalmente, un'importante conseguenza: una periferica, sebbene costituisca un sipositivo passivo (nel senso che trasmette solo e sempre in risposta ai comandi dell'host, senza mai prendere l'iniziativa) deve necessariamente essere dotata di intelligenza, in modo da riprodurre la pila (stack) del protocollo. Le periferiche USB sono di norma realizzate attorno a un microcontrollore [3] che si fa carico di gestire lo scambio dati secondo il modello a strati.

Struttura Fisica

Un sistema USB si costituisce a partire da questi elementi:

  1. l'host, PC equipagiiato con il controllore e il software USB;

  2. i dispositivi USB compatibili, separabili in due classi: periferiche ed hub;

  3. i cavi di interconnessione.

Una periferica puo' essere collegata all'host in modo ddiretto oppure attravero i dispositi intermedi detti hub. Questi hanno il compito di moltiplicazione delle porte e possono essere a se' stanti (con la sola funzione di duplicatori di porte) o integrati nelle periferiche. In Figura 1 il "monitor" e' una periferica che svolge anche la funzione di hub.
La radice dell'albero della rete (o catena) USB risiede concettualmente sul controllore dell'host. Se, come nel caso di Fig. 1, l'host dispone di piu' porte, queste vanno considerate come le porte downstream dell'hub dell'host (l'hub radice).
Il software applicativo vede ciascuna periferica come a se' stante, indipendentemente dal livello fisico in cui si trova e indipendentemente dal liberllo fisico in cui si trova e indipendentemente dal fatto che sia connessa direttamente all'hub radice o ad altro hub.



Fig 1 Esempio di rete USB. Nel caso specifico il PC presenta due porte, dalle quali si originano due sottoreti. Quella di sinistra presenta una prima periferica, il monitor, la quale svolge anche la funzione di hub, con le sue 4 porte downstream cui sono collegate 3 periferiche e la porta upstream di un altro hub. La rete di destra mostra 2 periferiche collegate tramite hub al PC. La rete puo' esterndersi a piacimento tramite altri hub (o periferiche capati di fare anche da hub). I dispositivi USB sono realizzati attorno a un microcontrollore. Nel caso del monitor, il relativo controllore deve gestire la comunicazione diretta al monitor stesso e gestire il flusso di pacchetti relativi alle porte replicate.


Organizzazione a livelli

La struttura a livelli del protocollo e' schematizzata in Fig. 2. I livelli sono i seguenti:

  • Livello di interfaccia al bus (LIB). Esso contiene i componenti hardware che serializzano i pacchetti inviati sul cavo. Le interfacce sono differenti a seconda che si tratti dell'host o delle periferiche; di esse fa comunque parte del cosidetto SIE (Serial Interface Engine), la logica che si interfaccia direttamente al cavo.

  • Livello di periferica logica (LPL). Sull'host e' costituito da SWU, mentr sulla periferica e' costituito dalla logica per trattare i flussi di controllo.

  • Livello funzionale (LF). Costituito dal software utilizzatore sull'host e dalla funzione vera e propria della periferica. Un applicativo residente sul PC vede la periferica USB (o meglio, le sue funzionalita') come se essa fosse direttamente connessa al computer. [4].


Fig 2 Organizzazione a livelli dei flussi dati dello standard USB. Il livello di interfaccia svolge il compito di impacchettare i dati secondo la struttura USB, trasformati nei segnali elettrici asseriti sul cavo (ci si riferisce alla trasmissione; in ricezione vengono svolte le funzioni duali). Il livello di periferica logica fornisce una rappresentazione logica degli aspetti di gestione della periferica da parte di SWU dal lato host. Il livello di funzione e' quello a cui si svolgono le interazioni tra gli applicativi su host e le funzionalita' offerte dalle periferiche connesse.


Host

Al livello piu' basso della pila si trova l'interfaccia al bus, composta dal controllore e da un hub integrato in grado di offrire connessioni multiple all'host [5]. I dati da - verso le periferiche sono organizzati dal controllore e convertiti in segnali elettrici dal SIE, che e' parte dell'hub integrato.
A livello intermedio di trova SWU, il software USB di sitema. Esso e' responsabile di tutto cio' che ha a che fare con l'operativita' del bus: la gestione della banda disponibile, l'alimentazione del bus, il riconoscimento della connessione, della disconnessione ecc. SWU e' costituito essenzialmente da due driver e la parte di controllo.
Il primo driver (USBD) serve a dialogare verso l'alto (con il software utilizzatore) e l'altro per dialogare verso il basso (con il controllore USB).
Il driver USB fornisce al soprastante livello una rappresentazione logica della periferica. Per dialogare con una periferica un programma a livello LF deve instaurare almeno un canale. Cio' viene fatto in fase di riconoscimento e configurazione della periferica. E' previsto che lo stesso applicativo possa instaurare piu' di un canale con la medesima periferica.
La comunicazione fra il software utilizzatore e USBD (Fig 3), avviene attraverso pacchetti [6]

Periferiche

Come vedremo poco piu' avanti (Cfr.), lo scambio di informazioni sul USB si basa su terminatori e canali. Tutti i dispositivi USB devono necessariamente presentare lo speciale terminatore 0 (end-point 0). A esso sono associate le informazioni richieste dall'host nella fase di riconoscimento e configurazione. Tali informazioni sono costituite da parti regolamentate dallo standard (tipo di dispositivo, consumo di potenza ecc.) e da parti a disposizione del costruttore. Il terminatore 0 e' a capo dei flussi della cosiddetta default control pipe, che nel seguito chiameremo canale di base, il canale che si instaura all'atto del riconoscimento della presenza della periferica da parte del SWU. Questo canale si situa logicamente a livello LPL. Attraverso il terminatore 0 (e il firmware del microcontrollore) SWU e' in grado di configurare la periferica.
A livello di funzione la periferica viene vista ancora come un insieme di terminatori, corrispondenti alle funzionalita' espletate dalla periferica. I terminatori sono connessi attraverso canali instaurati da SWU in fase di riconoscimento e configurazione.

1
Per la versione USB 2.0 si parla di un incremento delle velocita' di un fattore 40, che porterebbe quindi a 480Mb/s la velocita' massima dei trasferimenti con periferiche veloci.
2
Per questo motivo, se si vuole evitare il tracollo delle prestazioni, si deve limitare il numero di periferiche ad ampia occupazione di banda, come, ad esempio, i dispositivi multimediali, quali webcam scanner.
3
Un microcalcolatore su singolo chip.
4
Di norma il livello funzionale sul lato host sara' a sua volta composto da piu ' strati software.
In particolare, lo stato piu' basso sara' costituito dai driver specifici delle periferiche e su di esse si appoggeranno le ventuali applicazioni.
5
Si e' gia' osservato che e' comune trovare due o piu connettori USB sul retro dei PC. E' il controllore che fornisce piu porte. All'interno sembra di avere due (o piu') bus, ma, in realta', il bus e' unico e la banda viene ripartita tra i differenti sottoalberi.
6
Un pacchetto di questo genere, nel gergo USB, viene denominato IRP (I/0 Request Packet). Con questa sigla si intende il meccanismo definito dal Sistema Operativo in uso, con il quale Software utilizzatore e SWU comunicano per ottenere o concedere l'utilizzo di un canale.

Contents