En examinant les broches des prises USB 3.0, je constate qu’il existe des paires d’émission et de réception distinctes. Cependant, pour l’USB 2.0, il n’existe qu’une paire de broches «données». Comment USB 2.0 garantit-il que les périphériques ne communiquent pas simultanément?
33
Réponses:
L'USB est strictement maître-esclave. Le périphérique ne transmet pas sauf si l'hôte lui dit de transmettre.
Même le mode "interruption" est en fait un sondage: par exemple, toutes les 8 millisecondes (ou moins si vous avez une souris de joueur), le PC demande à la souris "quelle est votre position" et la réponse de la souris.
Idem si vous avez une interface série USB par exemple. Lorsque l'interface reçoit des données sur la ligne série, elle ne les transmettra pas au PC. Au lieu de cela, il attendra que le PC lance la transaction et demande les données.
Cette page Web fournit une bonne explication sur les paquets échangés. En gros, gardez à l’esprit que l’USB a été mis en œuvre pour permettre au périphérique le plus insignifiant et le moins cher de fonctionner, ce qui signifie que l’intelligence réside principalement dans l’hôte, le contrôleur USB hôte, le système d’exploitation et les pilotes. Ceci est très évident lors de la lecture de la spécification.
Firewire (par exemple) a une philosophie complètement différente, il est beaucoup plus puissant, il est multi-maître afin que les périphériques puissent communiquer entre eux sans l'aide d'un hôte / maître. En fait, sa philosophie est beaucoup plus proche de celle du jeton à jeton avec transferts isochrones que du port USB. Cependant, "multi-maître" signifie qu'il nécessite un microcontrôleur puissant dans les périphériques, exécutant une pile logicielle complexe. Il est donc plus coûteux et donc limité aux produits coûteux tels que les caméscopes et les boîtiers de disques durs rapides. Une souris Firewire n’a aucun sens, ce serait trop cher. C'est l'une des raisons pour lesquelles FireWire a échoué.
la source
Dans la structure USB, les périphériques ne peuvent pas communiquer simultanément, car ils ne "parlent" que lorsque l'hôte USB "leur permet" de parler. Et l'hôte USB permet à un autre appareil de "parler" uniquement lorsque le protocole de transaction séquentielle avec le premier appareil est terminé. Et les périphériques USB n'ont aucun moyen de "parler" par eux-mêmes, il n'y a pas de mécanisme d'interruption actif dans l'USB. En bref, le mécanisme de mise en œuvre de cette discipline est le suivant.
Une fois les périphériques USB 2.0 connectés, l'hôte les énumère en attribuant des adresses uniques à chaque périphérique.
Chaque transaction sur le bus est initiée par un hôte USB.
Les en-têtes de chaque transaction USB portent une adresse de périphérique spécifique. Même lorsque les transactions sont diffusées sur l'intégralité de l'arborescence USB (sur l'instance de contrôleur hôte particulière), seul le périphérique avec l'adresse correspondante répondrait à la transaction et prendrait les données, ou répondrait avec les données.
Le lien "partenaires" enverra alors un accusé de réception indiquant qui reçoit les données avec succès. La transaction complète suit le protocole établi avec une séquence définie de jetons, des délais d'expiration et des codes de correction d'erreur, afin de garantir l'intégrité de la transaction.
Tous les autres appareils écoutent et ignorent simplement le trafic qui ne leur est pas destiné.
C'est à peu près tout, c'est une interface "semi-duplex".
la source