USB,是英文Universal Serial Bus(通用串行總線(xiàn))的縮寫(xiě),個(gè)人電腦(PC)可以使用USB通過(guò)連接電纜與外設進(jìn)行通信。但是出于安全考慮,在某些應用中需要隔離USB通信或隔斷接地回路。遺憾的是,由于USB連接電纜上的數據流是雙向傳輸,所以隔離工作也非易事。這篇文章討論的就是方便易用的USB隔離設備在實(shí)際應用中遇到的挑戰,并對比了各種不同的解決方案。“透明的”理想方案是將添加隔離設備帶給系統的影響降至最低限度,而這樣的解決方案目前已經(jīng)成為可能。
本設計實(shí)例主要針對的是以三種數據傳輸速率運行的USB2.0:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。簡(jiǎn)單起見(jiàn),本文著(zhù)重探討了12Mbps的全速USB,且實(shí)例中的大部分實(shí)現原理也適用于以其他數據傳輸速率運行的USB設備。
關(guān)于USB
USB大受歡迎的一個(gè)原因是其簡(jiǎn)單的4線(xiàn)接口設計,不但可以為外設供電,還可以在外設和PC間充當串行數據鏈路。圖1是標準的USB(參考文獻1)連接示意圖。VBUS線(xiàn)可以為外設提供5V電力,GND為接地線(xiàn),而D+和D-則用來(lái)傳輸數據。信號是雙向半雙工傳輸,意味著(zhù)數據可以在線(xiàn)纜的任意方向流動(dòng),但是無(wú)論何時(shí),最多只有一個(gè)發(fā)射器可以有效驅動(dòng)該線(xiàn)纜。在通信過(guò)程中,USB發(fā)射器驅動(dòng)差分或單端狀態(tài)信號到D+和D-線(xiàn)。數據被組織成數據包,其中有特別的信號序列標識數據包的頭部和尾部。有時(shí),總線(xiàn)會(huì )處于空閑狀態(tài),也就意味著(zhù)沒(méi)有發(fā)射器處于活躍狀態(tài),此時(shí)與線(xiàn)纜兩端相連的電阻在D+和D-線(xiàn)建立起“空閑”總線(xiàn)狀態(tài)?臻e狀態(tài)會(huì )促成兩個(gè)數據包之間總線(xiàn)的初始化,并使主機了解外設何時(shí)連接或斷開(kāi)以及外設期望的通信速率(1.5Mbps、12Mbps或480Mbps)。
隔離USB主機和外設的方法
現在想象一下對主機和外設進(jìn)行電氣隔離的方法。如參考文獻1中提到的,添加隔離阻障的方法有很多。但是無(wú)論如何都必須對信號進(jìn)行隔離。信號是高速運行還是雙向運行要取決于隔離阻障的具體添加位置,增加了從具體零部件中構建隔離阻障的難度。這樣一來(lái),隔離過(guò)程需要使用到更多的材料,而且也很難發(fā)現完全符合信號要求的分離組件。
圖2a給出的是一種可能的隔離方法,其中虛線(xiàn)表示對USB線(xiàn)纜的概念分割。有關(guān)D+和D-線(xiàn)的信息可以穿過(guò)隔離阻障,但是電流不可以。在這種情況下,接地端1(上游側接地基準)是獨立于接地端2(下游側接地基準)的一個(gè)單獨節點(diǎn)。不幸的是,這種隔離方法使主機無(wú)法“看到”下游側上拉電阻,且外設也無(wú)法“看到”上游側下拉電阻。因此,正如圖2b所示,這種隔離方法需要一些額外的電阻來(lái)模擬其相對物穿過(guò)隔離阻障的連接方式。在這一“透明”隔離概念中,主機與外設之間的通信與圖1非隔離USB連接的運行原理類(lèi)似。透明的USB隔離器組件簡(jiǎn)單地插入到某個(gè)收發(fā)器與USB線(xiàn)纜之間,還有一個(gè)隔離電源。最初為非隔離應用設計的主機和外設可以輕松地連接到USB隔離器上,無(wú)需重大更改即可實(shí)現標準USB信號的交互。
假如可以真正實(shí)現,這種方法還是極具吸引力的,但是真正實(shí)現起來(lái)需要面臨各種挑戰。舉例來(lái)說(shuō),獨立式光耦合器或者數字隔離器一般不支持USB兼容驅動(dòng)特性,也不支持雙向半雙工通信。此外,很多光耦合器無(wú)法以12Mbps或更快的速度運行,且傳播延遲較長(cháng)并存在定時(shí)誤差,這些都不符合USB2.0的定時(shí)要求。還有一些問(wèn)題會(huì )在后面講述。
現在,我們轉移一下注意力,考慮一下不透明的替代選擇,比如參考文獻1中描述的那些。這些方案不再對USB線(xiàn)纜平分隔離,而是把隔離阻障放置到主機或外設的硬件中—可以放置在USB收發(fā)器與串行接口引擎(SIE)之間,或者串行接口引擎與USB控制器之間。這樣就可以將單向數字邏輯信號與獨立式通用隔離器分離開(kāi)來(lái)。但是,這樣的方案也存在一些重大缺陷。首先,USB收發(fā)器或控制器硬件必須經(jīng)過(guò)定制,使其能夠容納隔離組件;還可能需要一些額外的微控制器代碼或USB驅動(dòng)軟件方面的改動(dòng)。所有這些無(wú)疑會(huì )加大系統設計師的工作負擔。而由于這些方案比較復雜且需要不同的組件,也會(huì )大大增加所需的板空間。
另外一個(gè)缺陷就是,數據傳送需要USB收發(fā)器和單獨隔離方案的一系列組合,可能會(huì )導致整體數據吞吐量降低。此外,隔離方案可能會(huì )增加與編解碼成其它串行格式如串行外設接口(SPI)相關(guān)的延遲或者與隔離組件低速或非精確定時(shí)相關(guān)的延遲。
雖然有這些不足之處,但在過(guò)去難以克服實(shí)現透明USB隔離器的挑戰時(shí),這些方案是唯一可行的選擇。但是現在,透明的隔離解決方案已成為現實(shí),本文的后半部分將具體描述一個(gè)完全符合要求的實(shí)例。
透明USB隔離器的要求
USB隔離器系統必須滿(mǎn)足下述要求,才能實(shí)現真正的“透明”操作:
作為標準的USB收發(fā)器,USB隔離器系統必須能夠以同樣的方式驅動(dòng)UD+、UD-、DD+和DD-,且實(shí)際上應包含兩個(gè)USB兼容收發(fā)器,分別位于絕緣阻障的兩端(圖3)。
USB隔離器系統的收發(fā)器必須能夠在適當的時(shí)間發(fā)送和接收信息,以管理USB線(xiàn)纜上的雙向通信,且USB隔離器系統必須能夠準確地復制所有驅動(dòng)和空閑狀態(tài)。要想準確地復制空閑狀態(tài),USB隔離器系統必須在上游側設置一個(gè)上拉電阻器來(lái)模擬連接至下游側外設上的上拉電阻的狀態(tài)。當然,也可以在下游側設置一些下拉電阻。此外,必須對總線(xiàn)進(jìn)行監控,識別指示空閑總線(xiàn)、數據包頭、數據包尾的信號,以便能夠實(shí)時(shí)應對各種狀況。
USB隔離器內部的信號隔離器組件必須能夠穿過(guò)隔離阻障來(lái)回交流D+和D-數據。如果信號隔離器是單向的(因為一般情況下都是),USB隔離器系統需要多個(gè)隔離通道,有些負責在下游方向傳送數據,有些負責在相反的上游方向傳送數據。
信號隔離器必須能夠快速運行且具備準確定時(shí)功能,這樣才能滿(mǎn)足USB信令速率與傳播延遲和定時(shí)誤差的要求。
USB隔離器的兩端均應支持5V或3.3V電源。如果是5V電源,隔離器應能夠衍生出適用于一側USB收發(fā)器的3.3V穩壓電源。如果是3.3V電源,隔離器能夠旁路調節器,直接使用該電源為USB收發(fā)器供電。
透明USB隔離器的實(shí)現
美國ADI公司的ADuM4160 USB數字隔離器(參考文獻2)符合上述所有要求,并集成在16引腳小型SOIC封裝中。圖3給出的是ADuM4160的框圖。該器件包含一對USB收發(fā)器,5條iCoupler數字隔離通道、控制邏輯和兩個(gè)“智能調節器”。此外,該器件還包括一個(gè)1.5kΩ的上游側上拉電阻和數個(gè)15kΩ的下游側下拉電阻。
ADuM4160的USB收發(fā)器由一個(gè)簡(jiǎn)化控制器進(jìn)行控制,無(wú)需完全解碼和分析數據包即可實(shí)現隔離功能。此外,它還可以監控UD+、UD-、DD+和DD-,識別指示空閑總線(xiàn)、數據包頭、數據包尾的信號,從而在忽略數據包內容的同時(shí)正確地使能或去使能USB收發(fā)器。當在下游側從主機向外設傳輸數據包時(shí),圖3中上方的兩條隔離通道處于有效狀態(tài),用作上游側USB接收器和下游側USB發(fā)射器。數據從UD+/UD-拷貝到DD+/DD-.當數據包傳輸結束時(shí),USB隔離器檢測到尾部序列后就會(huì )去使能所有USB收發(fā)器,使總線(xiàn)進(jìn)入空閑狀態(tài)。如果接下來(lái)外設開(kāi)始向上游側傳輸數據包,USB隔離器檢測到數據包頭部序列后就會(huì )使能第三和第四條隔離通道以及上游側USB發(fā)射器,并將數據從UD+/UD-拷貝到DD+/DD-,直到數據包傳輸結束。然后,總線(xiàn)再次進(jìn)入空閑狀態(tài),所有發(fā)射器也被關(guān)閉,等待新的數據傳輸。
ADuM4160使用第五隔離通道來(lái)傳遞下游側(參考文獻3)控制線(xiàn)路的狀態(tài)信息,從而激活一個(gè)集成于上游側的上拉電阻,這使得下游端口能夠控制上游端口何時(shí)連接USB總線(xiàn)。該引腳可以連接到外設上拉電阻、一條控制線(xiàn)路或VDD2引腳,具體取決于何時(shí)執行初始總線(xiàn)連接。將該引腳連接到外設上拉電阻可以使上游側上拉電阻模擬其狀態(tài),同時(shí)ADuM4160的下拉電阻可以模擬連接到主機的下拉電阻的狀態(tài)。所有有效與空閑狀態(tài)均可從隔離阻障的一側復制到另一側。
隔離通道是使用芯片級變壓器技術(shù)實(shí)現隔離通信的數字隔離器。每一單個(gè)通道的運行速度均超過(guò)100Mbps,可以輕松支持12Mbps的全速USB數據傳輸。把所有通道集成到一個(gè)單獨的芯片上可以實(shí)現對時(shí)間的嚴密控制,從而降低定時(shí)誤差,以滿(mǎn)足USB的定時(shí)要求。此外,穿過(guò)ADuM4160的全部傳播延遲相當于穿過(guò)一個(gè)標準USB集線(xiàn)器的延遲,且靜態(tài)功耗要低于空閑總線(xiàn)的USB限制值。
智能調節器支持上面第5條要求中提到的電源選項,且無(wú)需明確的用戶(hù)控制(參考文獻4)。如要使用5V電源(例如上游側)為USB隔離器的一側供電,則要將該5V電源連接到合適的VBUS引腳(如VBUS1)上,且將VDD1設為斷開(kāi)狀態(tài)。當傳感器檢測到電壓是應用于VBUS1而非VDD1時(shí),傳感器會(huì )激活3.3V調節器,為VDD1供電。
要想使用3.3V電源(例如下游側)為USB隔離器的一側供電,要將3.3V電源與VBUS2和VDD2相連接。當傳感器檢測到兩側引腳上同時(shí)出現外加電壓時(shí),就會(huì )去使能片上調節器,直接使用外接3.3V電源。
結論
從概念上講,“透明”USB隔離器是把USB線(xiàn)纜數一分為二,與原本為非隔離應用設計的USB硬件一起使用操作起來(lái)非常簡(jiǎn)單。這與在主機或外設硬件內部放置隔離組件的方案相比形成強烈的反差,因為那一方案需要進(jìn)行大量的硬件改裝,甚至可能會(huì )降低USB的性能。在使用現有通用隔離器等分離組件的情況下,實(shí)現透明概念的隔離具有很大的挑戰性。然而,最新的集成解決方案如ADuM4160通過(guò)單個(gè)便利封裝克服了上述挑戰,大大簡(jiǎn)化了USB應用中添加隔離阻障的問(wèn)題。