Comment fonctionne un hub USB?

9

Je connais la réponse de Google et la réponse de Wikipédia à la question ci-dessus. Mais j'ai une question plus précise sous la main. Les concentrateurs USB ont de nombreux ports entrants et un seul port sortant, je peux utiliser disons n-nombre d'appareils ensemble à cause de cela. Mais, je ne comprends pas comment un port USB peut-il effectuer des transferts de données avec n-nombre de ports USB?
comment peut-il envoyer des données différentes à tous les ports USB en même temps?

*

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

*.

Aaditya Sahay
la source
1
De la même manière que votre routeur réseau peut connecter un port LAN (Internet) à plusieurs appareils. Chaque point de terminaison (périphérique USB) se voit attribuer une adresse, et les concentrateurs acheminent simplement les demandes de l'hôte vers le périphérique approprié en gardant une trace de l'adresse sur quel port. C'est beaucoup plus simple pour l'USB dans le sens où il n'y a qu'un seul maître (le port hôte) qui initie toutes les transactions.
Tom Carpenter
@TomCarpenter Then Comment le port USB enverrait-il différentes données ensemble?
Aaditya Sahay
1
Le port hôte demande à un point de terminaison spécifique de parler. Les points de terminaison ne répondent que lorsque l'hôte le leur demande.
Tom Carpenter
@TomCarpenter Mais ils sont tous utilisés simultanément et non pas un par un, mais tous ensemble.
Aaditya Sahay
3
N'oubliez pas que le bus USB peut fonctionner jusqu'à 480 Mbps sur USB 2.0. L'hôte ne parle qu'à un seul point de terminaison à la fois, mais il parle à chacun d'eux de manière séquentielle et passe de l'un à l'autre si rapidement que vous ne pouvez pas le dire. Les réseaux font la même chose. "Hé, souris sur le port 1, dites-moi si vous avez déménagé. Ok maintenant clavier sur le port 2 avez-vous des touches à signaler? Maintenant, vous êtes sur le port 3, lecteur flash, stockez ces données pour moi. besoin de parler à? non, ok alors, souris sur le port 1, dites-moi si vous avez déménagé ... "
Tom Carpenter

Réponses:

16

Tout est lié à l'arbitrage. Tout système qui nécessite la connexion de plusieurs appareils a besoin d'un moyen de déterminer qui doit parler quand. Il existe différents schémas que vous attendez en fonction de l'application.

Un exemple courant - dans la mise en réseau, nous avons de nombreux nœuds qui se parlent tous. Cela se fait par chaque nœud ayant une adresse (par exemple, une adresse IP), et lorsqu'un nœud veut parler à un autre nœud, il envoie un paquet à cette adresse. Vous avez ensuite des périphériques tels que des routeurs qui acceptent les paquets arrivant sur plusieurs ports et les transmettent au port approprié. L'arbitrage se fait en utilisant de la mémoire pour stocker les paquets jusqu'à ce que le port de destination soit libre.


Maintenant sur USB. C'est en fait beaucoup plus simple que la mise en réseau car tous les nœuds ne sont pas égaux. Vous avez deux sortes, un hôte et un point de terminaison. Il n'y a qu'un seul hôte, mais il peut y avoir plusieurs points de terminaison. Dans ce cas, l'arbitrage est beaucoup plus facile car seul le port hôte est autorisé à parler à volonté. Les points de terminaison ne sont autorisés à parler que sur demande de l'hôte , et l'hôte ne parle qu'à un seul point de terminaison à la fois.

Pour les paquets hôte-> point d'extrémité, les concentrateurs USB transmettent simplement la demande de l'hôte à tous les points d'extrémité. Étant donné que tous les points d'extrémité ont une adresse, seul celui auquel la demande a été adressée fera quoi que ce soit avec elle (par exemple, répondra), tous les autres ignoreront le paquet.

Pour les paquets endpoint-> host, l'hôte envoie d'abord un paquet à un endpoint spécifique par adresse pour dire "vous pouvez parler maintenant", puis ce endpoint doit immédiatement envoyer une réponse. Étant donné qu'un seul point de terminaison est autorisé à parler à un moment donné, le concentrateur USB achemine simplement le paquet à partir du port qui répond à une demande de l'hôte.


Pour ce qui est de la façon dont l'hôte détermine quels périphériques sont connectés et comment le point de terminaison obtient son adresse, cela est réalisé grâce à l'énumération.

Tous les ports hôte et concentrateur ont des résistances de rappel (15kOhm) sur les lignes D + et D-. Ceux-ci placent les lignes de données de ce port dans un état connu quand aucun périphérique n'est connecté, un état dans lequel le port n'enverra aucune donnée sur les lignes D + / D-.

Lorsqu'un appareil est connecté, il se fait connaître en connectant la ligne de données D + (pleine vitesse) ou D- (basse vitesse) à VCC à l'aide d'une résistance de 1,5 kOhm. Cela déclenche un événement d'énumération. Le port commencera alors le processus de configuration de l'appareil et d'attribution d'une adresse. Si vous deviez brancher deux appareils simultanément, ils seront énumérés un à la fois .

S'il n'y a pas de concentrateur, l'hôte parle simplement au nouveau périphérique et le configure. S'il y a des concentrateurs dans le système, c'est le concentrateur qui signale que le nouveau périphérique est connecté . Si un concentrateur signale qu'un nouveau périphérique est connecté, l'hôte demandera au concentrateur de réinitialiser le nouveau périphérique et de démarrer les communications. Lors de la réinitialisation, le noeud final reçoit une adresse par défaut de 0 (*). L'hôte peut ensuite parler au point de terminaison à l'aide de l'adresse par défaut et le configurer avec une adresse non nulle unique qui lui permettra de savoir quand il est en communication.

(*) Étant donné qu'un seul périphérique est énuméré à la fois, l'adresse 0 sera toujours unique au périphérique nouvellement connecté.


Vous pourriez alors vous demander: "Comment puis-je alors avoir plusieurs appareils qui parlent tous en même temps?". Supposons que vous ayez une souris, un clavier et une clé USB tous connectés au même concentrateur USB. Nous savons tous que vous pouvez utiliser votre souris et votre clavier en même temps tout en copiant des fichiers vers / depuis votre lecteur flash, mais si un seul appareil peut parler à la fois, comment cela est-il possible?

Eh bien, tout se résume au fait que les quelques centaines de millisecondes qu'il faut à votre cerveau pour remarquer que vous avez appuyé sur une touche et que l'écran se met à jour est une éternité pour l'ordinateur. Une interface USB 2.0 peut fonctionner jusqu'à 480 Mbit / s (USB 3.1 peut fonctionner jusqu'à 10 Gbit / s!), Ce qui signifie que même si l'hôte ne parle qu'à un seul point de terminaison à un moment donné, il passe d'un cycle à l'autre si rapidement que vous le pouvez dis pas que ça le fait.

Hôte USB: "Hé, souris sur le port 1, dites-moi si vous avez déménagé. Ok maintenant, le clavier sur le port 2 avez-vous des touches à signaler? Maintenant, vous êtes sur le port 3, lecteur flash, stockez ces données pour moi. Quelqu'un d'autre à qui je dois parler? Non, d'accord alors, souris sur le port 1, dites-moi si vous avez déménagé ... "

Humain: "Oh regarde, l'ordinateur a remarqué que je viens de déplacer ma souris, d'appuyer sur une touche de mon clavier et de copier une photo sur le lecteur flash, tout en même temps!"

Le périphérique hôte garde une trace des adresses de point d'extrémité qui sont utilisées et enverra des paquets à chacun séquentiellement ou selon les besoins (c'est-à-dire lorsque le système d'exploitation demande l'accès à un périphérique spécifique). Donc, même si tout ne se passe pas simultanément, l'arbitrage est si rapide que les ordinateurs humains ne peuvent pas faire la différence.

Tom Carpenter
la source
2
Pour ajouter: les périphériques USB (uniquement les points de terminaison «d'interruption», pour être précis) peuvent demander à être interrogés à un certain intervalle jusqu'à 1 ms. Tant que vous n'avez pas des centaines de périphériques d'entrée, vous ne remarquerez jamais de retard.
Michael
Comment l'hôte sait-il quels points d'extrémité sont connectés? De plus, cela ne semble pas réellement répondre à la question d'origine sur les hubs. Comment interagissent-ils dans ce processus? Comment interagissent-ils dans l'énumération?
Yona Appletree
1
@YonaAppletree, énumération. Les hôtes et les concentrateurs analysent tous leurs ports pour les connexions de périphériques - ils détectent une résistance de rappel de 1,5 kOhm sur D + (pleine vitesse) ou D- (basse vitesse). J'ajouterai quelques informations sur la façon dont les points de terminaison sont affectés à une adresse.
Tom Carpenter
@YonaAppletree en termes de hubs pendant le fonctionnement, la réponse en parle déjà. Pour l'hôte au point de terminaison: "Les concentrateurs USB transmettent simplement la demande de l'hôte à tous les points de terminaison". Pour le point de terminaison à héberger: "Parce qu'un seul point de terminaison est autorisé à parler à un moment donné, le concentrateur USB achemine simplement le paquet à partir du port qui répond"
Tom Carpenter
1

Réponse plus courte: l'hôte envoie des données qui sont adressées à un périphérique particulier (qui était "énuméré" au préalable), une transaction à la fois, séquentiellement. Le concentrateur diffuse tous les paquets sur tous les appareils. Un appareil ne répond qu'aux transactions qui lui sont adressées. C'est tout, vrai pour les appareils HS.

Pour les appareils FS et LS, le processus est un peu plus compliqué. Il utilise des "traducteurs de transactions" qui sont intégrés dans chaque hub pour chaque port, qui traduisent les "transactions fractionnées" en trafic LS ou FS.

Ale..chenski
la source
Et USB 3?
jbarlow
Les concentrateurs USB3 sont plus intelligents pour la liaison Super-Speed ​​et utilisent un routage explicite vers les périphériques / points de terminaison. La section USB2 reste la même. Voir la section 3.1 «Résumé architectural» des spécifications USB3.1 les plus récentes, usb.org/developers/docs/usb_31_052016.zip
Ale..chenski