480MbpsのBus動作を実現するためには電気的な仕様の変更が、USB1.xとの互換性を維持しながら必要になります。 また、12/1.5Mbpsの転送と480Mbpsの転送が混在できるようにするために、プロトコルの変更が必要になります。また、USB1.xで目立つようになってきた問題点も改善されます。

USB2.0ではhigh-Speed modeとfull/low-Speed modeはIdle Stateを示す状態 が違います。full /low-Speed modeではIdle Stateは"J" Stateで 示されますが、high-Speed Idle Stateは"D+=D-=0" stateで示されます。これはfull/low-Speed modeでは"SE0"と呼ばれるstateと同じです。
SE0はfull/low-Speed modeではResetとpacketの終わりを示す"EOP"とDeviceの切断を示すために使われますが、high-SpeedはResetとhigh-Speed Idle Stateを示すために使われ ます。つまり、EOPを示すためのデリミタはhigh-Speed modeでは変更され、 Deviceの切断の検出も変更されます。full/low-Speed modeではpacketの終わりを示す"EOP"はSE0 2 bit times に続いて "J"になることで示されます。

 

full/low-Speed mode

 

一方、high-Speedではpacketの終わりを示す"EOP"はStuffed bit insertionなしの8bit NRZ 01111111で示されるように変更されます。"EOP"を示すfirst symbolはEOP直前のlast symbolの反転値になり、EOP patternの終わりに、driverはD+かD- lineに流す電流を止め、lineをhigh-Speed Idle stateに戻します。

 

high-Speed mode

 

high-Speed SOFに対するEOPは特殊なケースで、8bit長ではなく 40bit長となります。 これは、Deviceの切断の目的のために使われるものです。Deviceが切断された場合、Hubのダウンストリームポートから遠い側の抵抗45Ωが無くなることを意味します。しかし、high-Speed Idle StateではdriverはD+、D-lineのどちらにも電流を流さないので、このStateではDeviceの切断は検出できません。実際のDeviceの切断の検出はBusのtransaction中にしか行えません。40bit長と長いEOPを使う理由はケーブル端から反射した信号が送信端に戻ってくるまでの間、出力レベルを維持するためです。出力レベルが約600mVを越えたことでDeviceの切断と判定されます。

 

回路図

 

SYNCのパターンもUSB2.0では変更されます。full/low-SpeedではSYNCは8bitNRZI KJKJKJKKで示されていますが、high-Speedでは送信側でSYNCは32bit NRZI KJKJ KJKJ KJKJ KJKJ KJKJ KJKJ KJKJ KJKKに受信側では条件によって32-12bit長と可変になります。high-Speed modeでは400mVという小振幅の信号を使います。このためノイズかSYNCかの判定は、バスラインの変化だけでは行うことができません。USB2.0では初めの4symbolが期待のパターンと一致した時、初めてSYNCが開始したと認識します。このため、HUBを経由するごとに4bit分のSymbolが欠けていくことになります。結果として受信できるSYNCは32symbol - 4 symbol X HUBの段数になります。

  • カタログポータル