UPGRADE YOUR BROWSER

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# 17188

7.1i CPLD CoolRunner-II - 3-state (open-drain) equations do not appear correct

Description

General Description:

Typical open-drain logic is described in (Xilinx Answer 6717). This open-drain logic can be written as follows:

my_od <= '0' when en = '0' else 'Z';

The Fitter report equation shows:

my_od = en;

This logic appears incorrect.

Solution

The CoolRunner-II CPLD supports open-drain outputs.

In an open-drain signal, when the logic is "true", the output is in high-impedance, and relies on an external pull-up resistor to raise the bus High. When the logic is "false", the output is driven Low to keep the external bus Low.

When a signal is configured as an open-drain output, the output logic is high-impedance when "true" and driven Low when "false."

Consequently, the following equation, when implemented as on an open-drain configuration, means that when the "en" signal is "true," the output is high-impedance. When "en" is "false," the output is driven Low.

my_od = en;

To determine if an output is configured as an open-drain signal, see the section of the Fitter report (.rpt) that is labeled "Resources Used by Successfully Mapped Logic" and locate the column labeled "I/O Style." If the output has "OD" in this column, then that output is configured as an open-drain signal and the equation must be interpreted accordingly.

AR# 17188
Date Created 09/03/2007
Last Updated 12/15/2012
Status Active
Type General Article