我們知道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全速裝置上電連線
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
3.量測了乙個chirp j的寬度:43.5us。
USB2 0中文協議(簡版) USB2 0體系簡介
usb 是一種支援熱插拔的高速序列傳輸匯流排,它使用差分訊號來傳輸資料,最高速度可達 480mb s。usb 支援 匯流排供電 和 自供電 兩種供電模式。在匯流排供電模式下,裝置最多可以獲得500ma的電流。usb2.0 被設計成為向下相容的模式,當有全速 usb 1.1 或者低速 usb 1.0 ...
usb2 0驅動學習筆記
乙個usb裝置可以分為3層 l 最底層是傳送和接收包的匯流排介面。l 中間層是處理匯流排介面與裝置不同端點之間的資料路由。端點是資料的終端使用者和資料提供者。它可被認為是資料的信源和信宿。l 最頂層是序列匯流排裝置提供的功能,例如滑鼠或者isdn介面。當usb裝置連線到usb匯流排或者從usb匯流排...
USB2 0板子佈線要求
usb2.0協議定義由兩根差分訊號線 d d 傳輸高速數碼訊號,最高的傳輸速率為480 mbps。差分訊號線上的差分電壓為400mv,理想的差分阻抗 zdiff 為90 1 o 1 在設計pcb 板時,控制差分訊號線的差分阻抗對高速數碼訊號的完整性是非常重要的,因為差分阻抗影響差分訊號的眼圖 訊號頻...