I have designed a custom PCB with two Xilinx XC9572XL CPLDs and a Spartan 3e.

After powering the board and checking for shorts, I plugged my ft232h USB to JTAG adapter and used xc3sprog to check the chain.

I indeed see three devices but only one of the CPLDs are recognised.

XC3SPROG (c) 2004-2011 xc3sprog project $Rev: 774 $ OS: Linux
Free software: If you contribute nothing, expect nothing!
Feedback on success/failure/enhancement requests:
Check Sourceforge for updates:

Using Libftdi,
Cannot find device having IDCODE=0450000 Revision A
JTAG loc.:   0  IDCODE: 0x00450000  not found in 'built-in device list'.
JTAG loc.:   1  IDCODE: 0x040c0003  not found in 'built-in device list'.
JTAG loc.:   2  IDCODE: 0x59604093  Desc:                       XC9572XL Rev: E  IR length:  8

I’ve already checked that the pins are well connect.

Do you have any idea on what could be wrong ?

Note: the CPLD on the schematics isn't configured yet so the I/O pins are supposed to be in High Impedance.


JTAG signals when scanning the chain


After looking at the datasheet closely, I think I messed up with the Spartan 3E's JTAG which should be 2v5 and not 3v3. I'll have to do more digging on the board itself to confirm.


1 Answer 1


I'm assuming that all things in the JTAG chain need to be connected correctly for the chain to properly function at all points, looking at the schematic you posted it seems as though you're connected to I/O pins rather than the JTAG pins for that device:

enter image description here

  • 1
    \$\begingroup\$ The JTAG signals are connected to both IO pins and the configuration pins. The last block of the chain belongs to the same CPLD, the U18. \$\endgroup\$ Dec 21, 2021 at 21:42
  • \$\begingroup\$ And yes apparently I can’t just program one of them if the others are not working. \$\endgroup\$ Dec 21, 2021 at 21:43
  • \$\begingroup\$ I see now, are you just attempting to bit bang out some sort of ISP from the I/O pins on U18 then? If that's the case have you attempted to just program the last device in the chain that is actually recognized, unless those pins are initialized to something they may be corrupting the remainder of the chain. If you aren't able to program any of the devices in the chain have you attempted to remove the connections to the I/O pins? Or if you have some way of programming U18 outside of the chain and then reinserting it once programmed that may give you a clue as to what's happening. \$\endgroup\$ Dec 21, 2021 at 22:08
  • \$\begingroup\$ I’m actually using an external USB to JTAG cable to program the chain through the test points as the U18 isn’t initialised yet. I don’t think that having it connected to the JTAG signals is a problem as the IO pins of an unconfigured CPLD are in a high impedance state. \$\endgroup\$ Dec 21, 2021 at 22:22

Your Answer

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

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