09-11-2019 01:42 PM
Could somebody possibly point me to resources I could use to learn how I can manually take a "bin" or "bit" file and using my own digital instrument I can use the JTAG bus to program these to the FPGA or FLASH?
I can't seem to find a document that shows waveforms with explanations of what to do with each signal (TCK, TDI, TDO, TMS).
Any help is apprecaited.
09-11-2019 02:13 PM
Your question is not very clear.
Are you trying to replace a Xilinx JTAG cable with your own device to configure an FPGA? A flash device connected to an FPGA not connected to JTAG? Or one of the older PROMs that have a JTAG connection of their own?
IEEE standard 1149 covers the basics of JTAG while IEEE 1532 extends that to cover programmable devices.
Once you understand those, the easiest thing is probably to do the configuration once with the Xilinx tools and record the JTAG commands for later "playback" using your JTAG.
If you can do the programming you wish to replicate one time with the Xilinx cables and set up tools to capture the data into a SVF file. You can then use a custom method to "play" the SVF on your custom JTAG device. SVF is a fairly easy to understand format, and the Xilinx tools will do all the complex logic of how to talk to your device.
If you dont want to the "playback" method your solution will have to be significantly more complex. The configuration document for your device, for example UG570 for Ultrascale devices, will give some details about what the configuring over JTAG process.
Note that when using the FPGA to program a flash that doesnt have its own JTAG port you are actually loading a special FPGA image that bridges between the flash and the JTAG port in the FPGA, there is no standard or documented way to do this as both the programming software and the bridging FPGA image are controlled by Xilinx.
09-11-2019 02:20 PM
Thanks for the reply.
I am working with HW in the field that I am able to easily update the firmware using a Xilinx JTAG programmer tool and that works great. In the field though, the HW is plugged into automated test equipment (ATE) where the ATE has digital pins I can write patterns for that I am hoping I can use to update the firmware that is stored on the HW flash for the FPGA.
I am interested in doing the SVF file you mention while using the Xilinx tools to program the flash. How would you do this? Would you need to plug the JTAG signals into a logic analyzer which saves the SVF file?
I was more hoping there was a document which spells out the JTAG commands that the Xilinx tools actually go through (i.e. step by step of JTAG setup and programming).
09-11-2019 02:41 PM
Sounds like SVF is exactly what you need, all the setup stuff is handled by the Xilinx tools when generating the SVF. SVF is basically a format that says shift the JTAG state machine to this state, then shift in this data. All you need is the SVF of the JTAG operations you want to perform and some software that understands how to use ATE pins to get the FPGA's JTAG into various states.
Generating the SVF shouldn't be too hard. I haven't done this since ISE 12 something but you used to be able to use iMPACT to program an FPGA like normal, then set the output to SVF and redo the programming steps and have it target the file instead of the actual JTAG cable. For Vivado it looks you might have to manual build the chain, instead of switching to SVF after disccovery, check out UG908 for all specific directions.
09-11-2019 02:53 PM
Ok, I was able to generate an SVF file in Vivado for the programming of the FLASH chip and wow it generated a 3021027 line file with a bunch of data which I can't quite figure out what it all means. I found a Xilinx SVF document xapp503 which I will start reviewing to help decipher the SVF file.
Thanks for pointing me to this.