Currently I am working on FPGA design which uses trace32 to interact with jtag devices. Since there are more than once JTAG device in the design we are using parellel (not daisy chain) approach from JTAG controller to select a spefic device.
Are we doing it right? Or daisy chain is the recommended method for muitiple jtag devices design ?
2 Answers
Unless something has changed in the last 15 or so years, one must connect the JTAG devices in serial (daisy chain). Like so:
AN134 from Silicon Laboratories, Page 1, dated 12/2003!
To program each device you will probably need to specify things like the following in your JTAG blaster software:
- The number of devices before and after the target you wish to communicate with.
- The number of bits in the IR registers of the devices before and after the target (The devices in the chain need not be the same chips, and may have different register widths).
I suppose it may be possible to connect devices in parallel, however, I think that you would need to add some multiplexing, and the appropriate control mechanism and lines.
-
\$\begingroup\$ It would be more effort to connect them in parallel, while losing synchronized start/stop. \$\endgroup\$ Jun 29, 2018 at 13:15
-
\$\begingroup\$ I am asking this question because RTL design I got is in parallel format. And I am facing issues to detect the devices with trace32. Only one device is getting detected for now. \$\endgroup\$ Jun 29, 2018 at 13:18
-
\$\begingroup\$ JTAG and parallel does not compute - sounds a lot like a design bug to me. You may want to put the JTAG wirering into the question. \$\endgroup\$– Turbo JJun 29, 2018 at 14:11
-
1\$\begingroup\$ @Ben "Is there any software code..." That depends on the software that you are using to interface to the JTAG bus, and program (or talk to) the JTAG devices. The target devices do not typically have 'addresses' saved on the chips (AFAIK), like the I2C protocol does. The "address" is simply how the bytes are ordered in the transmission from the programming interface on the JTAG controller. Imagine how the bytes settle onto the right chip in the TDI->TDO daisy-chain. So, specify your JTAG controller and/or the software, and maybe somebody here will know... \$\endgroup\$ May 22 at 13:53
-
1\$\begingroup\$ @Ben "Is there any software code..." - Part2: Do note that the "JTAG Controller" may just be a USB connected JTAG programmer used to program/talk to JTAG devices (like the various offerings from the chip manufacturers, and others). The "software" is also usually readily available from the various chip manufacturers. Typically, if you dig deep enough into the controller and software manuals, you will find the required method to target a specific chip in the JTAG chain. \$\endgroup\$ May 22 at 14:01
JTAG can support a star topology, but this relies on the individual nodes having control to tri-state their TDO drivers (which can then be wire-ORed).
It is possible to switch just the TMS inputs to each node, or for the nodes to implement a chip-select register within their JTAG interface. Star topology allows a shorter scan chain, but doesn't really provide much benefit over the more standard daisy-chain topology.
You're only likely to come across a star topology where there are several TAPs pre-integrated in a system which includes the driver control. For generic toolchains attached to unrelated components, you need something more 'standard'.