Open-drain versus push-pull: opbouw, stijgtijd, wired-AND en toepassingen
Beide zijn uitgangstrappen die digitale signalen afgeven, maar ze verschillen in hoe ze een H maken. Een push-pulluitgang combineert een pMOS aan de voedingszijde met een nMOS aan de massazijde en stuurt zowel H als L actief met transistors; daardoor is hij snel en loopt er in rust vrijwel geen stroom. Een open-drainuitgang heeft alleen een nMOS aan de massazijde: L wordt omlaag getrokken, maar voor H wordt de uitgang losgekoppeld en trekt een pull-upweerstand de lijn omhoog. De stijgflank is trager, maar meerdere uitgangen kunnen op één lijn worden aangesloten (wired-AND) en de pull-upspanning is vrij te kiezen, waardoor open-drain wordt gebruikt voor I2C en interruptlijnen.
| Kenmerk | Push-pulluitgang | Open-drainuitgang |
|---|---|---|
| Opbouw van de uitgangstrap | Twee transistors: een pMOS aan de voedingszijde en een nMOS aan de massazijde (dezelfde vorm als een CMOS-inverter) | Alleen een nMOS aan de massazijde. De drain is naar de pin uitgevoerd; aan de voedingszijde zit niets |
| Hoe H wordt gemaakt | De pMOS gaat aan en verbindt de pin met de voeding | De nMOS gaat uit en koppelt de pin los (hoogohmig); een externe pull-upweerstand trekt de lijn omhoog |
| Hoe L wordt gemaakt | De nMOS gaat aan en verbindt de pin met massa | De nMOS gaat aan en verbindt de pin met massa (hetzelfde) |
| Stijgsnelheid | Snel. De pMOS laadt de lijn op | Traag. Bepaald door de tijdconstante RC van pull-upweerstand R en lijncapaciteit C (bijv. 4,7 kΩ en 100 pF geven ongeveer 0,47 µs) |
| Daalsnelheid | Snel. De nMOS ontlaadt de lijn | Snel. De nMOS ontlaadt de lijn |
| Meerdere uitgangen op één lijn | Niet mogelijk. Als H en L botsen, loopt er een grote stroom van de voeding naar massa | Mogelijk. Zodra één uitgang L geeft, wordt de lijn L (wired-AND) |
| Koppeling met circuits op een andere spanning | De H-spanning wordt bepaald door de eigen voedingsspanning. Voor circuits op een andere spanning is een niveauomzetter nodig | De H-spanning wordt bepaald door waar de pull-up op is aangesloten, zodat die binnen de maximale pinspanning aan de spanning van de ontvanger kan worden aangepast |
| Stroomverbruik | In rust vrijwel nul (alleen lekstroom). Bij het schakelen lopen laad- en ontlaadstromen | Zolang L wordt gegeven, blijft er stroom door de pull-upweerstand lopen (bij 3,3 V en 4,7 kΩ ongeveer 0,7 mA) |
| Indicatie van de snelheid | Enkele tientallen MHz of meer is haalbaar | Beperkt door pull-upweerstand en capaciteit. Bij I2C bijvoorbeeld 100 kHz, 400 kHz of 1 MHz |
| Belangrijkste toepassingen | Snelle signalen zoals SPI- en UART-signalen, klokken, algemene GPIO en geheugenbussen | I2C en SMBus, interrupt- en resetlijnen die door meerdere componenten worden gedeeld, koppeling met circuits op een andere spanning en het aansturen van leds |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.