開汲極與推挽輸出的差異:結構、上升時間、線及、用途比較

兩者都是輸出數位訊號的輸出級,但輸出 H 的方式不同。推挽輸出組合電源側的 pMOS 與接地側的 nMOS,H 與 L 都由電晶體主動輸出,因此速度快,靜止時幾乎沒有電流流動。開汲極輸出只有接地側的 nMOS,L 由它拉低,H 則是將輸出斷開,再由上拉電阻拉高。上升雖然較慢,但能將多個輸出接在 1 條線上(線及),也能選擇上拉的電壓,因此用於 I2C 與中斷線。

項目推挽輸出開汲極輸出
輸出級的結構電源側的 pMOS 與接地側的 nMOS 共 2 個(與 CMOS 反相器相同的形式)只有接地側的 nMOS。汲極引出到接腳,電源側什麼也沒有
輸出 H 的機制pMOS 導通,將接腳接到電源nMOS 關斷使接腳斷開(高阻抗),由外部的上拉電阻拉高
輸出 L 的機制nMOS 導通,將接腳接到接地nMOS 導通,將接腳接到接地(相同)
上升速度快。由 pMOS 充電慢。由上拉電阻 R 與線路電容 C 的時間常數 RC 決定(例:4.7 kΩ 與 100 pF 約為 0.47 µs)
下降速度快。由 nMOS 放電快。由 nMOS 放電
將多個輸出接在 1 條線上不行。H 與 L 衝突時,會有大電流從電源流向接地可以。只要任 1 個輸出 L,線路就會變成 L(線及)
與不同電壓電路的連接H 的電壓由自身的電源電壓決定。與不同電壓的電路連接需要位準轉換器H 的電壓由上拉的電壓決定,因此在接腳耐壓範圍內可配合對方的電壓
消耗電流靜止時幾乎不流(只有漏電流)。切換時會有充放電電流輸出 L 期間,上拉電阻持續有電流流過(3.3 V 與 4.7 kΩ 約為 0.7 mA)
速度的大致範圍可達數十 MHz 以上受上拉電阻與電容限制。I2C 為 100 kHz、400 kHz、1 MHz 等
主要用途SPI 與 UART 的訊號、時脈、一般 GPIO、記憶體匯流排等快速訊號I2C 與 SMBus、多個元件共用的中斷線與重置線、與不同電壓電路的連接、LED 驅動

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

推挽輸出
以 1 個輸出驅動輸入,且速度或低消耗電流很重要時。GPIO、SPI、UART 等一般的數位訊號都屬於這一類。
開汲極輸出
多個元件驅動同一條線時(I2C、共用的中斷線或重置線),或想改變上拉的電壓,將訊號傳給不同電壓的電路時。
切換
許多微控制器的 GPIO 可透過設定在推挽與開汲極之間切換。用於 I2C 的接腳設定為開汲極,並在外部加上上拉電阻。

常見問題

上拉電阻的值如何決定?

電阻越小上升越快,但輸出 L 期間流過的電流會增加,L 的電壓(VOL)也會升高。上限由線路電容與所需的上升時間決定,下限由輸出能吸入的電流與 VOL 的規格決定。I2C 常用數 kΩ(例如約 2.2 至 10 kΩ)。

將推挽輸出直接互相連接會發生什麼事?

一方輸出 H、另一方輸出 L 時,大電流會經由 H 側的 pMOS 與 L 側的 nMOS 從電源流向接地(匯流排衝突)。線路的電壓也會停在不上不下的位置,造成發熱或元件損壞,因此共用的線路要使用開汲極,或能將輸出斷開的三態輸出。

為什麼 I2C 使用開汲極?

因為多個裝置會驅動同一組 SDA 與 SCL 線。接收方將 SDA 拉低為 L 以回傳 ACK、從端將 SCL 保持在 L 使主端等待(時脈延展)、多個主端同時開始傳送時進行仲裁等動作,都利用了只要任 1 個輸出 L、線路就變成 L 的線及特性。

與開集極有什麼不同?

概念相同。輸出電晶體為雙極性電晶體時稱為開集極,為 MOSFET 時稱為開汲極。兩者都只負責拉低 L,H 則由上拉電阻產生。

理解度檢測

將多個開汲極輸出的電路接到有上拉電阻的1條訊號線上時,下列哪一項動作正確?

  1. A輸出之間會衝突而必定損壞
  2. B只要有任何1個輸出0,線路就變成0,作為線與(wired-AND)運作
  3. C只要有任何1個輸出1,線路就變成1
查看答案與解析

正確答案:B. 只要有任何1個輸出0,線路就變成0,作為線與(wired-AND)運作

開汲極輸出只有以電晶體將線路拉到接地,或切離線路這兩種狀態,1是由上拉電阻產生。只要有任何1個輸出0,線路就為0,只有全部都切離時才為1,作為線與(wired-AND)運作,即使輸出之間衝突也不會損壞。用於I²C匯流排、中斷線,以及不同電源電壓的電路之間的位準轉換。由於上升時間取決於上拉電阻與佈線電容,因此會變慢。

將開汲極輸出的上拉電阻值調小時,下列變化何者正確?

  1. A上升變慢,但輸出L時流過的電流減少,功耗降低
  2. B上升變快,但輸出L時流過的電流增加,VOL也容易升高
  3. CH位準的電壓會高於上拉所接的電源電壓,容易超過接收端輸入的額定值
查看答案與解析

正確答案:B. 上升變快,但輸出L時流過的電流增加,VOL也容易升高

開汲極輸出的H位準,是在輸出電晶體關閉時由上拉電阻將訊號線拉高而形成。上升的速度由電阻與佈線電容的時間常數決定,例如10 kΩ與100 pF時為1 µs。電阻調小會變快,但輸出L時電流會從電源經電阻流入,3.3 V與1 kΩ時為3.3 mA。此電流若超過規格書的IOL條件,VOL就無法落在規定值內,因此要選擇同時滿足兩者的數值。

關於I2C通訊的特徵,下列何者正確?

  1. A每個裝置都需要專用的晶片選擇線
  2. B傳送與接收的線各自獨立,可同時雙向傳送
  3. C在時脈(SCL)與資料(SDA)2條線上連接多個裝置,以位址選擇通訊對象
查看答案與解析

正確答案:C. 在時脈(SCL)與資料(SDA)2條線上連接多個裝置,以位址選擇通訊對象

I2C是只用SCL與SDA 2條線就能連接多個裝置的同步序列通訊。主控端先傳送對象的7位元位址,只有該位址的裝置會回應。線路為開汲極,以上拉電阻拉到1,任何裝置都能把它拉到0。適合溫度感測器、加速度感測器、EEPROM等重視佈線少而非速度的元件。

  1. 在I2C中,收到1位元組資料的一方通知已收到的方法,下列何者正確?
  2. 在以不同電源電壓運作的兩個區塊之間傳遞訊號時所加入的位準轉換器(level shifter),其作用下列何者正確?

前往邏輯電路的練習題

相關名詞的解說

開汲極(Open-drain)
只將輸出電晶體的汲極拉出到端子,僅主動輸出 L 位準的方式。H 位準由外接的上拉電阻產生,因此可將多個輸出接到同一條線,或與電源電壓不同的電路連接。用於 I2C 匯流排等。
上拉電阻(Pull-up resistor)
以電阻將訊號線連接到電源,在沒有任何驅動時使其保持在 1 的電位的電阻。可避免輸入接腳浮接,也用於 I2C 線路等。
I2C
在時脈(SCL)與資料(SDA)兩條線上連接多個裝置,並以位址選擇對象的同步序列通訊。線路為開汲極並以上拉電阻拉高。

相關的比較