Return to previous page Advance to next page
JTAG Programmer Guide

Appendix C

Troubleshooting Guide

This chapter is a simple guide to understanding the more common issues you might encounter when configuring CPLDs with JTAG Programmer. These issues are likely to fall into three groups; communication, improper connections, and improper or unstable VCC.

Communication

This section describes several issues that involve the integrity of the bitstream that JTAG Programmer transmits to the target CPLDs, and the correct connection of the boundary-scan chain.

Improper Connections

This section involves assigning configuration pins to invalid signals or voltage levels.

Improper or Unstable VCC

This section describes several causes of incorrect configuration sequences and incorrect responses from the target system.

Boundary Scan Chain Errors

If you experience a consistent error that identifies a break in your boundary-scan chain, go to this section.

System Noise

If you experience intermittant problems characteristic of system noise, go to this section.

Communication

Observing the following guidelines should minimize the communication difficulties that can occur between the cable hardware and the target system.

Improper Connections

Check the following:

Improper or Unstable VCC

If you are having problems with unstable VCC, try the following:

Never connect the control signals to the cable before VCC and ground. Xilinx recommends the following sequence:

Boundary Scan Chain Errors

If you experience a consistent error that identifies a break in your boundary-scan chain but are unable to identify such a discontinuity then execute the following steps:

Create a command file to be used with the batch version of the JTAG Programmer (jtagprog). In this batch file specify your boundary-scan chain configuration using the part command and about 500 idcode queries as follows:

part xc9572:design72 xc95108:design108

partinfo -id design108

partinfo -id design108

partinfo -id design108

.

.

.

partinfo -id design108

quit

Save the file as test.cmd and then invoke the tool as follows:

jtagprog -batch test

The tool will execute the device id command 500 times before quitting. While this is going on use the oscilloscope to probe the pins of the boundary scan test access port (TAP) at the system entry point and at each individual part.

The boundary scan integrity check sequences the TAP through a TRST sequence (TMS set to 1, TCK pulsed 5 times) and then transitions all devices to the RunTest/Idle state (TMS set to 0, TCK pulsed once). Then, all parts are run through a CAPTURE -IR sequence while TDI is set to 1 (1s will be shifted in). If you look in the device BSDL files you will see the expected capture sequence defined in the "instruction capture" field. For all XC9500/XL/XV parts this sequence is a "1" followed by seven zeros. You should therefore see the "1" on TDO after the falling edge of the 4th TCK pulse after the TRST sequence. On the next TCK pulse TDO should return to zero.

The CAPTURE -IR sequence consists of the following (starting from RunTest/Idle), as illustrated in Figure C-1.

TMS set to 1; TCK pulsed twice.

TMS set to 0; TCK pulsed twice.

TCK pulsed (number of bits in instruction register -1) times.

TMS set to 1; TCK pulsed twice.

TMS set to 0; TCK pulsed once.

Figure C-1  Sample Expected Waveform

Check for the following:

The expected number of TCK pulses occur.

The same TMS sequence occurs for each part.

The TDO is not shorted or floating between parts, or floating at the system interconnect point.

Make certain that all 4 TAP signals are getting into each part (Note that both TDI and TMS have internal pull-ups on them which could keep the device in TRST mode if TMS is not properly connected).

You may also use the Debug Chain dialog and a logic probe or oscilloscope to transition the TAP state machine directly and observe results.

System Noise

You can check for system noise by running the IDCODE looping instruction. The IDCODE should read correctly 100% of the time. If by test you find that the instruction is working less than 100% of the time, you may be experiencing system noise. To use IDCODE looping:

Operations Idcode looping

This will display the Edit window. Enter the number of loops you desire and click OK.

To remedy a problem with system noise, select Use HIGHZ instead of BYPASS from the Preferences dialog box. This places devices into tri-state mode and reduces susceptibility to system noise. To find this box use:

File Preferences

The Preferences dialog box will appear. Place a check in the box adjacent to Use HIGHZ instead of BYPASS.

Top of page