(Universal Serial Bus) LE BUS USB (Universal Serial Bus) DIAPORAMA EN LIGNE => www.ecole.ensicaen.fr/~vienne 16 Octobre 2007 JF VIENNE
USB EST UN BUS "CONSTRUCTEURS" USB-IF : USB Implementers Forum A nonprofit corporation formed to facilitate the development of USB compliant products and promote technology COMPAQ HEWLETT-PACKARD INTEL LUCENT MICROSOFT NEC PHILIPS www.usb.org TOUTES LES INFORMATIONS OFFICIELLES SONT DISPONIBLES (EN ANGLAIS) SUR CE SITE ET NOTAMMENT LA SPÉCIFICATION DE USB 2.0 (650 pages …) 16 Octobre 2007 JF VIENNE
Après plusieurs années de développement, parution de la release 1.0 JANVIER 1996 Après plusieurs années de développement, parution de la release 1.0 SEPTEMBRE1998 Parution de la release 1.1 La vitesse du bus est limitée à : - la vitesse basse (low speed) : 1.5 Mbits/seconde. - la vitesse pleine (full speed) : 12 Mbits/seconde. AVRIL 2000 Parution de la release 2.0 Apparition de la vitesse haute (high speed) : 480 Mbits/seconde Avec cette nouvelle vitesse le bus USB prend enfin son essor pour connaître le succès que l'on connaît aujourd'hui. SI VOTRE DEVICE SUPPORTE LA VITESSE HAUTE IL DOIT COMPORTER LE LOGO : ATTENTION : USB 2.0 EST UNE NORME PAS UNE VITESSE ! Concurrent de USB : IEEE-1394 (FireWire) 400 Mbits/sec IEEE-1394b => 3.2 Gbits/sec 16 Octobre 2007 JF VIENNE
UN LIVRE QUI SEMBLE FAIRE RÉFÉRENCE : "USB Complete" par Jan Axelson (3ème Édition parue en Août 2005) Traduit en de multiples langues … mais pas en français! UN EXEMPLAIRE EST DISPONIBLE À LA BIBLIOTHEQUE DE L'ÉCOLE. 16 Octobre 2007 JF VIENNE
ARCHITECTURE DU BUS USB LE BUS USB EST UN BUS EN ÉTOILE À PLUSIEURS NIVEAUX Par ex. INTEL 82801 AB (4 ports USB) Par ex. INTEL 82371 AB Fonction Fonction PC Fonction Fonction HUB Fonction Fonction Fonction HUB HOST CONTROLLER ROOT HUB Fonction Fonction : une souris, une webcam, une imprimante, une clé USB … Device : C'est une Fonction ou un HUB. 16 Octobre 2007 JF VIENNE
ARCHITECTURE DU BUS USB LE NOMBRE DE NIVEAUX EST LIMITÉ À 7. (LE HOST CORRESPOND AU NIVEAU 1) LE NOMBRE DE HUB ENTRE LE HOST ET UN DEVICE EST LIMITÉ À CINQ. LA LONGUEUR D'UN CÂBLE DE LIAISON EST LIMITÉE À 5 MÈTRES (3 MÈTRES POUR LA VITESSE BASSE). DE CE FAIT, LE BUS USB EST UN BUS DE BUREAU. IL N'A PAS, À PRIORI, LA VOCATION À ÊTRE UN BUS INDUSTRIEL. CONFIGURATION MAXIMUM 16 Octobre 2007 JF VIENNE
IL PEUT Y AVOIR JUSQU'À 31 CLIENTS À UNE TABLE. LE RESTAURANT USB Fonction Fonction PC Fonction Fonction HUB Fonction Fonction Fonction HUB HOST CONTROLLER ROOT HUB Fonction VOICI LE RESTAURANT VOICI LA CUISINE ! VOICI LA SALLE DU RESTAURANT ! LA SALLE DU RESTAURANT A UNE CAPACITÉ DE 127 TABLES (127 DEVICES). IL PEUT Y AVOIR JUSQU'À 31 CLIENTS À UNE TABLE. 16 Octobre 2007 JF VIENNE
LES CLIENTS D'UN RESTAURANT USB EN FAIT, IL N'Y A PAS DE CLIENT INDIVIDUEL : CHAQUE FOIS QUE LA PORTE DU RESTAURANT EST FRANCHIE C'EST PAR UN GROUPE COMPOSÉ D'UN CERTAIN NOMBRE DE CLIENTS ACCOMPAGNÉS D'UN CHEF (ENDPOINT 0). UN GROUPE : AU MAXIMUM 31 CLIENTS (Y COMPRIS LE CHEF). DEUX TYPES DE CLIENTS : - LE CLIENT QUI VIENT POUR MANGER. - LE CLIENT QUI AMÈNE DE LA NOURITURE POUR LA CUISINE. - SEUL LE CHEF EST LÀ POUR MANGER ET AMENER DE LA NOURITURE. LE GROUPE SE VOIT ATTRIBUER L'UNE DES 127 TABLES. ATTENTION : IL S'AGIT D'UN RESTAURANT D'ENTREPRISES : UNE FOIS LE GROUPE INSTALLÉ À TABLE, ON VA DEMANDER AU CHEF DE COMMUNIQUER CERTAINES INFORMATIONS (DESCRIPTEURS), ENTRE AUTRES : - DE QUELLE ENTREPRISE (VID) S'AGIT-IL ? - À L'INTÉRIEUR DE CETTE ENTREPRISE, DE QUEL SERVICE (PID) S'AGIT-IL ? CECI ÉTANT FAIT, IL SERA DEMANDÉ AU CHEF DE PRÉCISER LE NOMBRE DE CLIENTS QUI L'ACCOMPAGNENT ET QUEL SERVICE POUR CHACUN DES MEMBRES DU GROUPE. 16 Octobre 2007 JF VIENNE
LES CLIENTS HYPOGLYCÉMIQUES. LES CLIENTS D'UN RESTAURANT USB (SUITE) EN FAIT, LA FONCTION ESSENTIELLE DU CHEF C'EST DE FAIRE L'INTERLOCUTEUR AVEC LA CUISINE POUR PRÉSENTER CHAQUE CLIENT EN PRÉCISANT LA NATURE DU SERVICE REQUIS POUR CHACUN . ACCESSOIREMENT, IL NE LUI EST PAS INTERDIT,PAR LA SUITE, DE PARTICIPER AU REPAS. LES CLIENTS QUI ACCOMPAGNENT LE CHEF SONT DE TROIS SORTES : LES CLIENTS HYPOGLYCÉMIQUES. LES CLIENTS "COOL". LES CLIENTS BOULIMIQUES. 16 Octobre 2007 JF VIENNE
LES CLIENTS HYPOGLYCÉMIQUES (INTERRUPT TRANSFERT) POUR CE TYPE DE CLIENT IL EST ESSENTIEL D'ASSURER QUE L'INTERVALLE DE TEMPS ENTRE DEUX PLATS NE DÉPASSE PAS UNE CERTAINE VALEUR FIXÉE PAR LE CLIENT. SI, PAR EXEMPLE, CET INTERVALLE DE TEMPS EST DEUX MINUTES CELA SIGNIFIE QUE LE CLIENT NE RESTERA JAMAIS PLUS DE DEUX MINUTES SANS VOIR LE SERVEUR S'OCCUPER DE LUI. IL EST TOUTEFOIS POSSIBLE QUE MOINS DE DEUX MINUTES S'ÉCOULENT ENTRE DEUX PASSAGES DU SERVEUR POUR CE CLIENT. IL NE S'AGIT DONC PAS D'UN SERVICE OBLIGATOIREMENT PÉRIODIQUE. EXEMPLES : SOURIS, CLAVIER … 16 Octobre 2007 JF VIENNE
LES CLIENTS "COOL" (BULK TRANSFERT) EXEMPLES : IMPRIMANTE, SCANNER … CES CLIENTS N'IMPOSENT AUCUNE CONTRAINTE TEMPORELLE : ILS ONT TOUT LE TEMPS QU'IL FAUDRA POUR MANGER! VU DE LA CUISINE CE SONT ÉVIDEMMENT LES CLIENTS LES PLUS FACILES À SATISFAIRE. NATURELLEMENT, SI ON LEUR PRÉSENTE UN PLAT TROP VITE, CES CLIENTS ONT LA POSSIBILITÉ DE DIRE QU'ILS N'ONT PAS ENCORE TERMINÉ LE PLAT PRÉCÉDENT ET QUE DONC IL CONVIENDRA DE PRÉSENTER, À NOUVEAU, LE PLAT SUIVANT PLUS TARD (NAK). EXEMPLES : IMPRIMANTE, SCANNER … 16 Octobre 2007 JF VIENNE
LES CLIENTS BOULIMIQUES (ISOCHRONOUS TRANSFERT) CES CLIENTS EXIGENT UN DÉBIT GARANTI DE NOURRITURE ! VU DE LA CUISINE CE SONT ÉVIDEMMENT LES CLIENTS LES PLUS DIFFICILES À SATISFAIRE. C'EST PAR EXEMPLE LE MANGEUR DE RACLETTE QUI EXIGE 50 GRAMMES DE FROMAGE À LA MINUTE … ET LA CUISINE EST TENUE DE RESPECTER CETTE EXIGENCE. À NOTER QUE CE TYPE DE CLIENT EST UN VÉRITABLE GLOUTON ET QUE MÊME SI IL Y A UN ASTICOT DANS SON ASSIETTE IL N'EST PAS QUESTION DE LUI RAMENER UNE ASSIETTE CORRECTE. TANT PIS : C'EST DÉJÀ AVALÉ! EXEMPLES : DEVICES AUDIO & VIDÉO 16 Octobre 2007 JF VIENNE
LES LIMITES DU RESTAURANT USB CERTES, LE RESTAURANT EST GRAND (127 TABLES). CERTES, UNE TABLE PEUT ACCUEILLIR JUSQU'À 31 CLIENTS. MAIS … SI BEAUCOUP DE CLIENTS COMMANDENT UNE RACLETTE : IL DEVIENT IMPOSSIBLE D'ASSURER UN SERVICE CORRECT ! DONC : LA CUISINE PEUT REFUSER DE S'OCCUPER D'UNE TABLE DANS LA MESURE OÙ ELLE SAIT QU'ELLE EST INCAPABLE D'ASSURER LE SERVICE DEMANDÉ. SOLUTION (?) : EXISTE T IL UN AUTRE RESTAURANT USB ? 16 Octobre 2007 JF VIENNE
LES RESTAURANTS USB PC Fonction Fonction Fonction Fonction HUB HOST CONTROLLER 1 ROOT HUB 1 Fonction Fonction Fonction HOST CONTROLLER 2 ROOT HUB 2 Fonction Fonction Fonction HUB Fonction Fonction Fonction 16 Octobre 2007 JF VIENNE
LES RESTAURANTS USB (SUITE) COMBIEN DE CONTRÔLEURS USB DANS LE PC UTILISÉ POUR VISIONNER CE DIAPORAMA ? DEUX POSSIBILITÉS POUR OBTENIR LA RÉPONSE : -1- AVEC LE POSTE DE TRAVAIL. -2- AVEC LE LOGICIEL USBVIEW. USBVIEW EST UN PETIT LOGICIEL FREEWARE PROPOSÉ PAR MICROSOFT QUE L'ON PEUT FACILEMENT OBTENIR PAR INTERNET : Google => USBVIEW CE LOGICIEL NOUS SERA TRÈS UTILE EN TP. 16 Octobre 2007 JF VIENNE
LES CONTRÔLEURS USB DE CE PC IL Y A CINQ CONTRÔLEURS USB DANS CE PC. VOICI L'INFORMATION FOURNIE PAR USBVIEW : IL Y A CINQ CONTRÔLEURS USB DANS CE PC. 16 Octobre 2007 JF VIENNE
LES CONTRÔLEURS USB DE CE PC VOICI L'INFORMATION FOURNIE PAR USBVIEW : IL S'AGIT D'UNE SOURIS 16 Octobre 2007 JF VIENNE
USB On-The-Go USB USB On-The-Go : INTRODUIT EN 2001 COMME UN COMPLÉMENT À LA SPÉCIFICATION 2.0. USB On-The-Go DÉFINIT UN "HOST COMPUTER" AVEC DES POSSIBILITÉS RÉDUITES POUR PERMETTRE UNE COMMUNICATION USB "PERR TO PEER" ENTRE DEUX APPAREILS. NB : À PROPOS DE USB On-The-Go => ARTICLE À NOTRE AVIS EXCELLENT (ET HUMOURISTIQUE !) REPRODUIT À LA PAGE 25 [USB (Présentation)] DE VOTRE POLYCOPIÉ. 16 Octobre 2007 JF VIENNE
PLUS D'INFORMATIONS : www.usb.org WIRELESS USB (WUSB) USB SANS FIL : CELA EXISTE ! 480 MBits/sec jusqu'à 3 mètres et 110 Mbits/sec jusqu'à 10 mètres, pour une consommation de 100 à 300 mW. Bluetooth : 1 Mbits/sec jusqu'à 10 mètres… pour une consommation de à peine 1 mW. LES PREMIERS DEVICES WUSB SONT ATTENDUS POUR LE MILIEU DE L'ANNÉE 2007. PLUS D'INFORMATIONS : www.usb.org 16 Octobre 2007 JF VIENNE
BUS USB : ASPECT ÉLECTRIQUE UN CÂBLE USB COMPORTE 4 FILS : - DEUX FILS D+ ET D- (PAIRE DIFFÉRENTIELLE) POUR VÉHICULER LES DONNÉES. - DEUX FILS (ROUGE VBus, ET NOIR (Masse)) POUR L'ALIMENTATION (SI BESOIN) DU DEVICE. HORMIS POUR LA VITESSE BASSE OÙ CELA N'EST PAS OBLIGATOIRE CE CÂBLE EST BLINDÉ. VBus EST CAPABLE DE DÉLIVRER 500 mA SOUS 5V POUR ALIMENTER UN OU PLUSIEURS DEVICES. Volts ÉTAT DU BUS État Haut Differential "1" D+ à l'état haut D- à l'état bas +2,8V Differential "0" D+ à l'état bas D- à l'état haut SE0 D+ et D- à l'état bas +0,3V J State (Low Speed) Differential "0" État Bas J State (Full Speed) Differential "1" PLUS D'INFORMATIONS : NORME USB 2.0 CHAPTER 7 K State (Low Speed) Differential "1" K State (Full Speed) Differential "0" 16 Octobre 2007 JF VIENNE
CODAGE DES INFORMATIONS LE BUS USB EST UN BUS SÉRIE SYNCHRONE QUI UTILISE LE CODAGE NRZI (Non Return to Zero Inverted). - LES 0 LOGIQUES PROVOQUENT UNE TRANSITION. - LES 1 LOGIQUES NE PROVOQUENT PAS DE TRANSITIONS. GRACE AU CODAGE NRZI LE RÉCEPTEUR PEUT RECONSTITUER L'HORLOGE DE L'ÉMETTEUR … À CONDITION QUE LA DONNÉE TRANSMISE COMPORTE SUFFISAMMENT DE BITS À 0. POUR PALLIER À CET INCONVÉNIENT USB UTILISE LA TECHNIQUE DU "BIT STUFFING". 16 Octobre 2007 JF VIENNE
CODAGE DES INFORMATIONS (SUITE) LE "BIT STUFFING" : 16 Octobre 2007 JF VIENNE
DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE DANS UN DEVICE FONCTIONNANT À BASSE VITESSE (1,5 Mbits/Sec) LA LIGNE D- COMPORTE UNE RÉSISTANCE DE PULL UP RELIÉE À +3,3V. C'EST AINSI QUE, DÈS LA CONNEXION DU DEVICE AU HUB, CELUI-CI DÉTECTE LA PRÉSENCE D'UN DEVICE "LOW SPEED". 16 Octobre 2007 JF VIENNE
DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE (SUITE) DANS UN DEVICE FONCTIONNANT À VITESSE PLEINE (12 Mbits/Sec) LA LIGNE D+ COMPORTE UNE RÉSISTANCE DE PULL UP RELIÉE À +3,3V. C'EST AINSI QUE, DÈS LA CONNEXION DU DEVICE AU HUB, CELUI-CI DÉTECTE LA PRÉSENCE D'UN DEVICE "FULL SPEED". 16 Octobre 2007 JF VIENNE
DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE (SUITE ET FIN) QUID POUR UN DEVICE SUPPORTANT LA VITESSE HAUTE (480 Mbits/Sec) ? TOUS LES DEVICES SUPPORTANT LA VITESSE HAUTE SONT ÉGALEMENT CAPABLES DE TRAVAILLER À LA VITESSE PLEINE. LORS DE LA CONNEXION AVEC LE HUB CES DEVICES SE PRÉSENTENT COMME DES DEVICES VITESSE PLEINE (PULL UP SUR D+). 16 Octobre 2007 JF VIENNE
CONTRÔLE => POUR LES COMMUNICATIONS AVEC LE CHEF D'UNE TABLE. TRANSFERT QUAND, COTÉ HOST, UN DRIVER DÉSIRE COMMUNIQUER AVEC UN DEVICE IL INITIALISE UN TRANSFERT. LA NORME DÉFINIT UN TRANSFERT COMME "THE PROCESS OF MAKING AND CARRYING OUT A COMMUNICATION REQUEST". UN TRANSFERT PEUT SE LIMITER À L'ENVOI DE QUELQUES OCTETS (SOURIS…) OU À LA TRANSMISSION D'UN GROS FICHIER (IMPRIMANTE …). NOUS ALLONS VOIR QU'IL EXISTE QUATRE TYPES DE TRANSFERT ET SOUVENONS NOUS DU RESTAURANT USB : CONTRÔLE => POUR LES COMMUNICATIONS AVEC LE CHEF D'UNE TABLE. INTERRUPTION => POUR LES COMMUNICATIONS AVEC LES CLIENTS HYPOGLYCÉMIQUES. BLOC (BULK) => POUR LES COMMUNICATIONS AVEC LES CLIENTS "COOL". ISOCHRONES => POUR LES COMMUNICATIONS AVEC LES CLIENTS BOULIMIQUES. 16 Octobre 2007 JF VIENNE
QUATRE TYPES DE TRANSFERT (SUITE) TRANSFERT DE CONTRÔLE - Ce type de transfert est destiné à la configuration et la commande d'un Device. - Ces transferts sont notamment utilisés pour la phase d'énumération. - Un système de retransmission en cas d'erreur assure la fiabilité du transfert. - TOUS les devices USB supportent ce type de transfert. PHASE D'ÉNUMÉRATION : C'est l'installation à une table d'un Device (Un certain nombre de clients accompagnés d'un chef). Le host interroge le chef (endpoint 0) pour identifier le groupe de clients (Entreprise, service dans l'entreprise, vitesse, nombre de clients (endpoints) et pour chaque client (endpoint) quel type de service …). En fait, les transferts de contrôle sont avant tout destinés au dialogue entre la cuisine (le host) et un chef (endpoint 0 d'un device). 16 Octobre 2007 JF VIENNE
QUATRE TYPES DE TRANSFERT (SUITE) TRANSFERT PAR INTERRUPTION - Ces transferts sont utilisés pour les devices ayant peu de données à transmettre ou à recevoir, mais avec un délai garanti. - Il ne s'agit pas vraiment d'interruption (au sens microprocesseur du terme) mais d'interrogation du device par le host à une cadence minimum garantie. - Un système de retransmission en cas d'erreur assure la fiabilité du transfert. C'est ce type de transfert que l'on retiendra pour une souris, un clavier … 16 Octobre 2007 JF VIENNE
QUATRE TYPES DE TRANSFERT (SUITE) TRANSFERT PAR BLOC (BULK TRANSFERT) - Ces transferts, parfois appelés transferts asynchrones, sont adaptés aux gros volumes de données sporadiques et sans contrainte temporelle. - Le host peut retarder un transfert en bloc jusqu'à disposer de suffisamment de bande passante. - Un système de retransmission en cas d'erreur assure la fiabilité du transfert. - Ce type de transfert n'existe que pour les vitesses pleine et haute. C'est ce type de transfert que l'on retiendra pour une imprimante, un scanner, une clé USB … 16 Octobre 2007 JF VIENNE
QUATRE TYPES DE TRANSFERT (SUITE) TRANSFERT ISOCHRONE (ISOCHRONOUS TRANSFERT) - Ces transferts sont à débit constant et destinés aux flux de données importants. - Le débit du canal est garanti. - Les erreurs sont signalées mais il n'y a pas de retransmission. - Ce type de transfert n'existe que pour les vitesses pleine et haute. C'est ce type de transfert que l'on retiendra pour tous les devices audio & vidéo … 16 Octobre 2007 JF VIENNE
TERMINAISON (ENDPOINT) NOUS ALLONS SOUVENT ÊTRE AMENÉS À PARLER DE ENDPOINTS. DE QUOI S'AGIT-IL ? C'EST TRÈS SIMPLE SI L'ON SE SOUVIENT DU RESTAURANT USB … UNE TABLE C'EST UN CHEF ACCOMPAGNÉ DE PLUSIEURS CLIENTS. TRADUCTION : UN DEVICE EST OBLIGATOIREMENT COMPOSÉ DU ENDPOINT 0 (LE CHEF) ET D'UN CERTAIN NOMBRE D'AUTRES ENDPOINTS (LES CLIENTS). CES DERNIERS ENDPOINTS ONT UN NUMÉRO ENTRE 1 ET 15 (SAUF POUR LA VITESSE BASSE OU LE NOMBRE EST LIMITÉ À 3). DONC : CHAQUE CLIENT À UN NUMÉRO (ENTRE 1 ET 15; 0 POUR LE CHEF). MAIS (HORMIS POUR LE CHEF) IL Y A LE CLIENT QUI EST LÀ POUR MANGER, ET LE CLIENT QUI EST LÀ POUR APPORTER DE LA NOURRITURE. IL PEUT DONC Y AVOIR, PAR EXEMPLE, DEUX CLIENTS NUMÉRO 1 : LE CLIENT NUMÉRO 1 QUI AMÈNE DE LA NOURRITURE (ENDPOINT DE TYPE IN) ET LE CLIENT NUMÉRO 1 QUI EST LÀ POUR MANGER (ENDPOINT DE TYPE OUT). 16 Octobre 2007 JF VIENNE
UN CANAL (PIPE) USB N'EST PAS UN OBJET PHYSIQUE. C'EST JUSTE UNE ASSOCIATION ENTRE UN ENDPOINT D'UN DEVICE ET LE LOGICIEL DU CONTRÔLEUR USB DU HOST. 16 Octobre 2007 JF VIENNE
ORGANISATION DU TRAFIC SUR LE BUS LE HOST DOIT ESSAYER D'ASSURER UN MAXIMUM DE RAPIDITÉ POUR CHAQUE TRANSFERT ET CELA AVEC UNE SEULE PAIRE DIFFÉRENTIELLE (COMMUNICATION HALF DUPLEX). CETTE PAIRE DIFFÉRENTIELLE CONSTITUE UN CHEMIN PHYSIQUE PARTAGÉ PAR TOUS LES DEVICES. TRADUCTION : IL N'Y A QU'UN SEUL SERVEUR DANS LA SALLE DE RESTAURANT. CELUI-CI PEUT ÊTRE UTILISÉ SOIT : - POUR AMENER DE LA NOURRITURE À UN CLIENT (ENDPOINT DE TYPE OUT) - POUR PRÉLEVER DE LA NOURRITURE À UN CLIENT (ENDPOINT DE TYPE IN). ET CHAQUE CLIENT DOIT ÊTRE SERVI CONFORMÉMENT AUX SOUHAITS QU'IL A EXPRIMÉ EN S'INSTALLANT AU RESTAURANT. 16 Octobre 2007 JF VIENNE
ORGANISATION DU TRAFIC SUR LE BUS LE HOST DÉCOMPOSE LE TRAFIC SUR LE BUS EN TRAMES : - TRAMES DE 1 ms POUR LES VITESSES BASSE ET PLEINE. - TRAMES (MICRO TRAMES) de 125 μs POUR LA VITESSE HAUTE. NON UTILISÉ NON UTILISÉ Device 5, Endpoint 3 Device 3, Endpoint 2 NON UTILISÉ Device 5, Endpoint 3 Device 5, Endpoint 3 Device 5, Endpoint 1 Device 3, Endpoint 1 Device 2, Endpoint 2 Device 5, Endpoint 2 Device 3, Endpoint 3 Start of Frame Start of Frame Device 1, Endpoint 2 Device 2, Endpoint 1 Start of Frame Start of Frame Device 1, Endpoint 2 Start of Frame Start of Frame Device 1, Endpoint 2 Device 2, Endpoint 3 TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRANSACTIONS LE HOST ATTRIBUE À CHAQUE TRANSFERT UNE PORTION DE TRAME. CETTE PORTION CORRESPOND À CE QUE L'ON APPELLE UNE TRANSACTION. LE HOST EST LIBRE D'ORGANISER LIBREMENT LES TRANSACTIONS À L'INTÉRIEUR D'UNE TRAME. 16 Octobre 2007 JF VIENNE
ORGANISATION DU TRAFIC SUR LE BUS TRANSACTIONS NON UTILISÉ Device 3, Endpoint 2 NON UTILISÉ NON UTILISÉ Device 5, Endpoint 3 Device 5, Endpoint 3 Device 5, Endpoint 1 Device 3, Endpoint 1 Device 5, Endpoint 3 Device 2, Endpoint 2 Device 5, Endpoint 2 Device 3, Endpoint 3 Start of Frame Start of Frame Device 1, Endpoint 2 Device 2, Endpoint 1 Start of Frame Start of Frame Device 1, Endpoint 2 Start of Frame Start of Frame Device 1, Endpoint 2 Device 2, Endpoint 3 TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRANSACTIONS VITESSE LENTE ET VITESSE PLEINE : À L'INTÉRIEUR D'UNE TRAME, IL N'EST PAS POSSIBLE D'AVOIR PLUSIEURS TRANSACTIONS AVEC LE MÊME ENDPOINT. VITESSE HAUTE : À L'INTÉRIEUR D'UNE (MICRO)TRAME, IL EST POSSIBLE D'AVOIR JUSQU'À TROIS TRANSACTIONS AVEC LE MÊME ENDPOINT. DE QUOI SATISFAIRE LES HYPER BOULIMIQUES … 16 Octobre 2007 JF VIENNE
TRANSFERT, TRANSACTIONS ET PAQUETS CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS. TRANSACTION TRANSACTION TRANSACTION CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS). IL Y A TROIS TYPES DE PAQUETS : -J : LE PAQUET JETON (TOKEN PACKET) -D : LE PAQUET DE DONNÉES (DATA PACKET) -A : LE PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET) LES COMBINAISONS POSSIBLES SONT : J JD JA JDA PAQUET JETON TOKEN PACKET PAQUET DONNÉES DATA PACKET PAQUET D'ACQUITTEMENT HANDSHAKE PACKET SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC). UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet) 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS. TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP. LE CHAMP SYNC (OU SOP : Start Of Packet) TOUS LES PAQUETS DÉBUTENT PAR LE CHAMP SYNC (SYNCHRONISATION). CE CHAMP (8 BITS POUR LES VITESSES BASSE ET PLEINE, 32 BITS POUR LA VITESSE HAUTE) EST UTILISÉ POUR SYNCHRONISER L'HORLOGE DU RÉCEPTEUR AVEC L'HORLOGE DE L'ÉMETTEUR. POUR LES VITESSES BASSE ET PLEINE CE CHAMP CORRESPOND À LA SÉQUENCE BINAIRE : 00000001. APRÈS CODAGE NRZI, LE SIGNAL SUR LE BUS EST LE SUIVANT : 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET (SUITE) LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS. TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP. LE CHAMP PID (Packet IDentifier) CE CHAMP QUI COMPORTE 8 BITS EST UTILISÉ POUR IDENTIFIER LE TYPE DE PAQUET ENVOYÉ. LES VALEURS POSSIBLES SONT LES SUIVANTES (USB 1.1) : LE PID EST CODÉ SUR 4 BITS : A B C D. TOUTEFOIS, POUR GARANTIR QU'IL A ÉTÉ REÇU CORRECTEMENT C'EST UN OCTET QUI EST TRANSMIS : A B C D A B C D 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET (SUITE ET FIN) LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS. TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP. LE CHAMP EOP (End Of Packet) CE CHAMP EST COMPOSÉ DE 3 BITS. IL EST DÉTECTÉ PAR LE PASSAGE DU BUS À L'ÉTAT SE0 (D+ ET D- À L'ÉTAT BAS) DURANT CES TROIS BITS. 16 Octobre 2007 JF VIENNE
TRANSFERT, TRANSACTIONS ET PAQUETS (RAPPEL) CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS. TRANSACTION TRANSACTION TRANSACTION CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS). IL Y A TROIS TYPES DE PAQUETS : -J : LE PAQUET JETON (TOKEN PACKET) -D : LE PAQUET DE DONNÉES (DATA PACKET) -A : LE PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET) LES COMBINAISONS POSSIBLES SONT : J JD JA JDA PAQUET JETON TOKEN PACKET PAQUET DONNÉES DATA PACKET PAQUET D'ACQUITTEMENT HANDSHAKE PACKET SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC). UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet) 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET JETON (TOKEN PACKET) TRANSFERT CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS. TRANSACTION TRANSACTION TRANSACTION CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS). IL Y A TROIS TYPES DE PAQUETS : -J : LE PAQUET JETON (TOKEN PACKET) -D : LE PAQUET DE DONNÉES (DATA PACKET) -A : LE PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET) LES COMBINAISONS POSSIBLES SONT : J JD JA JDA PAQUET JETON TOKEN PACKET PAQUET DONNÉES DATA PACKET PAQUET D'ACQUITTEMENT HANDSHAKE PACKET SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC). UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet) 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET JETON (SUITE) IL Y A 4 TYPES DE PAQUET JETON : - OUT INFORME LE DEVICE QUE HOST VA LUI ENVOYER DES DONNÉES. - IN INFORME LE DEVICE QUE LE HOST VAT LUI DEMANDER DES DONNÉES. - SOF PAQUET ÉMIS PAR LE HOST AU DÉBUT DE CHAQUE TRAME ET CONTENANT LE NUMÉRO DE LA TRAME MODULO 7FFFH. - SETUP UTILISÉ POUR DÉBUTER UN TRANSFERT DE CONTRÔLE. 16 Octobre 2007 JF VIENNE
PAQUET JETON IN, OUT OU SETUP PAQUET JETON SOF COMPOSITION D'UN PAQUET JETON (SUITE ET FIN) SYNC PID ADDR ENDP CRC EOP 8/32 8 7 4 5 3 PAQUET JETON IN, OUT OU SETUP ADDR ADRESSE DU DEVICE SUR 7 BITS. TANT QU'UN DEVICE N'A PAS ENCORE REÇU D'ADRESSE IL DOIT RÉPONDRE À L'ADRESSE 0. ENDP NUMÉRO DU ENDPOINT SUR 4 BITS. CRC CODE CORRECTEUR D'ERREUR 5 BITS CALCULÉ SUR [ADDR ENDP]. SYNC PID NUMÉRO DE TRAME CRC EOP 8/32 8 11 5 3 PAQUET JETON SOF NUMÉRO DE TRAME LES TRAMES SONT NUMÉROTÉES SUR 11 BITS, MODULO 7FFFH. CRC CODE CORRECTEUR D'ERREUR 5 BITS CALCULÉ SUR NUMÉRO DE TRAME. 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET DE DONNÉES TRANSFERT CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS. TRANSACTION TRANSACTION TRANSACTION CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS). IL Y A TROIS TYPES DE PAQUETS : -J : LE PAQUET JETON (TOKEN PACKET) -D : LE PAQUET DE DONNÉES (DATA PACKET) -A : LE PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET) LES COMBINAISONS POSSIBLES SONT : J JD JA JDA PAQUET JETON TOKEN PACKET PAQUET DONNÉES DATA PACKET PAQUET D'ACQUITTEMENT HANDSHAKE PACKET SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC). UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet) 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET DE DONNÉES (SUITE) PAQUET DE DONNÉES "PAIR" PAQUET DE DONNÉES "IMPAIR" LES PAQUETS DE DONNÉES SONT TOUJOURS TRANSMIS EN COMMENCANT PAR DATA0 (PAQUET PAIR) PUIS EN RESPECTANT LA COMMUTATION DATA1/DATA0 (PAQUET IMPAIR/PAQUET PAIR). AINSI, SI LE RÉCEPTEUR REÇOIT SUCCESSIVEMENT DEUX PAQUETS DE DONNÉES AVEC LA MÊME PARITÉ UNE ERREUR EST DÉTECTÉE ET PEUT ÊTRE CORRIGÉE. 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET DE DONNÉES (SUITE ET FIN) SYNC PID DONNÉES CRC EOP 8/32 8 0 à 1023/1024 octets 16 3 PAQUET DE DONNÉES DONNÉES CE SONT LES DONNÉES "UTILES" (PAYLOAD). Taille maximale : 8 octets pour la vitesse basse. Selon le type de transfert, 1023 octets pour la vitesse pleine et 1024 octets pour la vitesse haute. CRC CODE CORRECTEUR D'ERREUR 16 BITS CALCULÉ SUR DONNÉES. 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET). TRANSFERT CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS. TRANSACTION TRANSACTION TRANSACTION CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS). PAQUET JETON TOKEN PACKET PAQUET DONNÉES DATA PACKET PAQUET D'ACQUITTEMENT HANDSHAKE PACKET SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC). UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet) 16 Octobre 2007 JF VIENNE
COMPOSITION D'UN PAQUET D'ACQUITTEMENT SYNC PID EOP 8/32 8 3 PAQUET D'ACQUITTEMENT (ACK, NAK, STALL) IL Y A TROIS SORTES DE PAQUET D'ACQUITTEMENT. TOUTE L'INFORMATION EST CONTENUE DANS LE PID : ACK Acknowledge pour valider la réception sans erreur d'un paquet de données. NAK Rapporte que temporairement le device n'est pas prêt à recevoir ou transmettre des données. STALL Bloqué : le device se trouve dans un état qui va exiger une intervention du host. 16 Octobre 2007 JF VIENNE
IMPRIMANTE USB – VITESSE PLEINE (12 Mbits/sec) QUEL TYPE DE TRANSFERT ? => TRANSFERT PAR BLOC TRANSFERT PAR BLOC ET VITESSE PLEINE : LA NORME IMPOSE UN MAXIMUM DE 64 OCTETS "UTILES" PAR TRANSACTION. EN SUPPOSANT QUE LE BUS N'EST PAS SATURÉ, COMBIEN PEUT-ON TRANSMETTRE D'OCTETS À L'IMPRIMANTE PAR SECONDE ? => 64 OCTETS PAR TRAME, SOIT 64000 OCTETS /Sec (~64 Ko/sec). QUEL EST LE POURCENTAGE DE LA BANDE PASSANTE DU BUS ? => UNE TRANSACTION PAR TRAME : => PAQUET JETON : 8 + 8 + 11 + 5 + 3 => 35 BITS => PAQUET DE DONNÉES : 8 + 8 + 512 + 16 + 3 => 547 BITS => PAQUET D'ACQUITTEMENT : 8 + 8 + 3 => 19 BITS => TOTAL : 35 + 547 + 19 => 601 BITS => 601 BITS À 12 000 BITS/ms => 0.05 ms => 5% DE LA BANDE PASSANTE. 16 Octobre 2007 JF VIENNE
BANDE PASSANTE RÉSERVÉE POUR CES TRANSFERTS : 10% (LS ET FS) 20% (HS). TRANSFERT DE CONTRÔLE RAPPEL : IL EXISTE 4 TYPES DE TRANSFERT : - TRANSFERT DE TYPE CONTRÔLE. - TRANSFERT DE TYPE INTERRUPTION. - TRANSFERT DE TYPE BLOC (BULK TRANSFERT). - TRANSFERT DE TYPE ISOCHRONE. LES TRANSFERTS DE CONTRÔLE SONT DESTINÉS À LA CONFIGURATION ET LA COMMANDE D'UN DEVICE. NOTAMMENT, LA PHASE D'ÉNUMÉRATION UTILISE UNIQUEMENT DES TRANSFERTS DE CONTRÔLE. CECI IMPLIQUE QUE TOUS LES DEVICES SUPPORTENT CE TYPE DE TRANSFERT. BANDE PASSANTE RÉSERVÉE POUR CES TRANSFERTS : 10% (LS ET FS) 20% (HS). 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : TROIS PHASES UN TRANSFERT DE CONTRÔLE EST UN TRANSFERT ENTRE LE HOST ET LE ENDPOINT 0 D'UN DEVICE (LE CHEF D'UNE TABLE). TROIS PHASES (STAGES) DANS UN TRANSFERT DE CONTRÔLE : - PHASE D'INSTALLATION. - [PHASE DE DONNÉES] (SI BESOIN). - PHASE D'ÉTAT. 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : PHASE D'INSTALLATION (SETUP PHASE) CETTE PHASE CORRESPOND À UNE TRANSACTION COMPRENANT LES 3 PAQUETS SUIVANTS : Device > Host Host > Device PID = ACK Idle Idle JETON DATA ACQUITTEMENT Erreur =>Idle PID = SETUP PID = DATA0 LE PAQUET DE DONNÉES (TOUJOURS 8 OCTETS) SPÉCIFIE LE TYPE DE LA DEMANDE CORRESPONDANT À CE TRANSFERT DE CONTRÔLE. LE PAQUET D'ACQUITTEMENT EST ÉMIS PAR LE DEVICE. SI CELUI-CI N'A PAS DÉTECTÉ D'ERREUR (PID, CRC …), LE PID DU PAQUET D'ACQUITTEMENT EST ACK (NAK ET STALL INTERDITS). SINON LE DEVICE N'ENVOIE PAS DE PAQUET D'ACQUITTEMENT. 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : 2ème PHASE => PHASE DE DONNÉES 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : PHASE DE DONNÉES POUR UN TRANSFERT DE CONTRÔLE EN ÉCRITURE (OUT) Device > Host Host > Device Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = OUT PID = DATA1/DATA0 Idle ACQUITTEMENT PID=STALL Erreur =>Idle 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : PHASE DE DONNÉES POUR UN TRANSFERT DE CONTRÔLE EN LECTURE (IN) Device > Host PID = DATA1/DATA0 Host > Device Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = IN Idle ACQUITTEMENT PID=STALL Erreur =>Idle 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : 3ème PHASE => PHASE D'ÉTAT (STATUS) LA PHASE D'ÉTAT (STATUS STAGE) SE LIMITE À UNE SEULE TRANSACTION IN OU OUT, ENCORE APPELÉE TRANSACTION D'ÉTAT. CETTE DERNIÈRE PHASE VA PERMETTRE AU DEVICE DE SIGNIFIER LA RÉUSSITE OU L'ÉCHEC DES PHASES PRÉCÉDENTES. 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : PHASE D'ÉTAT POUR UN TRANSFERT DE CONTRÔLE EN ÉCRITURE (OUT) Device > Host PID = DATA1 Host > Device Idle Idle JETON DATA (0 OCTET) ACQUITTEMENT PID=ACK Erreur =>Idle PID = IN Idle ACQUITTEMENT PID=STALL Idle ACQUITTEMENT PID=NAK 16 Octobre 2007 JF VIENNE
TRANSFERT DE CONTRÔLE : PHASE D'ÉTAT POUR UN TRANSFERT DE CONTRÔLE EN LECTURE (IN) Device > Host PID = DATA1 Host > Device Idle Idle JETON DATA (0 OCTET) ACQUITTEMENT PID=ACK Erreur =>Idle PID = OUT Idle ACQUITTEMENT PID=STALL Idle ACQUITTEMENT PID=NAK 16 Octobre 2007 JF VIENNE
EXEMPLE DE TRANSFERT DE CONTRÔLE : Get Descriptor Device 16 Octobre 2007 JF VIENNE
Get Descriptor Device : PHASE D'INSTALLATION (SETUP STAGE) Device > Host Host > Device PAQUET JETON SYNC PID=SETUP ADDR ENDP(0) CRC EOP PAQUET DONNÉES SYNC PID=DATA0 DONNÉES CRC EOP PAQUET D'ACQUITTEMENT SYNC PID=ACK EOP DANS LE PAQUET DE DONNÉES LE HOST INFORME LE DEVICE QU'IL VA LUI DEMANDER SON DEVICE DESCRIPTOR. 16 Octobre 2007 JF VIENNE
Get Descriptor Device : PHASE DE DONNÉES (DATA STAGE) Device > Host Host > Device PAQUET JETON SYNC PID=IN ADDR ENDP(0) CRC EOP PAQUET DONNÉES SYNC PID=DATA0 DONNÉES (8 OCTETS) CRC EOP PAQUET D'ACQUITTEMENT SYNC PID=ACK EOP DANS LE PAQUET DE DONNÉES LE DEVICE TRANSMET LES 8 PREMIERS OCTETS DE SON DESCRIPTOR DEVICE. UN DESCRIPTOR DEVICECOMPREND 18 OCTETS. LA PHASE DE DONNÉES VA DONC COMPRENDRE TROIS TRANSACTIONS. POUR LES DEUX PREMIÈRES LE PAQUET DE DONNÉES CONTIENT 8 OCTETS. LA TROISIÈME SE LIMITE À 2 OCTETS. 16 Octobre 2007 JF VIENNE
Get Descriptor Device : PHASE D'ÉTAT (STATUS STAGE) Device > Host Host > Device PAQUET JETON SYNC PID=IN ADDR ENDP(0) CRC EOP PAQUET DONNÉES SYNC PID=DATA1 DONNÉES (0 OCTET) CRC EOP PAQUET D'ACQUITTEMENT SYNC PID=ACK EOP 16 Octobre 2007 JF VIENNE
TRANSFERT DE TYPE INTERRUPTION 16 Octobre 2007 JF VIENNE
TRANSFERT DE TYPE INTERRUPTION (SUITE) 16 Octobre 2007 JF VIENNE
TRANSFERT EN ÉCRITURE DE TYPE INTERRUPTION ACQUITTEMENT PID=STALL Device > Host Host > Device Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = OUT PID = DATA0/DATA1 Idle ACQUITTEMENT PID=STALL Erreur =>Idle 16 Octobre 2007 JF VIENNE
TRANSFERT EN LECTURE DE TYPE INTERRUPTION ACQUITTEMENT PID=STALL Device > Host Host > Device PID = DATA0/DATA1 Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = IN Idle ACQUITTEMENT PID=STALL Erreur =>Idle 16 Octobre 2007 JF VIENNE
TRANSFERT DE TYPE BLOC (BULK TRANSFERT) 16 Octobre 2007 JF VIENNE
TRANSFERT EN ÉCRITURE DE TYPE BLOC ACQUITTEMENT PID=STALL Device > Host Host > Device Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = OUT PID = DATA0/DATA1 Idle ACQUITTEMENT PID=STALL Erreur =>Idle RIEN DE NOUVEAU (HORMIS LA TAILLE MAXIMUM DU PAQUET DATA) PAR RAPPORT AU TRANSFERT EN ÉCRITURE DE TYPE INTERRUPTION. 16 Octobre 2007 JF VIENNE
TRANSFERT EN LECTURE DE TYPE BLOC ACQUITTEMENT PID=STALL Device > Host Host > Device PID = DATA0/DATA1 Idle Idle JETON DATA ACQUITTEMENT PID=ACK Idle ACQUITTEMENT PID=NAK PID = IN Idle ACQUITTEMENT PID=STALL Erreur =>Idle RIEN DE NOUVEAU (HORMIS LA TAILLE MAXIMUM DU PAQUET DATA) PAR RAPPORT AU TRANSFERT EN LECTURE DE TYPE INTERRUPTION. 16 Octobre 2007 JF VIENNE
TRANSFERT DE TYPE ISOCHRONE (ISOCHRONOUS TRANSFERT) 16 Octobre 2007 JF VIENNE
TRANSFERT DE TYPE ISOCHRONE (SUITE) 16 Octobre 2007 JF VIENNE
TRANSFERT EN ÉCRITURE DE TYPE ISOCHRONE Device > Host Host > Device Idle Idle JETON DATA PID = OUT PID = DATA0/DATA1 16 Octobre 2007 JF VIENNE
TRANSFERT EN LECTURE DE TYPE ISOCHRONE Device > Host Host > Device Idle Idle JETON DATA PID = IN PID = DATA0/DATA1 16 Octobre 2007 JF VIENNE
LES 4 TYPES DE TRANSFERT : RÉCAPITULATION 16 Octobre 2007 JF VIENNE
-1- FAIRE L'ACQUISITION DES CARACTÉRISTIQUES DU DEVICE. L'ÉNUMÉRATION AVANT QU'UNE APPLICATION SOIT CAPABLE DE COMMUNIQUER AVEC UN DEVICE LE HOST DOIT : -1- FAIRE L'ACQUISITION DES CARACTÉRISTIQUES DU DEVICE. -2- METTRE EN ŒUVRE LE DRIVER APPROPRIÉ. L'ÉNUMÉRATION CORRESPOND À L'ENSEMBLE DES TRANSFERTS QUI VONT PERMETTRE D'EFFECTUER CES DEUX TÂCHES. Remarque préliminaire : La norme USB définit 6 états possibles pour un device. Durant la phase d'énumération un device va passer successivement par les états : - Alimenté (Powered). - Défaut (Default). - Adressé (Adressed). - Configuré (Configured). Les deux autres états sont : Attaché (Attached) et Suspendu (Suspend). 16 Octobre 2007 JF VIENNE
L'ÉNUMÉRATION SE DÉCOMPOSE EN PLUSIEURS ÉTAPES. L'ÉNUMÉRATION (SUITE) L'ÉNUMÉRATION SE DÉCOMPOSE EN PLUSIEURS ÉTAPES. LA SUITE D'ÉTAPES QUE NOUS ALLONS DÉCRIRE CORRESPOND À LA SÉQUENCE TYPE DES ÉVENEMENTS QUI S'ENCHAÎNENT AVEC WINDOWS. CEPENDANT, LA NORME USB N'IMPOSE PAS UN ORDRE DÉFINI QUAND AUX DIFFÉRENTS ÉLÉMENTS QUI CONSTITUENT L'ÉNUMÉRATION. LE FIRMWARE D'UN DEVICE DOIT DONC ÊTRE CAPABLE DE RÉPONDRE À TOUT MOMENT À N'IMPORTE QUELLE REQUÊTE DE CONTRÔLE ÉMISE PAR LE HOST. 16 Octobre 2007 JF VIENNE
-1- L'UTILISATEUR CONNECTE UN DEVICE SUR UN PORT D'UN HUB USB L'ÉNUMÉRATION (SUITE) -1- L'UTILISATEUR CONNECTE UN DEVICE SUR UN PORT D'UN HUB USB Le hub alimente le port. Le device est dans l'État Alimenté. -2- LE HUB DÉTECTE LE DEVICE. Le hub détecte la connexion d'un device par la modification de tension sur les lignes D+ ou D-. -3- LE HUB DÉTECTE LA VITESSE DE FONCTIONNEMENT DU DEVICE. La tension sur les lignes D+ ou D- permet au hub d'identifier la vitesse de fonctionnement du nouveau device, -4- LE HOST DÉCOUVRE LA PRÉSENCE D'UN NOUVEAU DEVICE. Un hub possède, entre autres, un Endpoint utilisant des transferts de type interruption et qui sert à informer le host d'une éventuelle modification (connexion ou déconnexion) sur un port du hub. Donc, le hub a détecté une modification et le host qui interroge "pseudo périodiquement" le hub en est maintenant informé. Le host va demander au hub un supplément d'information en lui envoyant une requête "GET_PORT_STATUS". C'est une requête standard parmi d'autres qui est supportée par tous les hubs. 16 Octobre 2007 JF VIENNE
-5- LE HUB EFFECTUE LE RESET DU NOUVEAU DEVICE. L'ÉNUMÉRATION (SUITE) -5- LE HUB EFFECTUE LE RESET DU NOUVEAU DEVICE. Le host sait maintenant qu'un nouveau device est connecté sur le port d'un hub. Il va demander au hub par une requête "SET_PORT_FEATURE" d'effectuer le reset du device. Pour cela le hub impose pendant au moins 10ms un niveau bas sur les lignes D+ et D- (État SE0). -6- VITESSE PLEINE OU VITESSE HAUTE ? Au cours du reset, si le nouveau device est capable de fonctionner à vitesse haute il impose momentanément un état bien défini sur les lignes D+ et D-. Si le hub supporte la vitesse haute, il envoie en réponse un "chearp" sur les lignes D+ et D-. Dès lors, le device déconnecte sa résistance de pull-up sur la ligne D+ et la vitesse haute peut-être utilisée. Sinon, le device continue à fonctionner à vitesse pleine. -7- PASSAGE À L'ÉTAT DÉFAUT. Le host vérifie que le device a terminé le reset en envoyant au hub une requête "GET_STATUS_PORT". La donnée renvoyée permet de connaître la réponse. Si nécessaire, le host répète la requête jusqu'à ce que le reset du device soit terminé. Lorsque le hub enlève le reset le device est dans l'état Défaut. Les registres USB du device sont initialisés avec leur valeur de reset et le device est maintenant prêt à répondre aux transferts de contrôle via son Endpoint 0. Le device peut consommer 100mA sur VBus. 16 Octobre 2007 JF VIENNE
-9- LE HOST ATTRIBUE UNE ADRESSE AU NOUVEAU DEVICE. L'ÉNUMÉRATION (SUITE) -8- LE HOST ÉMET UNE REQUÊTE "GET_DESCRIPTOR_DEVICE" POUR ACQUÉRIR LA TAILLE MAXIMUM DU PAQUET DE DONNÉES DU CANAL PAR DÉFAUT. Le host émet cette requête à l'adresse 0/ Endpoint 0. Le 8ème élément d'un descripteur de device contient la taille maximum des paquets de données supportés par le Endpoint 0. NB : Avec WINDOWS, le host se limite à l'acquisition des 8 premiers octets du descripteur qui en compte 18. Ensuite, toujours avec WINDOWS, le host demande au hub d'effectuer un nouveau reset du device. L'énumération recommence alors à l'étape 5. À noter que la norme n'impose nullement d'effectuer ce second reset au cours de la phase d'énumération. -9- LE HOST ATTRIBUE UNE ADRESSE AU NOUVEAU DEVICE. C'est en utilisant la commande "SET_ADDRESS" que le host attribue au nouveau device une adresse comprise entre 1 et 127. Le device est maintenant dans l'état Adressé. Désormais, toutes les transactions avec ce device vont utiliser cette adresse. 16 Octobre 2007 JF VIENNE
L'ÉNUMÉRATION (SUITE) -10- LE HOST FAIT L'ACQUISITION DES CARACTÉRISTIQUES DU NOUVEAU DEVICE. En utilisant la requête "GET_DEVICE_DESCRIPTOR" le host va maintenant faire l'acquisition complète du Device Descriptor. Ce descripteur est une structure contenant de nombreuses informations qui vont être utilisées par le host pour les requêtes qui suivent. 16 Octobre 2007 JF VIENNE
L'ÉNUMÉRATION (SUITE) -10- LE HOST FAIT L'ACQUISITION DES CARACTÉRISTIQUES DU NOUVEAU DEVICE (SUITE). 16 Octobre 2007 JF VIENNE
-11- LE HOST ATTRIBUE ET CHARGE UN DEVICE DRIVER. L'ÉNUMÉRATION (SUITE) -11- LE HOST ATTRIBUE ET CHARGE UN DEVICE DRIVER. POUR CHOISIR UN DRIVER, WINDOWS RECHERCHE LA MEILLEURE CORRESPONDANCE ENTRE LES FICHIERS .inf ET LE VID (Vendor IDentification product) ET LE PID (Product IDentification). -12- LE DEVICE DRIVER SÉLECTIONNE UNE CONFIGURATION. 16 Octobre 2007 JF VIENNE
L'ÉNUMÉRATION (SUITE ET FIN) -13- CONSOMMATION SUR VBus 16 Octobre 2007 JF VIENNE
CONFIGURATION D'UN DEVICE : LES DESCRIPTEURS 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE DEVICE (DEVICE DESCRIPTOR) 16 Octobre 2007 JF VIENNE
EXEMPLE DE DESCRIPTEUR DE DEVICE (CLÉ USB) USB 1.1 VID=08EC PID=0010 LE ENDPOINT 0 ACCEPTE DES PAQUETS DE DONNÉES DE 64 OCTETS VID=08EC PID=0010 RÉVISION 2.0 INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT LE CONSTRUCTEUR INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT LE COMPOSANT NOMBRE DE CONFIGURATIONS INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT LE NUMÉRO DE SÉRIE 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE CONFIGURATION (CONFIGURATION DESCRIPTOR) 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE CONFIGURATION (SUITE) 16 Octobre 2007 JF VIENNE
EXEMPLE DE DESCRIPTEUR DE CONFIGURATION (CLÉ USB) Desc. de configuration => 9 Desc. d'interface => 9 Desc. Endpoint => 7 TOTAL : 32 CETTE CONFIGURATION N'A QU'UNE SEULE INTERFACE DESCRIPTEUR DE CONFIGURATION POUR LA CONFIGURATION 1 PAS DE CHAÎNE DE CARACTÈRES POUR DÉCRIRE CETTE CONFIGURATION ALIMENTATION PAR VBus CONSOMMATION : 2FH => 47*2mA 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR D'INTERFACE (INTERFACE DESCRIPTOR) 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR D'INTERFACE (SUITE) IL S'AGIT DE L'INTERFACE NUMÉRO 0 VARIANTE NUMÉRO 0 2 ENDPOINTS, EN PLUS DU ENDPOINT 0 PAS DE CHAÎNE DE CARACTÈRES POUR DÉCRIRE CETTE INTERFACE. 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE ENDPOINT (ENDPOINT DESCRIPTOR) 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE ENDPOINT (SUITE) 16 Octobre 2007 JF VIENNE
EXEMPLES DE DESCRIPTEUR DE ENDPOINT (CLÉ USB) ENDPOINT DE TYPE IN À L'ADRESSE 0x81 UTILISE LES TRANSFERTS PAR BLOC. TAILLE MAXIMUM DES PAQUETS DE DONNÉES : 64 OCTETS POUR LIRE LA CLÉ USB POUR ÉCRIRE LA CLÉ USB ENDPOINT DE TYPE OUT À L'ADRESSE 0x01 UTILISE LES TRANSFERTS PAR BLOC. TAILLE MAXIMUM DES PAQUETS DE DONNÉES : 64 OCTETS 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (STRING DESCRIPTOR) UN DEVICE PEUT (CECI EST OPTIONNEL) TRANSMETTRE UN CERTAIN NOMBRE DE CHAÎNES DE CARACTÈRES AU HOST. CHAQUE CHAÎNE DE CARACTÈRES EST STOCKÉE DANS LA MÉMOIRE DU DEVICE ET CORRESPOND À UN NUMÉRO (ON DIT PLUTÔT UN INDICE). EXEMPLE : LE DESCRIPTEUR DE DEVICE COMPREND, ENTRE AUTRES, LES CHAMPS iManufacturer, iProduct ET iSerialNumber. LORSQUE LA VALEUR D'UN DE CES CHAMPS EST NULLE CELA SIGNIFIE QUE LE DEVICE NE POSSÈDE PAS DE CHAÎNE DE CARACTÈRES RELATIVE À CE CHAMP. SI LA VALEUR EST DIFFÉRENTE DE 0, CETTE VALEUR REPRÉSENTE "LE NUMÉRO" DE LA CHAÎNE DE CARACTÈRES RELATIVE À CE CHAMP. 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (SUITE) CHAQUE CHAÎNE DE CARACTÈRES PEUT ÊTRE CODÉE AVEC SA PROPRE LANGUE EN UTILISANT UN LANGAGE UNICODE (CHAQUE CARACTÈRE EST CODÉ SUR 16 BITS). CHAQUE LANGUE EST IDENTIFIÉE PAR SON "LANGAGE IDENTIFIER" : LANGID. C'EST UNE VALEUR 16 BITS. UNE VALEUR COURANTE EST 0X0409. C'EST LA VALEUR CORRESPONDANT AU LANGAGE "US ENGLISH" 16 Octobre 2007 JF VIENNE
LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (SUITE) LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES NUMÉRO 0 INFORME LE HOST SUR L'ENSEMBLE DES LANGUES DISPONIBLES AU NIVEAU DU DEVICE. LA STRUCTURE DE CE DESCRIPTEUR EST LA SUIVANTE : POUR UN DEVICE DONT TOUTES LES CHAÎNES DE CARACTÈRES SONT CODÉES AVEC LE LANGID 0X0409 LE STRING DESCRIPTOR NUMÉRO 0 EST LE SUIVANT : 16 Octobre 2007 JF VIENNE
CONFIGURATION DES DEVICES : LES COMMANDES POUR CONFIGURER UN DEVICE LE HOST VA UTILISER DES TRANSFERTS DE CONTRÔLE AVEC LE ENDPOINT 0. COMME NOUS L'AVONS VU UN TRANSFERT DE CONTRÔLE CORRESPOND À PLUSIEURS PHASES : RAPPEL : LA PHASE DE DONNÉES EST OPTIONNELLE. 16 Octobre 2007 JF VIENNE
CONFIGURATION DES DEVICES : LES COMMANDES (SUITE) 16 Octobre 2007 JF VIENNE
CONFIGURATION DES DEVICES : LES COMMANDES (SUITE ET FIN) LES COMMANDES STANDARDS : 16 Octobre 2007 JF VIENNE
(Universal Serial Bus) FIN LE BUS USB (Universal Serial Bus) FIN DIAPORAMA EN LIGNE => www.ecole.ensicaen.fr/~vienne 16 Octobre 2007 JF VIENNE