Etienne Tremblay
Ordinateurs, Structure et Applications
GIF-1001
Cours 19, Le USB
GIF-1001
USB
• USB signifie Universal Serial Bus
• Le USB a été conçu afin de remplacer le port série
• L’utilisation du USB implique des redevances. Être membre officiels des développeurs de USB coûte 2500$ USD par année. Avoir un Vendor_ID coûte 200$ USD par année…
• Il existe trois normes USB principales:
– USB 1.1 (1998)
– USB 2.0 (2000, révisé en 2002).
– USB 3.0 (2008)
• À moins que ce ne soit explicitement indiqué, ce document décrit USB2.0.
Une section à la fin du document présente USB3.0.
Vitesses de communication
• Le USB 2.0 supporte 3 vitesses de communication:
– Basse vitesse à 1.5 Mb/s pour les appareils comme les claviers, souris, joystick
– Pleine vitesse 12 Mb/s pour des appareils à gros débits comme les modems et téléphones.
– Haute vitesse 480 Mb/s pour des appareils multimédia à très haut débit comme les caméoscope (une caméra numérique).
• Le USB 3.0 supporte une vitesse additionnelle:
– Le SuperSpeed 5 Gigabit/s avec une vitesse effective autour de 4 Gbps.
GIF-1001
Caractéristique générales
• Les transactions USB se font à l’aide de jetons (voir plus loin), c’est-à-dire à l’aide de bytes transmis ayant des valeurs et significations précises.
• Le port USB est totalement contrôlé par un contrôleur unique appelé hôte (host). L’hôte, souvent le PC, initie toutes les communications (même les interruptions). Il est le maître absolu du bus.
• Les jetons et messages transitent dans des trames de 1ms ou de 125us (haute vitesse) (voir plus loin).
• Le bus USB peut fournir l’alimentation des appareils qui y sont connectés.
• Quatre modes de transfert sont supportés: Contrôle, Interruptions, Bloc et Isochrone. Ils sont tous détaillés plus loin.
• Les appareils nouvellement branchés sur le port USB sont détectées automatiquement.
• Dans USB 3.0, les deux liens additionnels permettent aux slaves d’indiquer des évènements de façon asynchrone au Master sans que celui-ci ait initié la communication.
Topologie d’un réseau USB
• Un réseau USB a une topologie en étoile. Les ports descendent de l’hôte vers les appareils. Ils montent vers l’hôte.
• Les HUBs sont des appareils qui
permettent de relier plusieurs appareils à un seul port USB. Le rôle principal des HUBs est de transférer les
données de l’hôte aux périphériques.
• Il y a 127 appareils maximum dans un réseau USB. Chaque appareil a son adresse.
• Il peut y avoir 5 niveaux de hub en plus de l’hub racine.
• Chaque hub contrôle ses ports afin de savoir si un appareil s’y connecte
Host HUB Root
HUB 1
HUB 2 HUB 3 USB Device
USB Device USB Device USB Device
GIF-1001
Classes de devices USBs
• Tous les appareils USB appartiennent à une classe. Les classes d’appareils sont:
– Audio (Haut parleurs) – Communication (Modem)
– Human Input Device (Souris, Clavier) – Display (Écran)
– Physical feedback devices (Force feedback joystick) – Power (Uninterruptible power supply)
– Printer
– Mass storage (Disque dur) – Hub !
• Une constante est associée à chaque classe. Cette constante se retrouve dans le descripteur de l’appareil (voir plus loin) selon la classe de l’appareil.
Composantes logiques d’une device USB
• Chaque appareil USB contient une ou plusieurs connections logiques
appelées endpoints (terminaisons en français). L’hôte envoie ou reçoit des données d’un endpoint.
• Chaque appareil doit avoir au moins un endpoint, le endpoint 0. C’est avec cet endpoint que l’hôte communique avec d’obtenir des informations sur les configurations d’un appareil.
• Un groupe de enpoints est appelé une interface. Un groupe d’interfaces est appelé une configuration. Un appareil peut avoir plusieurs interfaces
réparties dans plusieurs configurations. Toutefois, la plupart des appareils n’ont qu’une configuration avec une unique interface.
• Le lien entre l’hôte et une terminaison est appelé pipe (canal en français).
GIF-1001
USB 2.0 Hardware
• Le câble USB 2.0 est constitué de 4 fils: Vbus, GND, D+ et D-. Vbus et GND sont l’alimentation 5Vdc (entre 4.75V et 5.25V) et la
référence électrique. D+ et D-
servent au transport des données.
• Il y a deux types de connecteurs USB tel que montré à droite.
• Plus la fréquence est élevée, plus les câbles doivent être courts. En haute vitesse la longueur max.
d’un câble USB est 5m.
• La puissance maximum pouvant être tirée d’une connexion USB est 5*(5V*100mA), soit 2.5W.
L’unité de courant de base est 100mA.
Tiré de usb_20.pdf (http://www.usb.org/developers/) et http://www.networktechinc.com/technote.html
Mating face of USB type B female Mating face of USB
type A female
USB 3.0 Hardware
• Le câble USB 3.0 est constitué des 4 fils du câble USB2.0 auxquels sont ajoutés 4 autres fils pour créer 2 canaux de transfert de données en mode différentiel.
• Les deux liens additionnels sont en mode FULL-DUPLEX et il
existe deux connecteurs (A et B) pour brancher la transmission de l’hôte sur la réception des périphériques et pour brancher la
transmission des périphériques sur la réception de l’hôte.
Signal Signal
Connecteur A Connecteur B
Fil 1 Rouge USB 2 et USB 3
Fil 2 Blanc USB 2 et USB 3
Fil 3 Vert USB 2 et USB 3
Fil 4 Noir USB 2 et USB 3
Fil 5 Bleu StdA_SSRX? StdA_SSTX? USB 3
Fil 6 Jaune StdA_SSRX+ StdA_SSTX+ USB 3
Drain 7 Armature USB 3
Protocole
GND_DRAIN Broche Couleur
VBUS D?
D+
GND
GIF-1001
Encodage des bits USB et valeurs de D+ et D-
• D+ et D- sont 2 lignes qui pourraient transporter des données en référence à la masse ou Vcc. Toutefois, les données sont véhiculées par la différence entre D+ et D-. En basse vitesse, D+ et D- sont dans l’état J lorsque D- > D+
d’au moins 200mV. D+ et D- sont dans l’état K lorsque D+ > D- d’au moins 200mV. Lorsque D+ et D- sont forcée près de la masse par l’hôte, cela signifie une demande de reset.
• Les bits de donnés sont encodés selon le format NRZI: un « 1 » est représenté par l’absence de changement d’état alors qu’un « 0 » est représenté par un changement d’état.
• Les appareils doivent être connectés en état de haute impédance par
rapport aux les lignes D+ et D-. Par contre, la ligne D+ doit être connectée à une tension entre 3 et 3.6Vdc par une résistance de 1.5KOhms pour un appareil pleine vitesse. Pour un appareil basse vitesse, il faut polarise la ligne D- ainsi. Un appareil haute vitesse doit se présenter comme un appareil pleine vitesse, mais retirer la polarisation après initialisation de l’appareil. Ces polarisations du voltage de D+ et D- permet de détecter la présence de nouveaux appareils.
• Tout appareil doit pouvoir supporter un court circuit entre Vbus/Masse et ou D+/D-.
• Dans USB 3.0, les octets sont transmis en symboles encodés 8bits/10bits.
Le but de cet encodage est d’éviter de longues séquences de 0 ou de 1 afin de préserver le contenu fréquentiel du signal de communication.
Types de transfert
• Le USB supporte 4 types de transfert:
– Transfert de contrôle – Transfert isochrone
– Transfert par interruption – Transfert par bloc
• Le transfert de contrôle sert à la configuration et à la commande d’un
appareil. Il se compose d’un jeton SETUP (voir plus loin) et de l’endpoint 0.
• Le transfert isochrone est un mode de transfert pour lequel les données sont transmises à l’intérieur d’une trame et elles sont synchronisées avec les
débuts de trames. Ce type de transfert est utilisé pour la pleine et la haute vitesse.
• Le transfert par interruption est utilisé par les appareils ayant peu de
données à transmettre, mais ayant des données qui doivent être transmises rapidement (exemple: clavier ou souris). Les interruptions sont détectées par polling (interrogation successives) de la par de l’hôte. La fréquence de polling requise est donnée par les descripteurs de l’appareil.
• Le transfert par bloc permet de transférer des volumes importants de données lorsqu’il n’y a pas de contraintes temporelles (exemple:
imprimante).
GIF-1001
Protocole de bas niveau
Voir http://membres.lycos.fr/grandzebu/electronique/usb/usb_resume.htm
Branchement d’un périphérique
Voir http://membres.lycos.fr/grandzebu/electronique/usb/usb_resume.htm
Requêtes du jeton SETUP
Voir http://membres.lycos.fr/grandzebu/electronique/usb/usb_resume.htm
Les descripteurs
Voir http://membres.lycos.fr/grandzebu/electronique/usb/usb_resume.htm
Figures reliées au items précédents (1/2)
Exemples de paquets USB Trame USB
GIF-1001
Figures reliées au items précédents (2/2)
Transactions USB
Descripteurs USB
Identification d’un appareil USB
• Windows identifie un appareil USB grâce à ses Hardware IDs. Les
Hardware IDs sont formés des champs idVendor, idProduct et bcdDevice du descripteur d’appareil.
• Si Windows ne trouve pas de pilote de périphérique pour les Hardware IDs, il cherche un pilote de périphérique avec les Compatibles IDs. Les
Compatibles IDs sont formés des champs bInterfaceClass,
bInterfaceSubClass et bInterfaceProtocl du descripteur d’interface.
• Si Windows ne trouve pas de pilote compatible encore une fois, il demande à l’usager de fournir le pilote.
GIF-1001
On-The-Go (OTG)
• L’USB 1.1 et 2.0 est un protocole Master/Slave, le périphérique connecté à l’ordinateur ne peut pas initier la communication. Pour certaines
périphériques, cette contrainte est inacceptable. Par exemple, une appareil photo numérique USB peut transférer des photos à un ordinateur en mode Slave, mais il serait intéressant d’envoyer des images directerement à une imprimante en mode Master. Autre exemple: un I-pod permettant d’envoyer des pièces de musiques à une chaine stéréo en master, mais recevant les mêmes oeuvres musicales d’un ordinateur. Pour permettre à un
périphérique USB d’être tour à tour Master et Slave, le USB On-The-Go (OTG) a été inventé.
• Pour envoyer ou recevoir des données, un périphérique USB utilise le
protocole USB classique. Toutefois deux protocoles ont été ajoutés afin de négocier qui sera le Maître du bus et afin de gérer la puissance. Le HNP (Host Negociation Protocol) détermine qui est l’hôte, c’est-à-dire qui initie les échanges. Le SRP (Session Request Protocol) permet de déterminer quand le lien de puissance est actif, c’est-à-dire déterminer quand le Slave USB est alimenté en 5V.
• Le USB OTG a été créé pour relier deux appareils (souvent des gadgets) qui fonctionnent souvent avec des batteries. La gestion de puissance est une facette aussi importante du OTG que la détermination de l’hôte.
• Les appareils OTG utilisent un connecteur de type mini-AB.
• L’OTG sert pour relier deux appareils USB-OTG seulement.
Gestion de Puissance
• L’USB 2.0 gère la puissance des appareils connectés sur le bus de plusieurs manières:
– L’appareil doit négocier de la puissance en se connectant – En cours d’opération, l’hôte peut débrancher un appareil.
– Des états envoyés du D+ et D- peut demander la réduction, le reset ou la mise en veille des appareils.
• USB 3.0 offre davantage de souplesse dans la gestion de la puissance parce que certains éléments du
protocole ne sont plus requis. Par exemple, le polling
pour détecter les interruptions n’est plus nécessaire et un appareil avec interruption peut être “débrancher” plus
facilement.
GIF-1001
Différences entre USB 2.0 et USB 3.0
• La table suivante résume les différences entre USB 2.0 et USB 3.0
Caractéristique USB3 USB2
8 fils + Drain (9 broches sur le connecteur) 4 fils
Même que USB2 + 2 liens différentiels 5V, D+, D-, GND
Longueur Max de câble Non spécifié (~3 mètres) 5 mètres
Encodage des octets 8/10bits NZRI
Direction FULL-DUPLEX HALF-DUPLEX
Protocole de transaction Master Slave, messages asynchrones des slaves possibles, messages avec routes distinctes
Master Slave, interruptions par polling, messages diffusés à tous
Détection d’appareil (Énumération)
Résistance de polarisation Résistances de polarisation et machine d'états de port pour HI-SPEED
Fournit 150mA de base et 900mA lors de configuration
Fournit 100mA de base et 500mA lors de configuration
Peut débrancher un périphérique pour limiter la consommation de puissance
Peut débrancher un périphérique pour limiter la consommation de puissance
Supporte la gestion de puissance à plusieurs niveaux (exemple: peut couper le transmetteur et le receveur seulement d'un appareil)
Vitesse maximum 1.5 Mbps (low-speed), 12Mbps (full-speed)
480Mbps (high-speed) Nombre de fils
5Gbps (SuperSpeed)(4Gbps effectif)
Gestion de puissance
Conception d’un périphérique sur le port USB
• Au niveau matériel, concevoir un appareil communiquant par USB est
relativement simple: l’alimentation peut être fournie par le port et il n’y a que deux lignes de communication à brancher. En faisant attention aux niveaux de tensions requis sur D+ et D- en fonction de l’état de l’appareil et des bits transmis/reçus, concevoir le matériel n’est pas très difficile. Cependant,
utiliser un microprocesseur est presque obligatoire: les bits sont transmis en série (il faut l’équivalent d’un registre à décalage), il faut décoder l’adresse des messages transmis, il faut permettre la détection automatique de
l’appareil, il faut implémenter les descripteurs USB, il faut… Notez que certains microprocesseurs comme le PIC16C745 gèrent les pins D+/D- et l’ensemble des fonctionnalités requises pour communiquer sur le port USB.
Veuillez communiquer avec le professeur pour plus d’info!
• Pour communiquer avec un périphérique sur le port USB à partir d’un PC, il faut, idéalement, créer un pilote de périphérique générique pour l’appareil.
Ensuite, il faudra créer modifier le pilote pour y introduire du code spécifique à l’appareil. Veuillez communiquer avec le professeur pour plus d’info!
GIF-1001
Références et exercices
• Références
– http://www.usb.org/developers/
– Irv Englander: p.258, 260-261
– Writing Windows WDM Device Drivers, Chris Cant, CMP Books, 1999, ISBN 0-87930-565-7, Chapitre 20
– http://membres.lycos.fr/grandzebu/electronique/usb/usb_resume.htm
• Exercices
– De quelle manière est détectée le branchement d’un nouvel appareil USB?
– Donnez les états de D+ et D- pour la séquence binaire suivante:
00110101.
– Un jeton OUT est-il toujours suivi d’un jeton DATA?
– Comment sont détectées les interruptions d’un appareil USB?
– Qu’est qu’un descripteur? Donnez 3 exemples d’utilisation des descripteurs.
– Décrivez les quatres types de transfert USB.
– Discutez du problème de synchronisation pour les transfert isochrones.
– À quoi servent les requêtes standards du JETON SETUP?