J'ai entendu dire que D + et D- sont des signaux différentiels. Est-ce important si je les échange lorsque je connecte un périphérique USB à l'ordinateur?
J'ai entendu dire que D + et D- sont des signaux différentiels. Est-ce important si je les échange lorsque je connecte un périphérique USB à l'ordinateur?
Réponses:
Lorsque vous entrez et sortez de l'état inactif, la polarité est importante et permuter les lignes D + et D- posera des problèmes.
Les données USB sont codées NRZ de telle sorte que "One" ne représente aucun changement de niveau physique et que "Zero" soit représenté par un changement de niveau physique (voir la figure ci-dessous). Par conséquent, l'inversion du signal (par exemple, en permutant D + et D-) n'entraîne aucune modification fonctionnelle lors de la transmission des données. Mais il peut y avoir des problèmes avant et après la transmission des données qui peuvent tuer la communication avec le périphérique.
L'hôte comprend des résistances de 15 kΩ sur chaque ligne de données. Lorsqu'aucun périphérique n'est connecté, cela place les deux lignes de données à l'état bas, dans l'état dit "zéro asymétrique" (SE0 dans la documentation USB), et indique une connexion réinitialisée ou déconnectée. Un périphérique USB tire sur l’une des lignes de données avec une résistance de 1,5 kΩ. Ceci surpasse l'une des résistances de l'hôte et laisse les lignes de données dans un état inactif appelé "J". Pour USB 1.x, le choix de la ligne de données indique le taux de signal auquel le périphérique est capable. Les périphériques à bande passante totale tirent D + élevé, tandis que les périphériques à bande passante étroite tirent D-élevé.
Bien que les données soient codées en NRZI, la séquence de synchronisation et l'EoP sont définis en termes d'états fixes (J / K / SE0). Lorsque D + et D- sont commutés, l'état J est commuté avec K et SE0 est toujours SE0 (les deux lignes sont basses). Ainsi, la séquence de synchronisation et l'EoP deviendront incorrects lors de l'inversion. Sous USB 1.x, si D + et D- sont échangés, les périphériques à bande passante complète sont reconnus comme bande passante étroite et inversement. Ainsi, l'appareil ne communiquera même pas à la même vitesse que l'hôte.
La fin d'un paquet USB, appelée EOP (fin de paquet), est indiquée par l'émetteur qui commande les temps de 2 bits SE0 (D + et D− inférieurs à max) et le temps de 1 bit de l'état J. Après cela, l’émetteur cesse de commander les lignes D + / D- et les résistances de rappel susmentionnées le maintiennent à l’état J (inactif).
Avec un pilote échangé D + / D-, l'hôte verra la séquence (SE0, SE0, K) au lieu de la séquence correcte (SE0, SE0, J). L’hôte pourrait alors ne pas reconnaître la fin du paquet, ce qui poserait des problèmes.
Si le périphérique et l'hôte se conforment strictement aux spécifications USB, le remplacement des broches D + et D- entraînera une défaillance. Il est concevable que le concepteur de l'hôte ait prévu un tel mode de défaillance et y ait intégré une compatibilité. Mais si un tel câble échangé serait fonctionnel dans la pratique, il ne respecterait certainement pas les spécifications.
Un autre membre, Andrew Kohlsmith, a vécu cette situation lorsque les broches d’un concentrateur USB ont été échangées accidentellement. Le problème s'est manifesté en tant qu'appareils connectés ne se présentant pas. Le périphérique USB indiquerait qu'il était alimenté, mais l'ordinateur situé du côté en amont du concentrateur ne le reconnaissait pas du tout (ce qui était correctement câblé à l'hôte).
Edit: merci à ceux qui ont commenté. J'ai ajouté l'accent et les détails de vos notes utiles.
J'ai vu des appareils négocier à basse vitesse uniquement lorsque d + et d- sont échangés. C'était avec un périphérique à pleine vitesse (12 Mbps) et un port basé sur un chipset VIA.