오픈 드레인과 푸시풀 출력의 차이점 정리

둘 다 디지털 신호를 내보내는 출력단이지만, H를 내는 방식이 다릅니다. 푸시풀 출력은 전원 쪽 pMOS와 그라운드 쪽 nMOS를 조합해 H와 L을 모두 트랜지스터로 능동적으로 출력하므로 빠르고, 정지해 있는 동안에는 전류도 거의 흐르지 않습니다. 오픈 드레인 출력은 그라운드 쪽 nMOS만 가지고 있어 L은 끌어내리지만, H는 출력을 분리하고 풀업 저항으로 끌어올립니다. 상승은 느려지지만 여러 출력을 한 선에 연결할 수 있고(와이어드 AND), 풀업 전압도 선택할 수 있어 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로 방전합니다
여러 출력을 한 선에 연결불가. H와 L이 충돌하면 전원에서 그라운드로 큰 전류가 흐릅니다가능. 하나라도 L을 내면 선이 L이 됩니다(와이어드 AND)
전압이 다른 회로와의 연결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 구동

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

푸시풀 출력
하나의 출력으로 입력을 구동하고, 속도나 낮은 소비 전류가 중요할 때. GPIO나 SPI, UART 등 일반적인 디지털 신호는 이쪽입니다.
오픈 드레인 출력
여러 부품이 같은 선을 구동할 때(I2C, 공유 인터럽트나 리셋 선), 풀업 대상을 바꿔 전압이 다른 회로에 신호를 전달하고 싶을 때.
전환
많은 마이컴의 GPIO는 설정으로 푸시풀과 오픈 드레인을 전환할 수 있습니다. I2C에 쓰는 단자는 오픈 드레인으로 설정하고 외부에 풀업 저항을 붙입니다.

자주 묻는 질문

풀업 저항 값은 어떻게 정하나요?

작게 할수록 상승은 빨라지지만, L을 내는 동안 흐르는 전류가 늘고 L 전압(VOL)도 올라갑니다. 상한은 선의 용량과 필요한 상승 시간으로, 하한은 출력이 끌어들일 수 있는 전류와 VOL 규격으로 정합니다. I2C에서는 수 kΩ(예를 들어 2.2~10 kΩ 정도)이 자주 쓰입니다.

푸시풀 출력끼리 직접 연결하면 어떻게 되나요?

한쪽이 H, 다른 쪽이 L을 내면 H 쪽의 pMOS와 L 쪽의 nMOS를 통해 전원에서 그라운드로 큰 전류가 흐릅니다(버스 충돌). 선의 전압도 어중간해지고 발열이나 소자 파손의 원인이 되므로, 공유하는 선에는 오픈 드레인이나 출력을 분리할 수 있는 3상태(스리스테이트) 출력을 사용합니다.

I2C가 오픈 드레인을 쓰는 이유는 무엇인가요?

여러 기기가 같은 SDA와 SCL 선을 구동하기 때문입니다. 수신 측이 SDA를 L로 끌어내려 ACK를 반환하거나, 슬레이브가 SCL을 L로 유지해 기다리게 하거나(클록 스트레칭), 여러 마스터가 동시에 송신을 시작했을 때 중재하는 동작은 모두 하나라도 L을 내면 선이 L이 되는 와이어드 AND의 성질을 이용합니다.

오픈 컬렉터와는 무엇이 다른가요?

개념은 같습니다. 출력 트랜지스터가 바이폴라 트랜지스터이면 오픈 컬렉터, MOSFET이면 오픈 드레인이라고 부릅니다. 둘 다 L만 끌어내리고 H는 풀업 저항으로 만듭니다.

이해도 확인

오픈 드레인 출력 회로를 여러 개, 풀업 저항이 있는 하나의 신호선에 연결했을 때의 동작으로 올바른 것은?

  1. A출력끼리 충돌하여 반드시 파손된다
  2. B어느 하나라도 0을 출력하면 선이 0이 되어 와이어드 AND로 동작한다
  3. C어느 하나라도 1을 출력하면 선이 1이 된다
정답과 해설 보기

정답: B. 어느 하나라도 0을 출력하면 선이 0이 되어 와이어드 AND로 동작한다

오픈 드레인 출력은 트랜지스터로 선을 그라운드로 끌어내리거나 분리하는 두 가지 상태이며, 1은 풀업 저항이 만듭니다. 어느 하나라도 0을 출력하면 선은 0이 되고 모두가 분리했을 때만 1이 되는 와이어드 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. 서로 다른 전원 전압으로 동작하는 두 블록 사이에서 신호를 주고받을 때 넣는 레벨 시프터의 역할로 올바른 것은?

논리 회로 문제 풀기

주요 용어 설명

오픈 드레인(Open Drain)
출력 트랜지스터의 드레인만 단자로 끌어내어 L 레벨만 능동적으로 출력하는 방식. H 레벨은 외부 풀업 저항으로 만들기 때문에 여러 출력을 1개의 선에 연결하거나 전원 전압이 다른 회로와 연결할 수 있다. I2C 버스 등에서 사용된다.
풀업 저항(Pull-up Resistor)
신호선을 저항으로 전원에 연결하여 아무것도 구동하지 않을 때 1의 전위로 유지하기 위한 저항. 입력 단자가 플로팅되는 것을 막으며 I2C 선 등에도 사용한다.
I2C
클록(SCL)과 데이터(SDA)의 2개 선에 여러 기기를 연결하고 주소로 상대를 선택하는 동기식 직렬 통신. 선은 오픈 드레인으로 풀업한다.

관련 비교