JTAG

JTAG on Ühendatud Testimisrühma (ingl Joint Test Action Group) 1990. aastal loodud Elektri- ja Elektroonikainseneride Instituudi standard.
Algselt oli see IEEE 1149.1, hiljem on seda uuendatud ja laiendatud täiendavate standarditega. JTAG-i kasutatakse, et integraalskeeme pärast trükkplaadile paigaldamist piirskaneerimisega testida. Tänu täiendatavatele standarditele on võimalik JTAG-iga ka programmeeritavaid loogikaseadmeid konfigureerida.
Ajalugu.
1980. aastatel loodi Ühendatud Testimisrühm, mis hakkas välja arendama piirskaneerimise ja testimise juurdepääsu pordi detailset kirjeldust. See avaldati 1990. aastal IEEE 1149.1–1990 standardina. 1993. aastal uuendati standardit ja avaldati 1149.1a. Sellega täiustati, selgitati ja parandati originaali. 1994. aastal anti välja 1149.1b, mis lisas piirskaneerimise kirjeldamise keele BSDL. Tänu nendele muudatustele sai JTAG elektroonikatootjate seas populaarseks. Aastate jooksul omandatud teadmised tehti ametlikuks 2001. aastal, kui avaldati IEEE 1149.1–2001. 2013. aastal laiendati taas kord JTAG-i standardit, kui anti välja IEEE 1149.1–2013. 
Kuna JTAG on laialdaselt kasutusel ja võimaldab palju, on selle baasil on välja antud ka teisi standardeid. 
Tehnoloogia.
JTAG-i kasutamiseks peab selle liides olema integraalskeemile sisse ehitatud. Algne standard kasutab nelja viiku, kuid IEEE 1149.7 standard on esialgse standardi laiendus, mis vajab ainult kahte viiku. 
JTAG (IEEE 1149.1).
JTAG kasutab oma tööks testimise juurdepääsu porti, selle kontrollerit, piirskaneerimise elemente ja eri registreid:
Testimise juurdepääsu port (TAP).
JTAG kasutab tööks neljatraadilist kommunikatsiooniprotokolli. Neid nelja signaali kutsutakse kokkuvõtvalt testimise juurdepääsu pordiks:
JTAG seadmeid on võimalik ühendada üksikult või pärgühendusena, kus ühe seadme TDO signaal on ühendatud järgmise TDI signaaliga. TCK-, TMS- ja valikuline TRST-signaal on ühendatud rööbiti. Ühel trükkplaadil võib olla mitu JTAG-i pistikut, mille järel on üks või mitu seadet. JTAG-i taktsignaal TCK on vahemikus 10 MHz kuni 30 MHz.
Testimise juurdepääsu pordi kontroller on 16-olekuline lõplik olekumasin, mis reageerib TMS-signaalile ja juhib kogu JTAG-i tööd. Olekumuutus toimub ainult tõusva TCK signaali korral. Pildil olev vasakpoolne olekute tulp juhib andmete registrit (DR) ja parempoolne olekute tulp juhib käskude registrit (IR).
Täiendav info.
Piirskaneerimine ("Boundry scan").
Nagu nimigi ütleb, paikneb piirskaneerimise element seadme piiril tema sisemise loogika ja välisega ühendava viigu vahel. Kuna piirskaneerimine on JTAG-i üks peamiseid osi, nimetatakse JTAG-i testimist ka piirskaneerimiseks.
Piirskaneerimise elemendid saavad olla kahes olekus. Töötavas olekus ei mõjuta elemendid seadme tööd. Testimise olekus aga ühendab element seadme sisemise loogika viikudest lahti, mis võimaldab muuta viikude väärtusi ülejäänud loogikast sõltumatult. See võimaldab testida ülejäänud trükkplaadi tööd. Kuna piirskaneerimise element ühendab seadme sisemise loogika viikudest lahti, teeb see testimise lihtsamaks, sest integraalskeemid ei vaja selleks tarkvara. On kaks peamist piirskaneerimise kasutamise viisi. Üks viis on JTAG-i kasutamine teiste seadmetega suhtlemiseks ja teine on JTAG-i ühenduse test. Kuna JTAG annab võimaluse kontrollida ja jälgida seadme kõiki signaale ainult nelja viiguga, vähendab see oluliselt testimiseks vajalikku füüsilist ligipääsu.
JTAG defineerib käsud, mis peavad olema kasutatavad, et seade vastaks standardile. Käsud on järgmised:
Teised tihti kasutatavad käsud:
JTAG-i ühenduse test.
JTAG-i ühenduse test kontrollib integraalskeemide komponentide vahelist ühendust. Näiteks võivad tootmise käigus tekkida komponentide vahel lühised või puudub üldse ühendus. Standardne ühenduse test saab kontrollida ainult JTAG-i seadmete vahelisi ühendusi. Kui aga on teada viigu küljes olevad seadmed ja muud komponendid, siis on võimalik ka täiendav kontroll. Näiteks saab kontrollida loogilisi ühendusi, "pull-up"- ja "pull-down"-takistite olemasolu ning lühiseid. Ühenduse testi kasutatakse näiteks BGA integraalskeemide juures, kuna siis on visuaalne ülevaatus raskendatud ja ainuke alternatiiv on röntgenülevaatus, mis on aga kallim ja aeganõudvam.
Kompaktne JTAG (IEEE 1149.7).
Signaalid:
Kuna integraalskeemid muutusid aina väiksemaks, oli vaja vähendada JTAG-i kasutatavat ruumi. 2009. aastal avaldati standard IEEE 1149.7, mis vähendas senist viikude arvu neljalt (või viielt) kahele. Uus standard on tagasiühilduv algse JTAG-iga ja lisab sellele võimalusi. Kompaktne JTAG või cJTAG ("compact JTAG") võimaldab ühendada eri seadmed omavahel tähtvõrguks, mis lihtsustab nendevahelisi füüsilisi ühendusi. Lisaks ei pea enam testimise ajal kõik seadmed olema samas energiaolekus, vaid on võimalik valida nelja oleku vahel.
PLD programmeerimine (IEEE 1532).
JTAG-i kasutatakse tihti ka peamise viisina programmeeritavate loogikaseadmete konfigureerimiseks. Välkmälude puhul kontrollitakse piirskaneerimise abil tema küljes olevat JTAG-i ühilduvat seadet. See võimaldab kirjutada ja kustutada välkmälu. Lisaks on võimalik standardit toetavaid FPGA-sid ka JTAG-i pordi abil ka otse programmeerida.
Ohud.
Kuna üldjuhul jäävad JTAG-i pistikud valmis trükkplaadile alles pärast tootmist, saab vahel mõnd seadme programmi hiljem muuta.
Microsoft Xbox 360.
Microsofti mängukonsool Xbox 360 lasti alguses välja võimalusega muuta tema tarkvara JTAG-i abil. See võimaldas ilma plaadita otse USB-seadmest või sisemiselt kõvakettalt mänge mängida. Lisaks võimaldas see käivitada eri emulaatoreid. Alates 2009. aastast toodetud konsoolidel seda võimalust enam pole.