USB2.0速度識別

原文地址: http://hi.baidu.com/doyanger/blog/item/af45d995dd64f419d31b704d.html

 

                                                 USB2.0速度識別

   我們知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度類型的設備,而 USB1.x的hub不能支持高速設備(High Speed Device)。因此,如果高速設備掛到 USB1.x的hub 上,那該設備只能工作在全速模式下。 不管是hub還是設備(device),對於速度的區分是非常重要的,否則,後續的通信根本無法進行。

全速和低速識別
  
   根據規範,全速(Full Speed)和低速(Low Speed)很好區分,因爲在設備端有一個 1.5k的 上拉電阻,當設備插入hub或上電(固定線纜的USB設備)時,有上拉電阻的那根數據線就會被拉高,hub根據D+/D-上的電平判斷所掛載的是全速設備還是低速設備。如下兩圖:
USB全速設備上電連接

(Full-speed Device Cable and Resistor Connections)


 

USB低速設備上電連接

(Low-speed Device Cable and Resistor Connections)


高速識別

  
   USB 全速/低速識別相當簡單,但USB2.0,USB1.x就一對數據線,不能像全速/低速那樣僅依靠數據線上拉電阻位置就能識別USB第三種速度:高速。因此對於高速設備的識別就顯得稍微複雜些。

  高速設備初始是以一個全速設備的身份出現的,即和全速設備一樣,D+線上有 一個1.5k的 上拉電阻。 USB2.0的hub把它當作一個全速設備 之後,hub和設備通過一系列握手信號確認雙方的身份。 在這裏對速度的檢測是雙向的,比如高速的hub需要檢測所掛上來的設備是高速、全速還是低速,高速的設備需要檢測所連上的hub是USB2.0的還是1.x的,如果是前者,就進行一系列動作切到高速模式工作,如果是後者,就以全速模式工作。

  下圖展示了一個高速設備連到 USB2.0 hub上的情形:


   hub檢測到有設備插入/上電時,向主機通報,主機發送Set_Port_Feature請求讓hub復位新插入的設備。設備復位操作是hub通過驅動數據線到復位狀態SE0(Single-ended 0,即D+和D-全爲低電平),並持續至少10ms。

   高速設備看到復位信號後,通過內部的電流源向D-線持續灌大小爲 17.78mA 電流。因爲此時 高速設備的 1.5k 上拉電阻還未撤銷,在hub端,全速/低速驅動器形成一個阻抗爲45歐姆(Ohm)的終端電阻,2電阻並聯後仍是45歐姆左右的阻抗,所以在hub端看到一個約800mV的電壓( 45歐姆*17.78mA ),這就是Chirp K信號。 Chirp K信號的持續時間是1ms~7ms

   在hub端,雖然下達了復位信號,並一直驅動着 SE0 ,但USB2.0的高速接收器一直在檢測 Chirp K信號,如果沒有 Chirp K信號看到,就繼續復位操作,直到復位結束, 之後就在全速模式下操作 如果只是一個全速的hub,不支持高速操作,那麼該hub不理會設備發送的 Chirp K信號,之後設備也不會切換到高速模式。

  設備 發送的 Chirp K信號結束後100us內, hub 必須開始回覆一連串的KJKJKJ....序列,向設備表明這是一個USB2.0的hub。這裏的 KJ序列是連續的,中間不能間斷,而且每個K或J的持續時間在40us~60us之間。 KJ序列停止後的100~500us內結束復位操作。hub發送 Chirp KJ序列的方式和設備一樣,通過電流源向差分數據線交替灌17.78mA的電流實現。

   再回到設備端來。設備檢測到6個 hub 發出的 Chirp 信號後(3對 KJ序列),它必須在500us內切換到高速模式。切換動作有:
1. 斷開
1.5k的 上拉電阻。
2. 連接D+/D-上的高速終端電阻(high-speed termination),實際上就是全速/低速差分驅動器。
3. 進入默認的高速狀態。

  執行1,2兩步後,USB信號線上看到的現象就發生變化了:hub發送出來的 Chirp KJ序列幅值降到了原先的一半,400mV。這是因爲設備端掛載新的終端電阻後,配上原先hub端的終端電阻 ,並聯後的阻抗是22.5歐姆。400mV就是由17.78mA*22.5Ohm得來。以後高速操作的信號幅值就是400mV而不像全速/低速那樣的3V。

   至此,高速設備與 USB2.0 hub握手完畢,進行後續的480Mbps高速信號通信。

最後附上幾幅實際USB高速識別的示波器抓圖,圖中藍色信號是D+,黃色信號是D-。

1.數據線D+在T點之前掛上1.5K電阻,在T點被host拉成SE0狀態。在近2ms後,設備發送第一個Chirp K,向host通知說:我是一個高速設備,如果可能,請用高速方式與我通信。其幅度是800mV(17.78mA * (45
Ohm || 1.5k Ohm ) = 800mV,見上文解釋)。在這裏, Chirp K的持續時間是2.13ms(a,b兩點之間)。

2.這幅圖顯示了host發出的chirp KJ信號的幅度,頭幾個KJ是800mv(a,b之間),隨後的是400mV。圖中可以看到設備在收到第三個chirp J(藍色短條)後馬上把1.5k電阻取消,導致 chirp J的幅值下降到400mV。(17.78mA * (45 Ohm || 45Ohm ) = 17.78mA * 22.5 Ohm = 400mV )

3.量測了一個chirp J的寬度:43.5us。

 

 

最後附上一張來自Don Anderson的USB System Architecture裏的USB HS接口圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章