USBケーブルで、D +ワイヤーとD-ワイヤーを交換しても大丈夫ですか?


54

D +とD-は差動信号であると聞きましたが、USBデバイスをコンピューターに接続するときにそれらを交換しても問題はありませんか?


興味深い質問...すべての有効な差動プロトコルに有効.. CAN!
スワナンド

回答:


58

概要

アイドル状態を開始および終了するとき、極性が重要であり、D +およびD-ラインを交換すると問題が発生します。

データ送信

USBデータはNRZコーディングされており、「1」は物理レベルの変化なしで表され、「ゼロ」は物理レベルの変化で表されます(下図を参照)。したがって、(たとえば、D +とD-を交換することにより)信号を反転しても、データ送信中に機能的な変更は発生しません。ただし、データ送信の前後に問題が発生し、デバイスとの通信が停止する可能性があります。

アイドル状態の終了

ホストには、各データラインに15kΩプルダウン抵抗が含まれています。デバイスが接続されていない場合、これは両方のデータラインをいわゆる「シングルエンドゼロ」状態(USBのドキュメントではSE0)に引き下げ、接続のリセットまたは切断を示します。USBデバイスは、1.5kΩの抵抗を使用してデータラインの1つをHighにします。これにより、ホストのプルダウン抵抗の1つが無効になり、データラインが「J」と呼ばれるアイドル状態のままになります。USB 1.xの場合、データラインの選択は、デバイスが可能な信号レートを示します。全帯域幅のデバイスはD +を高くし、低帯域幅のデバイスはD-を高くします。

データはNRZIエンコードされていますが、同期シーケンスとEoPは固定状態(J / K / SE0)で定義されています。D +とD-が切り替えられると、J状態はKで切り替えられ、SE0はSE0(両方のラインがロー)のままです。そのため、同期シーケンスとEoPは反転時に不正確になります。USB 1.xでは、D +とD-を交換すると、全帯域幅のデバイスが低帯域幅として認識され、逆も同様です。そのため、デバイスはホストと同じ速度で通信することさえしません。

アイドル状態に入る

EOP(end-of-packet)と呼ばれるUSBパケットの終わりは、SE0の2ビット時間(D +とD-が両方とも最大以下)と1ビット時間のJ状態を駆動する送信機によって示されます。この後、トランスミッターはD + / D-ラインの駆動を停止し、前述のプルアップ抵抗によりJ(アイドル)状態に保持されます。

D + / D-スワップドライバーを使用すると、ホストには正しい(SE0、SE0、J)の代わりにシーケンス(SE0、SE0、K)が表示されます。その場合、ホストはパケットの終わりを認識できず、問題が発生する可能性があります。

ここに画像の説明を入力してください

結論

デバイスとホストがUSB仕様に厳密に従っている場合、D +ピンとD-ピンを交換するとエラーが発生します。ホストの設計者がこのような障害モードを予測し、それに対する互換性を組み込んでいると考えられます。しかし、そのような交換されたケーブルが実際に機能するかどうかにかかわらず、それは確かに仕様に準拠しません。

別のメンバーのAndrew Kohlsmithは、USBハブのピンが誤って交換されたときにこれを経験しました。この問題は、接続されたデバイスが表示されないこととして現れました。USBデバイスは電源が入っていることを示しますが、ハブの上流側のコンピューター(ホストに正しく配線されている)によってまったく認識されませんでした。

ソース:ウィキペディア

編集:コメントした人に感謝します。役立つメモから強調と詳細を追加しました。


2
ホストは、回線がプルアップする低速/全速を区別することに注意してください。D + / D-ラインを交換すると、デバイスはホストと同じ速度で通信することさえできません。さらに、データはNRZIエンコードされていますが、同期シーケンスとEoPはJ / K / SE0に関して定義されており、反転すると正しくなくなります。
avakar

2
経験から言えば、D + / D-を交換すると機能しないUSBインターフェースになるということです。USBハブが組み込まれたいくつかのプロトタイプを作り直す必要がありました。そんなに楽しくない。
akohlsmith

@avakar詳細をありがとう。答えはそのほとんどを簡潔にカバーしたと思いますが、より明確にするために詳細を追加しようとします。
トラビスバートリー

@Andrew Kohlsmith役に立つ情報です。覚えている場合は、いくつか質問があります。デバイスまたはハブのピンスワップはありましたか?エラーはどのように現れましたか?デバイスを接続したときに、誤動作または誤動作として認識されていませんでしたか?問題をどのように診断しましたか?どんな詳細でも助けになるでしょう、私はあなたの情報を答えに加えようとします。
トラビスバートリー

2
@ trav1sハブ側でD + / D-を交換しました。この問題は、デバイスが表示されないという形で現れました。USBキーは電源が入っていることを示しますが、ハブの上流側のコンピューター(ホストに正しく配線されている)によって認識されませんでした。診断私は書くのが恥ずかしくて、それがハブ構成/ソフトウェアの問題だと考えるのに多くの時間を費やしました。最後にワイヤをトレースしましたが、USBはイーサネットのようなもので、ピンを自動交換できると確信していたので最後にトレースしました。私は間違っていた。:-)
akohlsmith

1

d +とd-が交換された場合にのみ、デバイスが低速としてネゴシエートするのを見てきました。これは、フルスピード(12mbps)デバイスとVIAチップセットベースのポートを使用していました。


2
これは、@ trav1sがUSB 1.xについて言ったことを裏付けています。
ヴァイバフガルグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.