數字隔離器是一種方便易用的USB隔離方法
USB,是英文Universal Serial Bus(通用串行總線)的縮寫,個人電腦(PC)可以使用USB通過連接電纜與外設進行通信。但是出于安全考慮,在某些應用中需要隔離USB通信或隔斷接地回路。遺憾的是,由于USB連接電纜上的數據流是雙向傳輸,所以隔離工作也非易事。這篇文章討論的就是方便易用的USB隔離設備在實際應用中遇到的挑戰(zhàn),并對比了各種不同的解決方案。“透明的”理想方案是將添加隔離設備帶給系統(tǒng)的影響降至最低限度,而這樣的解決方案目前已經成為可能。
本設計實例主要針對的是以三種數據傳輸速率運行的USB2.0:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。簡單起見,本文著重探討了12Mbps的全速USB,且實例中的大部分實現原理也適用于以其他數據傳輸速率運行的USB設備。
關于USB
USB大受歡迎的一個原因是其簡單的4線接口設計,不但可以為外設供電,還可以在外設和PC間充當串行數據鏈路。圖1是標準的USB(參考文獻1)連接示意圖。VBUS線可以為外設提供5V電力,GND為接地線,而D+和D-則用來傳輸數據。信號是雙向半雙工傳輸,意味著數據可以在線纜的任意方向流動,但是無論何時,最多只有一個發(fā)射器可以有效驅動該線纜。在通信過程中,USB發(fā)射器驅動差分或單端狀態(tài)信號到D+和D-線。數據被組織成數據包,其中有特別的信號序列標識數據包的頭部和尾部。有時,總線會處于空閑狀態(tài),也就意味著沒有發(fā)射器處于活躍狀態(tài),此時與線纜兩端相連的電阻在D+和D-線建立起“空閑”總線狀態(tài)??臻e狀態(tài)會促成兩個數據包之間總線的初始化,并使主機了解外設何時連接或斷開以及外設期望的通信速率(1.5Mbps、12Mbps或480Mbps)。
隔離USB主機和外設的方法
現在想象一下對主機和外設進行電氣隔離的方法。如參考文獻1中提到的,添加隔離阻障的方法有很多。但是無論如何都必須對信號進行隔離。信號是高速運行還是雙向運行要取決于隔離阻障的具體添加位置,增加了從具體零部件中構建隔離阻障的難度。這樣一來,隔離過程需要使用到更多的材料,而且也很難發(fā)現完全符合信號要求的分離組件。
圖2a給出的是一種可能的隔離方法,其中虛線表示對USB線纜的概念分割。有關D+和D-線的信息可以穿過隔離阻障,但是電流不可以。在這種情況下,接地端1(上游側接地基準)是獨立于接地端2(下游側接地基準)的一個單獨節(jié)點。不幸的是,這種隔離方法使主機無法“看到”下游側上拉電阻,且外設也無法“看到”上游側下拉電阻。因此,正如圖2b所示,這種隔離方法需要一些額外的電阻來模擬其相對物穿過隔離阻障的連接方式。在這一“透明”隔離概念中,主機與外設之間的通信與圖1非隔離USB連接的運行原理類似。透明的USB隔離器組件簡單地插入到某個收發(fā)器與USB線纜之間,還有一個隔離電源。最初為非隔離應用設計的主機和外設可以輕松地連接到USB隔離器上,無需重大更改即可實現標準USB信號的交互。
假如可以真正實現,這種方法還是極具吸引力的,但是真正實現起來需要面臨各種挑戰(zhàn)。舉例來說,獨立式光耦合器或者數字隔離器一般不支持USB兼容驅動特性,也不支持雙向半雙工通信。此外,很多光耦合器無法以12Mbps或更快的速度運行,且傳播延遲較長并存在定時誤差,這些都不符合USB2.0的定時要求。還有一些問題會在后面講述。
現在,我們轉移一下注意力,考慮一下不透明的替代選擇,比如參考文獻1中描述的那些。這些方案不再對USB線纜平分隔離,而是把隔離阻障放置到主機或外設的硬件中—可以放置在USB收發(fā)器與串行接口引擎(SIE)之間,或者串行接口引擎與USB控制器之間。這樣就可以將單向數字邏輯信號與獨立式通用隔離器分離開來。但是,這樣的方案也存在一些重大缺陷。首先,USB收發(fā)器或控制器硬件必須經過定制,使其能夠容納隔離組件;還可能需要一些額外的微控制器代碼或USB驅動軟件方面的改動。所有這些無疑會加大系統(tǒng)設計師的工作負擔。而由于這些方案比較復雜且需要不同的組件,也會大大增加所需的板空間。
另外一個缺陷就是,數據傳送需要USB收發(fā)器和單獨隔離方案的一系列組合,可能會導致整體數據吞吐量降低。此外,隔離方案可能會增加與編解碼成其它串行格式如串行外設接口(SPI)相關的延遲或者與隔離組件低速或非精確定時相關的延遲。
評論