Electronic – Configuring multiple FPGA using JTAG

fpgajtagxilinx

I have 2 devices, a Spartan 3 and a Spartan 6. I am trying to configure both of them through JTAG. One way to do this is to daisy chain the devices and use boundary scan. However , one thing I still don't understand is how do I select which device in the chain I want to program in Xilinx? Where is the option for this?

Second this is a proto board and the focus is on the ease of debugging. Will daisy chaining like this cause problems? Is there any easy way to put a single jumper to switch the JTAG pins between FPGA's or is it better to have 2 14 pin connectors and keep removing the programmer header and putting it back in?

What exactly needs to be done at the PCB design level? Is shorting the TMS,TDI,TDO,TCK from different FPGAS sufficient ?

Best Answer

I have used daisy chained Xilinx devices with no problems.

The key to programming the daisy chained devices is in the Xilinx iMPACT tool.

I think the tool should discover both of the devices in the chain and give you the chance to assign a configuration file to each device. You can do this by right clicking the device and assigning a configuration file.

Alternatively, you can manually add the devices and their configuration files to a blank iMPACT project. Right click on the window labelled "Boundary Scan" to add devices.

In either case, you can program, verify, and erase each individual device by right clicking it in the Boundary Scan window.

The appropriate connections on the board are as follows:

TMS and TCK : connect both devices in parallel
TDI and TDO : connect two devices in series

[POD TDI]--->[TDI device 1 TDO]--->[TDI device 2 TDO]--->[POD TDO]

Also see figure 5 in this app note.