02-05-2019 09:04 AM
I am building up an application to program the PL eFuses on a Zynq Z-7030 via the JTAG interface. I am starting with simply verifying the functionality of the JTAG interface by trying to read the IDCODE registers of the DAP and TAP within the Zynq. I start by resetting the JTAG state machine to the Test-Logic-Reset state by pulsing TCK 5 times with TMS held high. I then try to transition into the SHIFT-DR state by sending a 0-1-0-0 stream on TMS.
In the screenshots I have attached, you can see on the final transition cycle to go from the CAPTURE-DR to the SHIFT-DR state, the TDO line pulses low while the TCK pulses high. It does this a few more times, before it begins shifting out a 5 clock-cycle delayed version of the TDI input, instead of the IDCODE register as I would expect. I am wondering if these TDO pulses are some sort of error code or some indication of a bad transition. What I will add is I have been able to successfully ID the Zynq using XSCT via a Digilent JTAG-HS3 USB adapter.
Any help is greatly appreciated!
02-07-2019 09:00 AM
I believe your method of programming eFUSE of Zynq PL is not recommended or supported.
The PL eFUSEs can be programmed either with iMPACT or the Secure Key Driver.
You can check for XAPP1175 (v2.0) for getting more details on eFUSE programming of PL with iMPACT or the Secure Key Driver.
Their is alternate method of using the Secure Key Driver is to create a SVF and use iMPACT to play the SVF. You can check Appendix E of XAPP1175 (v2.0) for the same.
02-07-2019 01:06 PM
Thanks for the info, I was actually beginning to look through XAPP1175. I should've mentioned, the application I'm building is actually an extension of the Secure Key Driver code that adapts to my specific design. The issue I have captured with the JTAG data occurs when running the XilSKey_EfusePl_Program function. Specifically, it is failing to complete the JtagServerInit because it does not find the ARM DAP idcode.