JTAG port buffering
JTAG buffering is sometimes required on the target board to improve signal integrity and increase the usable bandwidth of the interface. You can implement JTAG buffering using common off-the-shelf parts, at little cost.
Usually, the JTAG connector of a target system connects to a single device, for example:
Pull-up and pull-down resistors are omitted for clarity.
To act as a series terminator, you must place a resistor close to the TDO pin of target device. Placing a resistor close to the TDO pin is the simplest option, and achieves good signal integrity because each signal is point-to-point.
However, if the TDO output of the target device has a weak drive-strength (<4mA), the TDO output could significantly limit the maximum frequency of the JTAG interface. To resolve this, place a buffer close to the TDO pin of the target device with the appropriate series termination resistor:
Sometimes, two or more devices are chained together in the target system:
Achieving good signal integrity becomes difficult in this scenario because the TMS and TCK signals are branched at T-junctions. The signal integrity of the TMS signal is not important because until a rising edge of TCK signal is detected, it is ignored by the target device. The signal integrity of the TCK signal is important because any false edges cause the target device to sample TDI and TMS signals too many times. Sampling the TDI and TMS signals too many times corrupts the serial data stream that is seen by the target devices.
To avoid this issue, always use buffering where the TCK signal is split:
The solution in the above figure prevents the two TCK branches from interacting and ensures good signal integrity with minimal overshoot. You must place buffers and series termination resistors as close as possible to the T-junction of the TCK signal.
This causes some skew between the TDI, TMS, and TCK signals. To correct this skew, use the same type of buffers on the TDI, TMS, and TCK signals. For example:
This solution matches the skew between TDI/TMS and TCK signals to achieve high JTAG frequencies. Again, place the buffers and series termination resistors as close as possible to the T-junction of the TMS and TCK signals.
For added noise rejection, Schmitt buffers can be used instead of standard buffers.
Arm recommends you use buffers with a drive strength of 24mA or above.
For any buffered signal, place the signal pull-up or pull-down resistor at the input-side of the buffer.
For guidance on selecting series termination resistors, see Series termination.