USB1.0設備為何能夠在USB2.0端口上使用?
USB從1994年開始提出以來,到目前為止共有三個版本:USB 1.0、USB 1.1和USB 2.0。USB 1.0只有低速(low speed,1.5Mbps)一種傳輸模式,USB 1.1增加了全速(full speed,12Mbps)模式,USB 2.0又增加了高速(high speed,480Mbps)模式。
本文引用地址:http://www.j9360.com/article/201612/328913.htm圖1 USB端口與高速USB端口的標志
為了使USB1.0的設備(鼠標和鍵盤)在USB 2.0下面仍可以工作,首先要做的工作,就是讓2.0端口的物理形狀與1.0保持完全一致(圖2)。所以,僅從外觀上來看,我們是分別不出USB端口的版本。當我們把U盤或移動硬盤插入到主機的USB接口時,往往并不知道移動設備的工作模式,也不知道數據傳輸率是究竟1.5Mbps、12Mbps,還是480Mbps。
圖2 兩種USB版本具有相同的連接器
(還有一種mini-B型,比B型的尺寸更小一些)
那么,USB 2.0端口怎樣保持與USB 1.0、USB 1.1設備之間相互兼容呢?2.0控制器又是怎樣判斷出設備是1.0還是2.0的呢?這就是本文將要解決的問題。
一、主機如何識別USB設備類型?
當USB設備插上主機時,主機就通過一系列的動作來對設備進行枚舉配置,其中包括如下一些狀態:
(1)接入態(Attached):設備接入主機后,主機通過檢測信號線上的電平變化來發現設備的接入;
(2)供電態(Powered):就是給設備供電,分為設備接入時的默認供電值,配置階段后的供電值(按數據中要求的最大值,可通過編程設置);
(3)缺省態(Default):USB在被配置之前,通過缺省地址0與主機進行通信;
(4)地址態(Address):經過了配置,USB設備被復位后,就可以按主機分配給它的唯一地址來與主機通信,這種狀態就是地址態;
(5)配置態(Configured):主機發出標準的USB請求命令來獲取設備的各種信息,并根據這些信息對控制器進行設置。
(6)掛起態(Suspended):總線供電設備在3ms內沒有總線操作,即USB總線處于空閑狀態的話,該設備就要自動進入掛起狀態,在進入掛起狀態后,總的電流功耗不超過280UA。
USB設備的EEPROM芯片中存儲有設備描述符、配置描述符、字符描述符、接口描述符和端點描述符,其中的接口描述符會告訴主機該接口的類型。在配置態,主機獲取USB設備信息,Windows的設備管理器將描述符內的信息與PC內部INF文檔進行比較,從中找出最佳匹配,然后指定一個設備驅動程序,這樣應用程序就能夠訪問該設備了(圖3)。
圖3 Windows的“設備管理器”中可以看到枚舉成功的設備
二、保持兼容性的措施
為了保持向下兼容,需從軟硬件兩個方面去考慮。軟件方面的問題這里不準備討論,我關心的只是硬件方面。
(1)帶寬分配與速率轉換
雖然USB 2.0定義了1.5Mbps、12Mbps和480Mbps三種傳輸速率,但任何一個設備的實際傳輸速率只能達到設備自身所允許的最高值。對于連接到2.0端口的低速設備,主控端需要降低速率,以保證通信的成功。USB2.0控制器中有一個稱為“Transaction Translator”的電路,就是負責進行傳輸速率轉換的。
(2)電平設置與電流分配
我們知道,USB連接線中有四條導線,其中的兩條用于傳送數據,另外兩條則分別用來傳送電力與接地。這些擁有專門用途的導線都有特別的名稱:VBUS(電源)、Ground(接地)、D+與D-(信號線)。其中D+與D-是傳送USB數據的差分信號線。
圖4 由一對雙絞線組成差模信號傳輸線路
在全速與低速傳輸時,這對信號線的差分電壓為+/-3V。 而在高速傳輸時,這對信號線的差分電壓為+/-400mV。高速傳輸模式采用較低的電位有助于減少信號傳送的耗電量以及降低電磁干擾(EMI)。
當設備剛插入時,僅允許它吸入100mA的電流,只有當確定設備為USB 2.0時,才允許它吸入最高500mA的電流。
三、 如何確認USB設備工作在1.0,1.1,還是2.0模式?
雖然今天的電腦提供兩個以上的USB端口,但有些只能用于USB1.0和USB 1.1的數據傳輸,并不能支持USB 2.0的數據傳輸。另外,從設備管理器中我們還可以看到,USB控制器保留了10%的帶寬,所以USB的帶寬只能達到理論帶寬的90%。當我們把一個移動硬盤插入電腦時,系統并沒有告訴我們它的實際速率,Windows的設備管理器中也沒有顯示它的工作模式。這就是說,即便插入的設備可以工作,但是它是否達到了我們所期望數據傳輸速度,尚無法確認。從這個意義上講,弄清楚它的工作模式是有實際意義的。
如何得知設備的實際工作模式呢?看來只有借助于第三方測試軟件了。下面以Travel star 40GB移動硬盤為例,使用兩款軟件測試其數據傳輸率。
HD Tach是一款專用的硬盤速度測試軟件,測出的數據為:最大值23.8MB/s,最小值:13.8MB/s;平均值:20.0MB/s(圖5)。
圖5 HD Tach 2.70的測量結果
SiSoft Sandra Pro 2005 是一款系統信息測試軟件,該軟件的“文件系統測試”項可以測試硬盤(包括移動硬盤)的傳輸速率,測出的數據傳輸率為24MB/s(圖6)。
圖6 SiSoft Sandra Pro 2005 的測量結果
雖然兩款軟件測試結果不盡相同,卻說明了同一個事實:移動硬盤確實工作在USB 2.0模式下,因為這些數據都超過了USB 1.1規范的最大理論值12MB/s。
四、USB 2.0 為何≠ 480Mbps
由上面這些測試數據,我們已經看到,USB2.0的設備,也未必就意味著它們就是以480Mbps的數據傳輸率進行數據交換。這是因為:
(1)傳輸線路的影響
由于USB 2.0 High-speed接口的傳輸速率是USB 1.1的40倍,二者的數據延長線有明顯不同。仔細觀察USB 2.0 High-speed延長線纜,通??煽吹?ldquo;USB Revision 2.0”或“High-speed USB”的標注。如果使用不符合標準的或者劣質的延長線,可能會導致傳輸率下降或讀寫錯誤。
(2)設備性能的限制
就目前來說,突發傳輸率能夠達到480Mbps的設備還不多見。硬盤的數據傳輸率最高,也沒有達到這個數值。與硬盤相比,閃存的讀寫速度更慢一些,至少目前還達不到480Mps這么高的速度。
評論