In order to realize the 480 Mbps bus operation for USB 2.0, a change in electrical specifications was necessary, but without sacrificing compatibility with USB 1.x. Furthermore, a change in protocol was required to allow 12/1.5 Mbps transfers to coexist with 480 Mbps transfers. The new specification also resolves issues that were evident in USB 1.x.
With USB 2.0, the idle state is indicated differently by the high-Speed mode and the full/low-Speed mode. Under the full/low-Speed mode, the idle state is indicated with a "J" state, where as under the high-Speed mode, a "D+=D-=0" state is used to indicate the idle state. This is equivalent to the "SE0" state under full/low-Speed mode.
Under the full/low-Speed mode, the "SE0" state is used to indicate a reset, an EOP (End Of Packet), or the disconnection of a device. Under the high-Speed mode, "SE0" is used to indicate a reset or the idle state. In other words, the EOP delimiter and the device disconnection detection method have been changed for the high-Speed mode. Under the full/low-Speed mode, EOP is indicated by SE0 2 bit times followed by a "J."
The high-Speed mode, on the other hand, has been modified to use an 8-bit NRZ signal of "01111111," without stuffed bit insertion. The first symbol indicating an EOP is the reversal value of the last symbol immediately before the EOP. When the end of the EOP pattern is reached, the driver stops the flow of current to the D+ or D- line, and switches the line to high-Speed idle state.
The EOP for a high-Speed SOF (Start Of Frame) is a special case, and has a length of 40 bits, not 8 bits. This is used to detect the disconnection of a device. When a device is disconnected, the 45 ohm resistance further from the hub's downstream port is lost. However, this is not sufficient to detect the disconnection of a device, since the driver does not send a current to the D+ or the D- line while in the high-Speed idle state. Simply put, the disconnection of a device can only actually be detected while there is a transaction on the bus. The 40-bit long EOP is used to maintain the output level until the signal returns to the transmitting end after being reflected at the end of the cable. When the output level exceeds approx. 600 mV, the device is considered to be disconnected.
The SYNC pattern is also changed for USB 2.0. Under the full/low-Speed mode, SYNC is expressed as an 8-bit NRZI signal of "KJKJKJKK," while under the high-Speed mode, SYNC is a 32-bit NRZI signal of "KJKJ KJKJ KJKJ KJKJ KJKJ KJKJ KJKJ KJKK" for the transmitting end, and a variable 12 to 32-bit signal for the receiving end. Furthermore, the high-Speed mode uses signals with a small-amplitude of 400 mV, making it difficult to distinguish between noise and SYNC based on the change on the bus line. Thus, with USB 2.0, the start of a SYNC is only acknowledged when the first 4 symbols match the expected pattern. For this reason, the 4 bits of symbols are lost each time the signal passes a hub. As a result, the amount of SYNC that is actually received will be [32 symbols - (4 symbols × number of hubs)].