So I have a Xilinx CoolRunner II CPLD that I'm working with that is talking to conditionally powered peripherals. I'm using the CPLD as a kind of logic level translator between a microcontroller and the peripherals, as well as for some internal logic. I need the peripheral inputs to the CPLD to be low when they're not driven (powered off). My first thought was to use some external pull-downs on I/O lines, but then I read this in one of the manufacture's app-notes:

Avoid pull-down resistors. Always use external pull-up resistors if external termination is required. This is because the CPLD, which includes some I/O driving circuits beyond the input and output buffers, may have contention with external pull-down resistors, and, consequently, the I/O will not switch as expected.

and elsewhere they recommend:

Avoid pull-down resistors on pins. All Xilinx CPLDs include additional circuitry on an I/O pin beyond just the I/O buffer. This includes ESD as well as circuits that manage power up behavior. For example:

  1. XC9500 has High-Z during power on
  2. XC9500XL/XV has High-Z during power on, then a keeper latch
  3. XPLA3 has High-Z during power on, then a keeper “half latch”
  4. CoolRunner-II has High-Z during power on, then a keeper latch

Pull-down resistors “fight” the internal pin electronics, which may misbehave due to the external pull-down. For the most predictable behavior, avoid pin pull-down resistors.

I'm currently pursuing if I can use the peripheral's power signal as an indication to pull the line low or let it be driven by the peripheral, so I'll do that if possible. My question is what would happen if I disregard the manufacturers' warning? What if I use an extremely weak pull-down? 10Meg? 100Meg? Has anyone ever done this?


1 Answer 1


They say pull-downs may conflict with external pull-ups. They probably say this because pull-ups are more common than pull-downs. If you don't use pull-ups you have nothing to worry about.
If you would have both pull-downs and pull-ups the input voltage may be in the undefined region, and the output of the input gate may oscillate.

If your pull-down is 1M\$\Omega\$ then anything above 10M\$\Omega\$ (rule-of-thumb) can be considered as a weal pull-up, that means a 1:10 ratio. It means that having both on a 3.3V system the input will be at 0.3V.

  • 1
    \$\begingroup\$ I'm fairly certain that is not what they're saying at all. I added some additional comments they make in another app-note to my question for further clarity. \$\endgroup\$
    – Joel B
    Aug 11, 2011 at 16:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.