Electronic – Why can’t I program a ZC706 (Zynq) board a second time over JTAG

fpgajtagxilinx

I have a ZC706 board equipped with a Zynq 045 FPGA. I switched the jumpers to add the Zynq into the JTAG chain of th Digilent programmer. The first programming works as expected, but the second programming does not alter the FPGA configuration.

When I run a full power cycle on the complete board, I can program the FPGA again, but no third time …

Why can't I program a ZC706 board a second time over JTAG? Does the ARM lock the internal configuration FSM?

The "Done" LED stays always high so iMPACT doesn't notice a programming failure!


My task is to port a design from KC705 onto the ZC706. The hardware test example needs no ARM – this will be implemented by others :).

Best Answer

It seems that the PS can lock the external PROG_B pin and the JPROGRAM JTAG instruction. The relevant bit is PCFG_PROG_B in devcfg.CTRL (address 0xF8007000, bit 30).

With a locic analyzer, I can see that Vivado sets this bit before programming the FPGA. I don't know how to get IMPACT to do the same, but you could probably have the ARM part execute a small program to set the bit.