USB 資料訊號 D+ 和 D- 是阻抗 90Ω ±15% 的雙絞線,使用 NRZI 差動訊號,電壓準位 low 為 0.0~0.3V、high 為 2.8~3.6V。
在主機端,D+ 和 D- 用 15 kΩ pull-down,在沒驅動的時候,訊號停在所謂的 single-ended zero (SE0)
狀態,表示 reset 或 disconnected。10~20 ms SE0 表示 reset。
D+ 和 D- 其中之一為 high 有兩種情形,其中一個稱為 J,另一個為 K。
USB 採用 NRZI 編碼,toggle (J 及 K 切換) 表示 0,不變 (維持 J 或 K) 表示 1,六個
連續 1 要作 bit-stuffing,多加一個 0。
連續六個 1 時,bit stuffing 一個 0 來避免太久沒準位變動。
USB 週邊 1.5 kΩ pull high 克服主機端的 pull-down,使得 data line 停在 idle state,稱為「J」。當 D+ 及 D- 一個為 high,一個為 low 為 J 或 K 狀態。
USB 封包一開始是 8-bit synchronization sequence '00000001',也就是在 idle state J 後出現「KJKJKJKK」,最後重複的 K 表示 sync pattern
的結束、USB frame 的開始。高頻寬 USB,使用 32-bit synchronization sequence。
USB 封包的結束稱為 EOP (end-of-packet),此時傳送端驅動 2 個 SE0 和 1 個 J,然後停止驅動而停在 J
(idle) state。有時 hub 的 skew,在 EOP SE0 前多了 one bit,要忽略。
chirping 步驟:週邊先當作自己是 FS 而拉高 D+,然後收到 USB RESET 後改拉高 D− (K) 告訴主機端要用 HS。如果主機端支援 HS,會回 JK 告訴週邊端。週邊端至少要收到 3 sets of KJ chirps 才能切換到 HS。
沒有留言:
張貼留言