The Universal Serial Bus
Andrea Esposito
Marco Marinello
Corso di Computer Systems Architecture
Prof. Flavio Vella
Anno accademico 2020-21
A. Esposito, M. Marinello
The Universal Serial Bus
2
Agenda
●
Primi passi di USB
●
Invenzione di USB
●
Prima di USB
●
Differenza tra seriale e parallelo
●
Specifiche di USB
●
Caratteristiche del bus
●
(A)sincronia e arbitraggio
●
Signaling
●
Transceiver
●
Codifica NRZI
●
Analisi del protocollo
●
Tipi di trasferimento
●
USB contro i suoi avversari
●
USB è migliorata col tempo
●
Porte e connettori
A. Esposito, M. Marinello
The Universal Serial Bus
3
Invenzione di USB
Nel 1994, 7 società iniziarono assieme lo sviluppo di USB:
Compaq, Hewlett-Packard, IBM, Microsoft, NEC e Nortel.
L'obiettivo era rendere più semplice il collegamento di
dispositivi esterni ai PC oltre a migliorare velocità di
trasferimento e altri problemi di usabilità (hot-plug, ...).
Ajay Bhatt e il suo team hanno lavorato allo standard
alla Intel; i primi circuiti integrati che supportano USB
sono stati prodotti nel 1995.
A. Esposito, M. Marinello
The Universal Serial Bus
4
Prima di USB
Moltitudine di standard diversi a
seconda della periferica da collegare
A. Esposito, M. Marinello
The Universal Serial Bus
5
Prima di USB: EIA RS-232
●
Interfaccia seriale
●
Bassa velocità di trasmissione
●
Scambio dati fra dispositivi digitali
●
Scambio dati fra mainframe e
terminali
●
Utilizzata per collegare i primi
mouse, stampanti, scanner e
dispositivi di rete
●
Ad oggi ancora utilizzata ad es.
per management di switch o altri
SBC/Embedded
Topory - Opera propria, CC BY-SA 3.0
A. Esposito, M. Marinello
The Universal Serial Bus
6
Prima di USB: Porta parallela
Afrank99 - Opera propria, CC BY-SA 3.0,
●
Detta anche LPT, dall'inglese Line
Printer Terminal
●
usata inizialmente per collegare
un computer a una stampante o a
un plotter
●
in seguito, nella versione
bidirezionale, impiegata anche
per altre periferiche tra le quali
scanner, unità ZIP, hard disk,
lettori di CD-ROM e webcam
●
È parallela e non seriale
A. Esposito, M. Marinello
The Universal Serial Bus
7
Differenza fra seriale e parallelo
Courtesy of Quantil.com
A. Esposito, M. Marinello
The Universal Serial Bus
8
Prima di USB: Game port
●
Ideata dalla IBM e distribuita nel
1981 come una scheda di
espansione del primo PC IBM
●
Inizialmente consentiva di gestire
quattro assi analogici e quattro
pulsanti su una porta
●
Microsoft nel 2006 ha cessato il
supporto di game port con
Windows Vista mentre nel kernel
Linux è ad oggi supportato dal
modulo snd_cmipci e joydev
A. Esposito, M. Marinello
The Universal Serial Bus
9
Prima di USB: altre porte
Quark67 - Opera propria, CC BY-SA 3.0
Apple Desktop Bus (ADB) PS/2 (mini-DIN)
A. Esposito, M. Marinello
The Universal Serial Bus
10
USB – caratteristiche del bus
Il bus USB è di tipo tiered star, in cui
ogni nodo connesso fa capo a un hub.
Un hub mette a disposizione porte per
la connessione simultanea di più nodi
(lato downstream); a sua volta l’hub fa
capo a un altro hub nel livello (tier)
superiore (lato upstream), fino ad
arrivare al Root Hub, ovvero quello
dell’host.
Nella topologia USB un dispositivo
(non un hub) che occupa un nodo è
chiamato funzione.
A. Esposito, M. Marinello
The Universal Serial Bus
11
USB – caratteristiche del bus
L’architettura USB è host-centrica. L’host gestisce le connessioni (rilevamento di
inserimento e rimozione, alimentazione, enumerazione dei device connessi) e avvia
tutte le transazioni (scambi di dati) da e verso i nodi. Questi rimangono in attesa di
un pacchetto proveniente dall’host (il pacchetto token); se questo contiene l’indirizzo
del device in questione, rispondono di conseguenza. Per questo meccanismo di
attesa e controllo quello USB è definito un polled bus.
A. Esposito, M. Marinello
The Universal Serial Bus
12
USB – (a)sincronia e arbitraggio
Per la sua natura seriale, il bus USB è un bus
sincrono: la scansione degli intervalli è fissata
dal data rate adottato da host e device e
alcuni accorgimenti vengono impiegati
affinché i segnali di clock rimangano tra loro
sincronizzati.
Dal fatto che tutte le transazioni sono avviate
dall’host deriva il sistema di arbitraggio USB:
un device utilizza il bus solo quando richiesto
dall’host e continua ad occuparlo fino al
termine della transazione.
L’host non avvia nuove transazioni finché la
precedente non si conclude.
A. Esposito, M. Marinello
The Universal Serial Bus
13
USB – signaling
VBUS e GND sono le linee di alimentazione (nominalmente +5V). Il signaling USB, ovvero
la generazione degli impulsi alla base della codifica e del trasferimento dei dati, avviene
sulle linee D+ e D-. Una corrente può essere indirizzata dal trasmittente in D+ o
(invertita) in D-. Il ricevente rileva un impulso positivo o negativo tra le due linee.
Questi due stati vengono descritti come J e K. Questa modalità di trasmissione è
denominata differential signaling.
I segmenti di connessione tra i nodi del bus USB sono costituiti da quattro linee elettriche.
A. Esposito, M. Marinello
The Universal Serial Bus
14
USB – transceiver
Un transceiver USB 2.0 include la circuiteria per trasmettere e ricevere segnali
a tre diversi data rate:
• High Speed – 480 Mb/s (la sola mostrata in figura)
• Full Speed – 12 Mb/s
• Low Speed – 1.5 Mb/s
In base al data rate supportato dal device, la trasmissione avviene su intervalli
di tempo differenti.
A. Esposito, M. Marinello
The Universal Serial Bus
15
USB – codifica NRZI
La codifica utilizzata sul bus USB è denominata Non Return to Zero Inverted, o NRZI.
Consiste nel rappresentare il valore logico basso [0] con un cambiamento di stato J-K e il
valore logico alto [1] con una persistenza di stato J-K (nessun cambiamento).
Diversi meccanismi di rilevamento e correzione degli errori vengono utilizzati in base al
tipo di trasferimento in atto sul bus. A livello bitwise viene applicato il bit stuffing, che
consiste nel trasmettere un impulso logico basso [0] dopo ogni occorrenza di una
sequenza di almeno sei impulsi alti [1].
TPERIOD
A. Esposito, M. Marinello
The Universal Serial Bus
16
USB – analisi del protocollo
Ogni transazione USB consiste nello scambio di un numero variabile di pacchetti tra i
device connessi. Ogni pacchetto USB inizia con una sequenza di sincronizzazione
(SYNC), impiegata per allineare i clock tra i due nodi.
Seguono otto bit che identificano il tipo di pacchetto (PID). Si distinguono quattro tipi di
pacchetti:
• Token, contengono direzione della transazione (IN o OUT) e indirizzo del nodo e
dell’endpoint;
• Data, contengono da 0 a 1024 byte di dati annessi alla transazione;
• Handshake, contengono le possibili risposte a seguito di una transazione riuscita
(ACK) o fallita (NAK o STALL);
• Special, contengono informazioni aggiuntive (ad es. richieste di utilizzare il bus da
parte di dispositivi Low Speed).
Ogni transazione termina con una sequenza End of Packet (EOP).
A. Esposito, M. Marinello
The Universal Serial Bus
17
USB – analisi del protocollo
Diverse sequenze di pacchetti sono associate a diversi tipi di trasferimenti sul bus USB.
Per avviare una transazione con un device, l’host emette un pacchetto che ne specifica
l’indirizzo e un suo endpoint, ovvero una porzione dedicata del device stesso,
univocamente identificabile.
Si instaura così una pipe, ovvero un’associazione tra host e device che funge da canale di
trasferimento dati. Una pipe è sempre unidirezionale e permette un solo tipo di
trasferimento tra i quattro possibili: Control, Interrupt, Bulk e Isochronous.
Le quattro tipologie differiscono per direzione della transazione, dimensione dei
pacchetti, limiti di latenza e gestione degli errori.
A. Esposito, M. Marinello
The Universal Serial Bus
18
USB – tipi di trasferimento
Control Bulk / Interrupt Isochronous
A. Esposito, M. Marinello
The Universal Serial Bus
19
USB contro i suoi avversari
RS-232
(serial port)
Parallel port Game port
Apple
Desktop Bus
IEEE 1394
(“FireWire”)
PS/2 USB Thunderbolt
Presentation
date
1962 1981 1981 1986 1986 1987 1996 2009
Reversible
(only type-C)
(only v. 3)
Hotplug
(usually)
Sometimes Sometimes
Maximum
length
15m 4.5m -unknown- 5m 4.5m 25m
5m
(v. 2.0+)
0.5 (40Gbps)
2m (20Gbps)
Maximum
bitrate
115200 bit/s 200 Mbps 4.8 Mbps 0.125 Mbps 3200 Mbps 0.012 Mbps 40 Gbps 40 Gbps
A. Esposito, M. Marinello
The Universal Serial Bus
20
USB – porte e connettori
USB 1.1
USB 2.0
USB 3.0+
1994 2000 2007 2013
2001
OTG
2014
Seguendo le esigenze del mercato e l’avanguardia tecnologica, lo standard USB ha
periodicamente rinnovato le porte e i connettori da esso utilizzati, riducendo le dimensioni e
migliorando robustezza e versatilità.
A. Esposito, M. Marinello
The Universal Serial Bus
21
USB è migliorata col tempo
A. Esposito, M. Marinello
The Universal Serial Bus
23
Bibliografia e sitografia
●
USB 2.0 Specification
https://www.usb.org/document-library/usb-20-specification
●
Data transmission – Parallel vs Serial
https://www.quantil.com/content-delivery-insights/content-
acceleration/data-transmission/
●
USB Hardware – Wikipedia (vector images)
https://en.wikipedia.org/wiki/USB_hardware