USBでは2本の通信端子を図のように電流駆動しています 。
図の@とAとBで3値の信号を通信することができます 。
full | low | 状態 |
---|---|---|
無駆動 | 無駆動 | IDLE |
逆駆動 | 順駆動 | K |
順駆動 | 逆駆動 | J |
両駆動 | 両駆動 | SE0 |
デバイスが接続されたら2端子のどちらかが高電位にな るのでこれが IDLE になります。
USB1.1では full と low の2種類の通信速度が定義さ れていますが。 信号状態を遷移する値はこのどちらかを選択すること で表1のように異なります 。
パケットの通信は IDLE から K になりデータ転送中 は K か J の状態にあります。 パケットの端末で SE0 の状態になり IDLE に戻りま す。
USBではデバイスの接続時の状態で通信速度が認識で きるようになっています。 パケットの通信中は J か K の状態にありますが J から K になるときと K から J になるときがデー タビットの境目になります。 ここで位相を合わせることができます。
送り側と受け側は通信CLKを共有していないので双方の 通信CLKは非同期の状態にあります。
送り側に対する受け側の通信CLKの位置は 図1 のように様々ですが J と K の境目を根拠に計数器を 駆動するとその値が 1 か 2 のときに信号値が送り側 に同期して取得できます。
図1 の場合は受信側が通信の1ビットの4倍の通信CLKで信号 を取得するもので3まで計数した後には0になります。 J が連続したり K が連続したりする場合はその計数間 隔の位置で信号が取得されます。
J が連続したり K が連続すると位相調整ができなくて 位相がずれていきますが USB では 6 ビット以上連続 して J または K であることがないように工夫されて いるので最長でも6ビット以内に位相調整が入ります。