JTAG (ang. Joint Test Action Group) to nazwa standardu IEEE 1149.1 definiującego protokół używany do testowania połączeń na płytkach drukowanych, stosowany także do uruchamiania i programowania układów programowalnych i systemów mikroprocesorowych. Żeby można było wykorzystywać JTAG do wymienionych celów układy scalone umieszczone w testowanym systemie muszą posiadać wewnątrz odpowiednią warstwę sprzętową tego interfejsu. Jednym z najważniejszych założeń standardu JTAG jest możliwość programowania układu bez zewnętrznego programatora (ang. In-System_Programming, w skrócie ISP).

Linie sygnałowe interfejsu JTAG, to:

  1. TDI (ang. Test Data In) - Wejście danych
  2. TDO (ang. Test Data Out) - Wyjście danych
  3. TCK (ang. Test Clock) - Wejście sygnału zegarowego
  4. TMS (ang. Test Mode Select) - Wybór trybu pracy
  5. TRST (ang. Test Reset) - Zerowanie (opcjonalne)

JTAG działa na zasadzie automatu 16-stanowego o alfabecie wejściowym TMS=0/TMS=1. Reset procesu programowania odbywa się na dwa sposoby: albo poprzez opcjonalne wejście TRST albo po ustawieniu TMS=1 na 5 cykli zegara.

Możliwe jest programowanie kilku układów jednocześnie - wówczas tworzy się tzw. łańcuch urządzeń połączonych szeregowo. Na poniższym schemacie zaprezentowany został sposób łączenia kolejnych uładów:

Łańcuch JTAG dla trzech układów