We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 1651

How do I configure my Xilinx device I/O as an open-drain (open-collector)?


It is often useful for a device to contain open-drain or open-collector outputs so that multiple outputs can be connected to a single input, such as a reset line.

Can I configure my Xilinx device to include open-drain outputs?

How do I configure my Xilinx device I/O as an open-drain (open-collector)?


With all Xilinx devices, an open-drain type output is not available directly but canbe configured. Schematically, this type of output should look like the following:

Open-Drain Output
Open-Drain Output

This type of circuitry can also be described in HDL code.

Infer the open drain buffer by using the following code:


dout <= 'Z' when din='1' else '0';


always @(ENABLE)
DOUT = 1'bZ;
DOUT = 1'b0;

AR# 1651
Date Created 08/21/2007
Last Updated 02/18/2013
Status Active
Type General Article
  • 4000/E/XL/XV
  • 4000E/EX/XL QPro/R
  • 9500
  • More
  • 9500XL
  • 9500XL IQ
  • 9500XL XA
  • Artix-7
  • CoolRunner XPLA3
  • CoolRunner-II
  • CoolRunner-II XA
  • Spartan/XL
  • Spartan-3
  • Spartan-3 XA
  • Spartan-3A
  • Spartan-3A DSP
  • Spartan-3AN
  • Spartan-3E
  • Spartan-6 LX
  • Spartan-6 LXT
  • Spartan-6Q
  • Spartan-II
  • Spartan-IIE
  • Spartan-IIE XA
  • Spartan-XL IQ
  • Virtex
  • Virtex QPro/R
  • Virtex-4 FX
  • Virtex-4 LX
  • Virtex-4 QPro/R
  • Virtex-4 SX
  • Virtex-4Q
  • Virtex-4QV
  • Virtex-5 FXT
  • Virtex-5 LX
  • Virtex-5 LXT
  • Virtex-5 SXT
  • Virtex-5 TXT
  • Virtex-5Q
  • Virtex-5QV
  • Virtex-6 CXT
  • Virtex-6 HXT
  • Virtex-6 LX
  • Virtex-6 LXT
  • Virtex-6 SXT
  • Virtex-6Q
  • Virtex-E
  • Virtex-E QPro
  • Virtex-EM
  • Virtex-II
  • Virtex-II Pro
  • Virtex-II Pro X
  • Virtex-II QPro/R
  • Less