雙向匯流排(例如I2C、SMBus、LIN)在今日的電子產品中隨處可見,部分原因是它們非常簡單。只需兩條線——資料和時脈——多個元件就能彼此進行通訊。根據I2C匯流排規格,最多有128個元件可以共用相同的資料和時脈線;實現的方法是使用外部上拉電阻(pullup resistor)以及每個元件上的開汲極驅動器(open-draindrivers)。如果沒有元件發送低電平0,匯流排自然被上拉電阻拉到高電平1。不過匯流排上的任何一個元件都可以把匯流排拉到低電平0。

匯流排主控元件(master)可以隨時驅動匯流排,從元件(slave)需要在收到詢問後的一段時間內,對匯流排主控元件的詢問做出回應。在多主控(multi-master)應用場合,扮演匯流排主控元件的各個元件,被要求執行自己的匯流排仲裁。希望維持對匯流排控制的主控元件,被要求透過將匯流排拉到0對匯流排進行測試;這個動作會提醒其他主控元件匯流排正在使用中。

為何要分割雙向匯流排?

I2C匯流排規格所包含的參考電路,允許將I2C匯流排分割為輸入和輸出對;需要這種配置有多個原因:首先,分割匯流排可被用來以光學方式隔離匯流排上的主/從元件,以解決安全、雜訊和接地問題(如圖1)。

20160805TA01P1
圖1 雙向匯流排隔離。



另外,透過放大分割匯流排 (圖2)或用以執行介質轉換(media conversion)的電路代替放大器可提高性能,這種方法不僅可以增加匯流排的運作距離,還能透過降低電容提高匯流排的性能,隨著電容的降低,訊號時間常數τ將由上拉電阻主導。

對於雙向匯流排控制器的設計人員來說,匯流排分割技術可以用於除錯;典型的雙向通訊協議除錯難度很高,因為當一個控制器正維持對匯流排控制的情況下,另一個不正常運作的控制器可能會把匯流排拉到0。此時如果不知道每個元件控制器的內部狀態,就無法識別匯流排上的發送元件。然而,透過監視圖2中的/gateB1和/gateA2線,只需使用標準的實驗室設備和除錯技術就能識別發送元件與任何匯流排的同步斷言(simultaneous assertions)。

20160805TA01P2
圖2 雙向匯流排中繼器。



最後,匯流排分割技術還能用來將支援I2C的元件連接到沒有I2C控制器的另外一個元件。在這種情況下,分割匯流排可以連接到其他元件的GPIO埠(圖3)。

20160805TA01P3
圖3 連接GPIO的分割匯流排。



有好幾種公開發表的電路可以實現雙向匯流排的分割。遺憾的是,分割匯流排應用的參考電路,不是針對特殊應用要求專門設計(正如那些已發表的文章中所見),就是需要外部控制邏輯(參照I2C標準),這種邏輯使用傳輸閘實現發送器與接收器的通訊,不會產生可能造成閂鎖(latchup)的回饋路徑。

這種閂鎖狀況在圖2中很明顯,當IOA將匯流排拉到0時,會通過/gateB1迫使IOB拉到0,這又會無限期地通過/gateA2將IOA拉到0。

本設計實例中提供的雙側仲裁器(bilateral arbiter)可以將一條雙向匯流排分割成發送和接收對,並以通用方式構建,可因應各種分割匯流排應用。另外,它不需要外部控制邏輯——匯流排僅受資料匯流排狀態的控制。

雙側仲裁

這種仲裁器如圖5所示,由圖4所示的交叉耦合型使能電路組成;這種仲裁器之所以可行,是因為雙向匯流排根據定義只支援半雙工通訊。在穩定狀態,DATA匯流排被上拉電阻R1和R2拉到高電平,迫使OUT1和OUT2輸出為0,這將使兩個NMOS FET同時處於截止狀態。

20160805TA01P4
圖4 雙側仲裁器使能電路。



20160805TA01P5
圖5 雙向匯流排的雙側仲裁。



當IC1將DATA匯流排拉低時,OUT1變1,從而使Q2拉低IC2的DATA匯流排。與此同時,OUT1連接到NOR閘U2的輸入端,斷開從OUT2回到Q2的回饋迴路。斷開回饋迴路可以消除閂鎖狀態,使得任何其他控制邏輯都不再必須,因為斷言其資料線的第一個電路贏得競爭後,將通過NOR閘來閉鎖其他電路。

因為這種電路的自然特性,雙側仲裁可支援任何分割匯流排應用。圖6顯示了放大應用的雙側仲裁;這種電路很容易擴展為介質轉換和匯流排隔離,只需將放大器元件分別替代介質轉換電路或光隔離器即可。出於匯流排控制器除錯目的,可以透過監視放大器之間的訊號線,以識別發生故障的匯流排控制器。圖7顯示了應用於 I2C至GPIO連結的雙側仲裁電路。

20160805TA01P6
圖6 雙側仲裁可實現匯流排放大。



20160805TA01P7
圖7 I2C到GPIO連結。



小結

有諸多理由將雙向匯流排分割成發送/接收對。從提高性能到方便除錯到隔離,匯流排分割是許多設計工程師總會發現很有用的一種技術。雙側仲裁是一種匯流排仲裁技術,支援大多數匯流排分割應用;借助雙向匯流排通訊行為,雙側仲裁不需要外部控制電路,適合許多應用又不會增加不必要的複雜性。