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