Ordinateurs, Structure et Applications GIF-1001 Cours 19, Le USB Etienne Tremblay Université Laval, Hiver 2012 GIF-1001 Cours 19, p.1 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. GIF-1001 Cours 19, p.2 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 Cours 19, p.3 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. GIF-1001 Cours 19, p.4 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 Cours 19, p.5 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. GIF-1001 Cours 19, p.6 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 Cours 19, p.7 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 Dservent 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. Mating face of USB type A female Mating face of USB type B female Tiré de usb_20.pdf (http://www.usb.org/developers/) et http://www.networktechinc.com/technote.html GIF-1001 Cours 19, p.8 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 Broche Signal Couleur Protocole Connecteur A Connecteur B Fil Fil Fil Fil 1 2 3 4 Rouge Blanc Vert Noir VBUS D? D+ GND USB 2 et USB 3 USB 2 et USB 3 USB 2 et USB 3 USB 2 et USB 3 Fil 5 Bleu StdA_SSRX? StdA_SSTX? USB 3 Fil Drain StdA_SSRX+ 6 Jaune 7 Armature GND_DRAIN StdA_SSTX+ USB 3 USB 3 Fil 8 Mauve StdA_SSTX? StdA_SSRX? USB 3 StdA_SSTX+ Fil 9 Orange Armature Armature Armature Armature StdA_SSRX+ USB 3 USB 2 et USB 3 GIF-1001 Cours 19, p.9 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. GIF-1001 Cours 19, p.10 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). Dans USB 3.0, le polling interruption n’est pas nécessaire pour détecter une interruption les esclaves peuvent signaler des évènements sur le bus FULLDUPLEX. GIF-1001 Cours 19, p.11 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 GIF-1001 Cours 19, p.12 Figures reliées au items précédents (1/2) Trame USB Exemples de paquets USB GIF-1001 Cours 19, p.13 Figures reliées au items précédents (2/2) Transactions USB Descripteurs USB GIF-1001 Cours 19, p.14 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 Cours 19, p.15 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. GIF-1001 Cours 19, p.16 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 Cours 19, p.17 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 Vitesse maximum USB3 5Gbps (SuperSpeed)(4Gbps effectif) Nombre de fils 8 fils + Drain (9 broches sur le connecteur) Même que USB2 + 2 liens différentiels Non spécifié (~3 mètres) 8/10bits FULL-DUPLEX Master Slave, messages asynchrones des slaves possibles, messages avec routes distinctes Résistance de polarisation Longueur Max de câble Encodage des octets Direction Protocole de transaction Détection d’appareil (Énumération) Gestion de puissance Fournit 150mA de base et 900mA lors de configuration 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) USB2 1.5 Mbps (low-speed), 12Mbps (full-speed) 480Mbps (high-speed) 4 fils 5V, D+, D-, GND 5 mètres NZRI HALF-DUPLEX Master Slave, interruptions par polling, messages diffusés à tous Résistances de polarisation et machine d'états de port pour HI-SPEED Fournit 100mA de base et 500mA lors de configuration Peut débrancher un périphérique pour limiter la consommation de puissance GIF-1001 Cours 19, p.18 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 Cours 19, p.19 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? GIF-1001 Cours 19, p.20