Open-Drain Output Signals Explained

An open-drain (or open-collector in BJT circuits) output is a type of digital output that can only actively drive the signal LOW or leave it floating (high-impedance).

How It Works

An open-drain output consists of a single transistor:

  • Transistor OFF: Output is in high-impedance (Hi-Z) state
  • Transistor ON: Output is pulled to ground (LOW)

A pull-up resistor is required to establish the HIGH level when no device is driving the line LOW.

Wired-OR / Wired-AND

Multiple open-drain outputs can be connected to the same signal line. This configuration is known as:

  • Wired-OR (active-low logic): Any device can pull the line LOW
  • Wired-AND (active-high logic): Line is HIGH only when all devices release it

In HDL (Verilog, VHDL), this is modeled using wor or wand net types.

Common Applications

ApplicationDescription
I2C BusSDA and SCL lines use open-drain for multi-master support
SPI FAULT PinMultiple slaves share a common fault indicator
Interrupt LinesMultiple devices share a single IRQ line
Reset DistributionMultiple reset sources to a common device
Bus MultiplexingShared data buses (e.g., 8x1 Mux)

Verilog Example

// Open-drain output modeling
wire bus;
assign bus = (drive_low) ? 1'b0 : 1'bz;

// Wired-OR with multiple drivers
wor shared_line;
assign shared_line = device1_out;
assign shared_line = device2_out;
assign shared_line = device3_out;

Key Point: Open-drain outputs enable multiple devices to share a single signal line without bus contention, as devices either drive LOW or release the line.

Author
Mayur Kubavat
VLSI Design and Verification Engineer sharing knowledge about SystemVerilog, UVM, and hardware verification methodologies.

Comments (0)

Leave a Comment