INJTAGSTATE

The INJTAGSTATE statement notifies the system that the TAP controller state has changed. It can only be used inside a JTAG block.

This is used when the controller state has been modified outside the control of the system, e.g. by controlling the TCK and TMS pins manually. This enables the system to resynchronise in cases where changes have been made that it cannot track.

The INJTAGSTATE statement is not required when the TAP state is changed using one of the raw JTAG statements that explicitly changes the state, such as JTAGSTATE, DRSCAN or IRSCAN.

Syntax

INJTAGSTATE ( state )

Parameters

state

A STRING that specifies the current TAP state. The string is not case sensitive. The valid JTAG states are:

  • RESET
  • IDLE
  • IRSELECT
  • IRCAPTURE
  • IRSHIFT
  • IREXIT1
  • IRPAUSE
  • IREXIT2
  • IRUPDATE
  • DRSELECT
  • DRCAPTURE
  • DRSHIFT
  • DREXIT1
  • DRPAUSE
  • DREXIT2
  • DRUPDATE

Errors

An error can occur in the following circumstances:

  • The state is not one of the listed values (at compile-time if the string is a constant, otherwise at run-time).
  • The function is used outside a JTAG block.

Example

This example performs a TMS reset, which is five clock ticks with TMS held high. This sequence guarantees that the TAP controller will be left in the RESET state, and so notifies the system that the controller is now in that state.

INT i;

JTAG
  SET TMS := 1, TCK := 0;
  FOR i := 0 TO 5
    SET TCK := 1;
    SET TCK := 0;
  END;
  INJTAGSTATE ("RESET");
END;