14
Tehnologia Boundary Scan - [ JTAG ] – prezentare generală Metodele clasice de testare ale unei plăci electronice din punct de vedere electric sunt testul in- circuit şi testul funcţional. Testul in-circuit constă în utilizarea unui adaptor tip pat de cuie (fixture) prin intermediul căruia sunt accesate majoritatea componentelor de pe o placă electronică populată (PCB). Accesul se face în nodurile electrice ale PCB-ului, pe pad-uri de testare, testându-se izolat fiecare componentă în parte. Testul funcţional permite analiza parametrilor la nivel de funcţionalitate a plăcii electronice prin testarea parametrilor semnalelor de input/output sau prin înglobarea plăcii electronice într-un simulator al ansamblului final. Fundamental, testul in-circuit se bazează pe posibilitatea de acces fizic la nodurile electrice ale PCB-ului. Tehnologia SMD a avut un impact serios în abilitatea de plasare cu acurateţe a pad-urilor de testare. Device-urile SMD şi PCB-urile multistrat au făcut ca accesul fizic la nodurile electrice să fie serios limitat. Miniaturizarea plăcilor electronice face ca anumite componente SMD să aibă pinii foate apropiaţi, iar accesul la aceşti pini pentru testare este dificil, spaţiul util fiind sub 25 mils (0.6 mm). De asemenea, structura internă a IC-ului poate fi foarte complicată fiind necesari milioane de vectori de test pentru o testare integrală. Sesizând acest trend la mijlocul anilor 80' un grup de ingineri de test a examinat posibilitatea testării plăcilor electronice care prezintă acces limitat la nodurile electrice. Soluţia propusă a avut la bază accesul la pinii circuitelor integrate folosind un registru de deplasare conectat intern la toţi pinii componentei. Tehnologia a fost denumită “Boundary Scan”. Organizaţia care a dezvoltat standardul Boundary Scan - la care au aderat toţi producatorii de componente - se numeşte Join Test Action Group (JTAG). Această tehnologie a fost standardizată internaţional şi a primit codul IEEE1149.1-1990, fiind publicată prima dată în 1990. Astăzi, ea este cunoscută sub numele Boundary Scan sau JTAG. Principiul de lucru Boundary Scan (JTAG) Un circuit integrat ce conţine structură de tip Boundary Scan are adăugat la fiecare pin de intrare sau de ieşire un element suplimentar de memorie de 1 bit (0 sau 1 logic) care se numeşte celulă Boundary Scan. Această celulă poate capta informaţia de nivel logic de la un pin de input sau poate scrie un nivel logic la un pin de output. Celulele de memorie sunt înlănţuite formând un registru serial, astfel că ele pot permuta date secvenţial pornind de la un pin standard de intrare TDI (Test Data In) sau pot transmite date colectate serial printr-un pin standard dedicat numit TDO (Test data Out). Transmisia şi recepţia datelor se face sincronizat folosind un pin de clock TCK (Test Clock), iar modurile de operare în regim de testare sunt controlate prin pinul TMS (Test Mode Select). Comportamentul celulelor scanate şi logica de lucru Boundary Scan este controlată prin intermediul unui controler dedicat numit TAP controller (Test Access Port controller). Pinul opţional TRST (Test Reset) ne permite să resetăm logica de testare Boundary Scan independent de structura logică funcţională a circuitului integrat. Este foarte important de reţinut că la nivelul circuitului integrat elementele de testare Boundary scan (celule de memorie, pinii TDI, TDO, TMS, TCK, TRST, TAP controller) sunt total separate de structura logică a circuitului integrat şi nu o influenţează în nici un fel. Firmele care produc circuite integrate ce conţin această tehnologie furnizează gratuit descrierea modelului comportamental în regim de autotestare Boundary Scan, pentru fiecare circuit integrat în parte sub forma unui fişier cu extensia *.BDSL. În cazul în care există mai multe componente de tip Boundary Scan ele sunt interconectate din faza de design a plăcii electronice şi astfel se creează un lanţ de tip Boundary Scan. De exemplu, considerăm că avem 4 IC-uri, pinul de ieşire serial TDO al IC1 este conectat la pinul de intrare serial TDI al IC2, pinul TDO al IC2 este conectat la pinul

127800734 Boundary Scan Test

Embed Size (px)

Citation preview

Tehnologia Boundary Scan - [ JTAG ] – prezentare generală

Metodele clasice de testare ale unei plăci electronice din punct de vedere electric sunt testul in-circuit şi testul funcţional. Testul in-circuit constă în utilizarea unui adaptor tip pat de cuie (fixture) prin intermediul căruia sunt accesate majoritatea componentelor de pe o placă electronică populată (PCB). Accesul se face în nodurile electrice ale PCB-ului, pe pad-uri de testare, testându-se izolat fiecare componentă în parte. Testul funcţional permite analiza parametrilor la nivel de funcţionalitate a plăcii electronice prin testarea parametrilor semnalelor de input/output sau prin înglobarea plăcii electronice într-un simulator al ansamblului final. Fundamental, testul in-circuit se bazează pe posibilitatea de acces fizic la nodurile electrice ale PCB-ului. Tehnologia SMD a avut un impact serios în abilitatea de plasare cu acurateţe a pad-urilor de testare. Device-urile SMD şi PCB-urile multistrat au făcut ca accesul fizic la nodurile electrice să fie serios limitat. Miniaturizarea plăcilor electronice face ca anumite componente SMD să aibă pinii foate apropiaţi, iar accesul la aceşti pini pentru testare este dificil, spaţiul util fiind sub 25 mils (0.6 mm). De asemenea, structura internă a IC-ului poate fi foarte complicată fiind necesari milioane de vectori de test pentru o testare integrală. Sesizând acest trend la mijlocul anilor 80' un grup de ingineri de test a examinat posibilitatea testării plăcilor electronice care prezintă acces limitat la nodurile electrice. Soluţia propusă a avut la bază accesul la pinii circuitelor integrate folosind un registru de deplasare conectat intern la toţi pinii componentei. Tehnologia a fost denumită “Boundary Scan”. Organizaţia care a dezvoltat standardul Boundary Scan - la care au aderat toţi producatorii de componente - se numeşte Join Test Action Group (JTAG). Această tehnologie a fost standardizată internaţional şi a primit codul IEEE1149.1-1990, fiind publicată prima dată în 1990. Astăzi, ea este cunoscută sub numele Boundary Scan sau JTAG. Principiul de lucru Boundary Scan (JTAG) Un circuit integrat ce conţine structură de tip Boundary Scan are adăugat la fiecare pin de intrare sau de ieşire un element suplimentar de memorie de 1 bit (0 sau 1 logic) care se numeşte celulă Boundary Scan. Această celulă poate capta informaţia de nivel logic de la un pin de input sau poate scrie un nivel logic la un pin de output. Celulele de memorie sunt înlănţuite formând un registru serial, astfel că ele pot permuta date secvenţial pornind de la un pin standard de intrare TDI (Test Data In) sau pot transmite date colectate serial printr-un pin standard dedicat numit TDO (Test data Out). Transmisia şi recepţia datelor se face sincronizat folosind un pin de clock TCK (Test Clock), iar modurile de operare în regim de testare sunt controlate prin pinul TMS (Test Mode Select). Comportamentul celulelor scanate şi logica de lucru Boundary Scan este controlată prin intermediul unui controler dedicat numit TAP controller (Test Access Port controller). Pinul opţional TRST (Test Reset) ne permite să resetăm logica de testare Boundary Scan independent de structura logică funcţională a circuitului integrat. Este foarte important de reţinut că la nivelul circuitului integrat elementele de testare Boundary scan (celule de memorie, pinii TDI, TDO, TMS, TCK, TRST, TAP controller) sunt total separate de structura logică a circuitului integrat şi nu o influenţează în nici un fel. Firmele care produc circuite integrate ce conţin această tehnologie furnizează gratuit descrierea modelului comportamental în regim de autotestare Boundary Scan, pentru fiecare circuit integrat în parte sub forma unui fişier cu extensia *.BDSL. În cazul în care există mai multe componente de tip Boundary Scan ele sunt interconectate din faza de design a plăcii electronice şi astfel se creează un lanţ de tip Boundary Scan. De exemplu, considerăm că avem 4 IC-uri, pinul de ieşire serial TDO al IC1 este conectat la pinul de intrare serial TDI al IC2, pinul TDO al IC2 este conectat la pinul

TDI al IC3, pinul TDI al IC4 este conectat la pinul TDO al IC3. Practic s-a creat un lanţ de transmisie serială a informaţiei de la pinul TDI al IC1 la pinul TDO al IC4. Pinii de clock TCK sunt conectaţi în paralel la toate IC-urile. Pinii de selecţie TMS sunt conectaţi în paralel la toate IC-urile. Pinii TDI, TDO, TCK, TMS ai PCB-ului sunt conectaţi prin intermediul unei interfeţe standard la un computer ce rulează un software de aplicaţie Boundary Scan. Acest software sesizează prezenţa celor 4 IC-uri cu celule Boundary Scan, furnizează serial vectori de testare şi compară informaţia transmisă prin pinul TDI al lui IC1 cu informaţia recepţionată prin pinul TDO al IC-ului IC4, la o frecvenţă setată variabilă. (maxim 50MHz). Putem spune că testul Boundary Scan (JTAG) asigură o testabilitate ridicată a PCB-ului (placa de cablaj imprimat) prin utilizarea numai a 5 pini standard de interfaţare utilizându-se acelaşi test în faza de dezvoltare şi în cea de producţie. Suplimentar de la caz la caz, putem adăuga teste funcţionale şi putem realiza programarea circuitelor integrate, reducând timpii de dezvoltare şi costurile de realizare a programelor de test pentru plăci electronice populate.

Principiile arhitecturii Boundary Scan

Într-un dispozitiv boundary-scan fiecare intrare digitală principală şi fiecare ieşire digitală principală contine suplimentar un element de memorie de uz general numit boundary-scan cell. Celulele pe intrările principale se numesc « input cells » iar cele pe ieşirile principale « output cells ». Denumirile « input » şi « output » sunt relative la logica internă a dispozitivului. (Mai târziu vom vedea că este mult mai convenabil să ne referim cu termenii « input » şi « output » la interconexiunile între două sau mai multe dispozitive.) Mulţimea celulelor boundary-scan sunt configurate în câte un registru paralel de deplasare de intrare şi un registru paralel de deplasare de ieşire. O operaţie de încărcare paralelă – numită operaţie Capture – permite încărcarea valorile de la intrarea dispozitivului în celulele de memorie şi transferarea semnalelor generate de logica internă a circuitului în celulele de ieşire. O operaţie paralelă de descărcare – numită operaţie Update – produce transferul conţinutul celulelor de ieşire la pinii de ieşire a circuitului. Semnalul prezent în celulele de intrare va fi transferat logicii interne a circuitului.

Datele pot fi de asemenea deplasate de-a lungul registrului în mod serial (Shifted) începând cu pinul de intrare dedicat a dispozitivului numit Test Data In (TDI) şi terminându-se cu pinul de ieşire al dispozitivului numit Test Data Output (TDO). Semnalul Test Clock (TCK) este furnizat de asemenea printr-un pin dedicat iar diferitele moduri de operare sunt controlate printr-un semnal serial dedicat de control Test Mode Select (TMS). Utilizarea conexiunilor boundary-scan

La nivel de dispozitiv (componentă) elementele boundary-scan nu au nici o influenţă asupra funcţionalităţii dispozitivului, asupra logicii interne. De fapt calea boundary-scan este independentă de funcţionarea dispozitivului. Scanarea la nivelul boundary-scan este arătată în figura de mai sus. Figura arată o placă ce conţine patru dispozitive (componente) boundary-scan. Există un conector la care există un pin de intrare numit TDI conectat la pinul TDI a primului dispozitiv. Pinul TDO a primului dispozitiv este conectat prin cablaj la pinul TDI a celui de-al doilea dispozitiv şi aşa mai departe, creându-se o cale globală de scanare care se termină prin conectarea la pinul de ieşire a conectorului plăcii, numit TDO. TCK este conectat în paralel la toţi pinii de intrare TCK a celor patru componente. De asemenea TMS este conectat în paralel la intrările TMS. Testerul vede la conector concatenarea diferitelor registre boundary-scan ceea ce înseamnă că vede un singur registru care permite accesul la toate ieşirile dispozitivelor considerate ca driver (uneori numite şi transmiţătoare) şi un registru pentru intrările dispozitivelor considerate ca sensors (uneori numite şi receptoare). În acest fel se pot realiza teste specifice pe conexiunile între dispozitive prin intermediul căii globale de scanare. Aplicarea stimulului de intrare se face prin încărcarea acestuia de la conectorul extern prin intermediul pinului TDI în celulele de ieşire corespunzătoare (operaţia shift-in). Acest stimul se aplică conexiunilor între componente prin intermediul ieşirilor (operaţia update). Se realizează apoi capturarea valorii răspunsului în celulele de intrare (operaţia capture) şi deplasarea serială a acestuia la conectorul de ieşire la pinul TDO (operaţia shift-out).

În principiu boundary-scan poate fi considerat ca un mecanism de interconectare în diferite moduri a structurilor de pe placa de circuit imprimat. Celula de bază boundary-scan

Figura de mai sus arată celula de bază boundary-scan notată cu BC_1. Această celulă are patru moduri de operare: normal, update, capture şi serial shift. Elementele de memorie sunt realizate din două bistabile D care au multiplexoare la intrare şi la ieşire. În modul normal Data_In este trimisă direct la Data_Out. În modul update conţinutul celulei Update Hold este trimis la Data_Out. În modul capture Data_In este aplicat la intrarea celulei Capture Scan şi valoarea este memorată la următorul ClockDR. ClockDR derivă (este obţinut) din TCK. În modul shift ieşirea Scan_Out a unei celule Capture Scan este trimisă la intrarea Scan_In a următoarei celule Capture Scan prin intermediul conexiunilor interne. Trebuie reţinut faptul că operaţiile de captare (capture) şi operaţiunile de transfer (shift operation) nu interferează cu trecerea normală a datelor de la terminalul paralel de intrare la terminalul paralel de ieşire. Acest lucru permite captarea din zbor a valorilor operaţionale şi transferul acestor valori la ieşire pentru inspecţie, fără interferenţe. Această proprietate a registrelor boundary-scan are un potenţial imens pentru monitorizarea în timp real a stării de funcţionare a unui sistem - un fel de aparat de fotografiat electronic luând snapshots - şi acesta este unul dintre motivele pentru care TCK este păstrat separat de orice sistem de ceasuri. Este de asemenea posibilă utilizarea boundary-scan pentru testarea internă a dispozitivelor. Pentru aceasta se foloseşte un registru numit Internal Test numit pe scurt Intest. Intest este folosit doar pentru testarea internă foarte limitată a funcţionalităţii interne pentru identificarea defectelor cum ar fi varianta greşită a dispozitivului sau pentru anumite defecte interne grosiere.

Standardul IEEE 1149.1 Arhitectura dispozitivului şi registrul de instrucţiuni

Arhitectura dispozitivului

Arhitectura dispozitivului propusă de JTAG. Arhitectura conţine următoarele elemente:

- un set de patru pini de test - Test Data In (TDI), Test Mode Select (TMS), Test Clock (TCK), Test Data Out (TDO) — şi un pin opţional Test Reset (TRST*). Aceşti pini sunt referiţi ca Test Access Port (TAP);

- câte o celulă boundary-scan conectată la fiecare pin de intrare şi fiecare pin de ieşire, conectate intern pentru a forma un registru serial boundary-scan (Boundary Scan);

- o maşină cu stări finite TAP controller cu intrările: TCK, TMS şi TRST*; - un registru de instrucţiuni de n biţi (n >= 2) care reţine instrucţiunea curentă; - un registru Bypass de un bit (Bypass); - un registru opţional de 32 de bişi de identificare care poate fi încărcat cu codul permanent

de identificare a dispozitivului. La un moment dat doar un registru de date: Instruction register, Bypas, Boundary-Scan, Identification sau chiar câteva registre interne adecvate poate fi conectat intre TDI şi TDO. Registrul de date selectat (Data register) este identificat de ieşirile paralele decodate ale registrului de instrucţiuni.

Anumite instrucţiuni sunt obligatorii, cum ar fi Extest (registrul boundary-scan selectat), în timp ce altele sunt opţionale, cum ar fi instruirea Idcode (registrul de identificare selectat). Instrucţiunile obligatorii şi modul Reset

Trebuie făcute două precizări:

1. Începând cu 1149.1-2001, ultima versiune a standardului, sunt numai patru instrucţiuni obligatorii: Extest, Bypass, Sample şi Preload.

2. Semnalul de reset asincron TRST* este opţional. Dacă este prezent semnalul este activ low. Dacă nu este prezent este disponibil un reset sincron în controlerul TAP. Dacă TMS este ţinut în unu logic, după cel mult cinci perioade de ceas TCK, controlerul TAP trece în starea reset Test_Logic Reset. Acesta este referit ca reset sincron TMS = 1, 5 x TCK.

Modurile de lucru posibile pentru registrele selectate

Atunci când un registru este selectat pentru a fi activ intre TDI şi TDO este posibil să efectuăm trei operaţii cu registrul: Capture paralel, urmată de Shift serial urmată de Update paralel. Ordinea acestor operaţii este fixată de controlerul TAP. Pentru unele registre de date, o parte dintre aceste operaţii nu vor fi efectiv realizate, operaţii no ops.

Open Circuit TDI, TMS and TRST* (comportarea pinilor neconectaţi)

Standardul 1149.1 indică faptul că circuitele TDI, TMS sau TRST* în aer (neconectate) trebuie să fie în unu logic. Acest lucru se realizează cu rezistenţe sau tranzistoare pull-up interne. Motivele sunt următoarele:

- pentru TDI. Dacă registrul de instrucţiuni este selectat ca registru activ între TDI şi TDO atunci el este pregătit să fie încărcat cu o nouă instrucţiune. Dacă TDI este în aer atunci în dispozitivul respectiv şi în celelalte dispozitive în aval de acesta se incarcă şi se execută o instrucţiune de siguranţă Bypass (toţi biţii unu) .

- pentru TMS. În maxim 5 x TCK ciclii controlerul TAP a acestui dispozitiv va fi pus în starea Test_Logic Reset. În această stare logica boundary-scan este inactivă dar dispozitivul poate opera funcţional.

- pentru TRST*. Valoarea logică unu este starea inactivă. Dispozitivul va fi resetat prin reset sincron: TMS = 1, 5 x TCK.

Registrul de instrucţiune

Un registru de instrucţiune are o secţiune shift scan care poate fi conectat între TDI şi TDO şi o secţiune de reţinere hold care păstrează instrucţiunea curentă. Poate fi de asemenea un decodor

logic la ieşirea secţiunii hold dependentă de lăţimea registrelor şi de numărul instrucţiunilor. Semnalele de control pentru registrul Instrucţiunii provin de la controlerul TAP şi provocă fie un shift-in/shift-out prin intermediul sectiunii registrului de deplasare a instrucţiunii, sau trecerea conţinutului secţiunii shift la secţiunea hold (operaţia paralel Update). De asemenea este posibil să se încarce (Capture) valori interne cablate în secţiunea shift a registrului de instrucţiuni. Registrul de instrucţiuni trebuie să aibă cel puţin doi biţi care să permită codificarea celor patru instrucţiuni obligatorii — Extest, Bypass, Sample, Preload — dar lungimea maximă a registrului de instrucţiuni nu este definită. În modul captură (capture), cei mai puţini semnificativi doi biţi trebuie să captureze un model 01 (cei mai puţin semnificativi biţi sunt prin convenţie cei mai apropiaţi de TDO). Valorile capturate în biţii de ordin superior ai registrului de instrucţiuni nu sunt definite în standard. O posibilă utilizare a acestor biti de ordin superior este de a capta un cod de identificare informal, dacă un cod de identificare opţional pe 32 de biţi nu este implementat. În practică, singurii biţi obligatorii pentru captura în registrul de instrucţiuni este modelul 01 în cei doi biţi mai puţin semnificativi. Vom reveni la valoarea de capturare a acestui model, mai tarziu in tutorial. Instrucţiunile standard Standardul IEEE 1149.1 indică patru instrucţiuni obligatorii: Extest, Bypass, Sample, Preload şi şase instructiuni opţionale: Intest, Idcode, Usercode, RunBist, Clamp şi HighZ. Aceste

trucţiuni publice (public instructions).

instrucţiuni sunt cunoscute ca ins

strucţiunea Extest.

egistrul boundary-scan este selectat. nelor de interconectare a

isiunea de a scrie ieşirea

ro. Această cerinţă a fost relaxată în

Instrucţiunea Bypass.

Registrul Bypass este selectat. permite trecerea rapidă prin acest dispozitiv

ypass trebuie setaţi toţi biţii la unu când

In REste folosită pentru aplicarea şabloastructurilor de pe placa electronică. Celulele boundary-scan au perm(dispozitivul în modul test). Codul Extest are toţi biţii zeversiunea 2001 a standardului.

Folosită pentru a către alt dispozitiv conectat în lanţ (canal). Pentru instrucţiunea Beste executată şi determină conectarea registrului Bypass între pinii TDI şi TDO.

Instrucţiunile Sample şi Preload. Registrul Boundary-scan este selectat. Folosit pentru preîncărcarea valorilor cunoscute în celulele boundary-scan. Altfel, este folosit pentru a eşantiona (captura) semnalele în modul misiune (mission-mode signals) în celulele boundary-scan. Dispozitivul este în modul funcţional nu în modul de test. Instrucţiunile sunt folosite pentru capturarea valorilor sau pentru preîncărcarea valorilor cunoscute pentru operaţiile următoare. Instrucţiunea Intest Este selectat registrul Boundary-scan. Folosită pentru aplicarea şabloanelor (patterns) dispozitivului însuşi. Celulele boundary-scan au permisiunea de a scrie ieşirile (dispozitivul în modul test). Instructiunea Intest selectează registrul boundary-scan pregătindu-l pentru aplicarea testelor logicii interne a dispozitivului.

Instrucţiunea Idcode Este selectat opţional registrul de identificare intre TDI şi TDO. Dacă registrul de identificare nu există, este selectat registrul Bypass. Registrul de identificare este un registru ce conţine codul de

Instrucţiunea Usercode

egistrul identificator al utilizatorului pe 32 de biţi iar

ive cu personalitate dublă cum ar fi de

identificare (fabricant, componentă, versiune) pe 32 de biţi.

Este selectat rdacă acesta nu există este selectat registrul Bypass. Se foloseşte pentru dispozitexemplu PLD, CPLD, FPGA etc.

strucţiunea RunBist

ntru iniţierea BIST intern (Memory sau InControlează registrul peLogic). O instrucţiune importantă este instrucţiunea opţională RunBist. Datorită importanţei crescânde a structurilor interne de auto-test, comportamentul RunBist este definit în standard. Rutina de auto-test trebuie să fie cu auto-initializare (adică, nu sunt permise valori externe de iniţializare), precum şi executarea RunBist, în principiu, plasează un registru cu rezultatul auto-testului între TDI şi TDO. La sfârşitul ciclului de auto-test, datele acestui registru sunt de tipul rezultatului pass / fail. Instrucţiunea Clamp Valorile dorite sunt încărcate în celulele boundary-scan folosind

valori la pinii de ieşire dar lasă registrul instrucţiunea Preload. Clamp trimite aceste Bypass ca registru selectat. Două noi instrucţiuni sunt introduse în revizia 1993 a standardului 1149.1a-1993, acestea au fost de Clamp şi HighZ. Clamp este o instrucţiune care utilizează celulele boundary-scan pentru a trimite valorile presetate, stabilite iniţial cu instrucţiuni Preload, pe ieşirile dispozitiveului şi apoi selectează registrul Bypass între TDI şi TDO (spre deosebire de instrucţiunea de Preload care lasă dispozitivul cu registrele boundary-scan selectate până când o instrucţiune nouă

este executată sau dispozitivul este întors la starea Test_logic Reset. Instrucţiunea Clamp va fi utilizată pentru a configura (seta) valori de siguranţă pe ieşirile anumitor dispozitive în scopul de a evita, spre exemplu, conflictele pe magistrală.

Instrucţiunea HighZ Valorile Control-to-Z sunt preîncărcate în celulele de control high-Z folosind instrucţiunea Preload. Instrucţiunea HighZ comandă prin intermediul acestor valori controlul celor trei stări producând trecerea în starea de înaltă impedanţă, dar lasă registrul Bypass ca registrul selectat. Instrucţiunea HighZ este similară cu instrucţiunea Clamp, dar lasă pinii de ieşire ai dispozitivului în starea de înaltă impedanţă (în loc de valoarea logica 1 sau 0), de asemenea, selectează registrul Bypass între TDI şi TDO.

Controlerul TAP (Test Access Port – TAP) Semnalele TAP

TDI = Date seriale de intrare seriale Citite pe front crescător Implicit = 1 TDO = Date seriale de ieşire Citite pe front căzător Implicit = Z (sunt active numai pe durata

Schimbării – deplasării – shift) TMS = Intrare de control Citire pe front crescător Implicit = 1 TCK = Ceas de comandă, orice frecvenţă TRST* = Reset asincron opţional Activ în zero Implicit = 1

TAP are patru semnale obligatorii: TDI, TDO, TMS, TCK şi unul opţional TRST*. Ceasul de comandă se alege de obicei de frecvenţă maximă egală cu frecvenţa dispozitivului boundary-scan cel mai lent de pe placă. Caracteristicile generale TAP

Semnalele TMS şi TCK (şi opţional TRST*) sunt aplicate unui controler reprezentat de un automat finit cu 16 stări, controler care generează diferite semnale de control. Aceste semnale includ semnale dedicate registrului de instrucţiuni (ClockIR, ShiftIR, UpdateIR) şi semnale generice pentru toate registrele de date (ClockDR, ShiftDR, UpdateDR). Registrul de date care răspunde la un moment dat la aceste semnale este de fapt cel validat de semnalele de control generate la ieşirile paralele ale registrului de

instrucţiuni, în conformitate cu instrucţiunile speciale. Celelalte semnale Reset, Select şi Enable sunt repartizate astfel:

- Reset este aplicat registrului de instrucţiuni şi registrului de date selectat; - Select este aplicat multiplexorului de ieşire; - Enable este aplicat amplificatorului de ieşire.

Notă: standardul foloseşte termenul de Data Register pentru a desemna orce registru cu excepţia registrului de instrucţiuni.

Funcţionarea controlerului TAP

Figura alăturată prezintă diagrama celor 16 stări a controlerului TAP. Valoarea pe arcele de tranziţie între stări este valoarea TMS. O tranziţie de stare are loc la o tranziţie pozitivă a TCK iar valorile de ieşire ale controlerului se schimbă pe tranziţiile negative ale TCK. Controlor TAP iniţializează în starea Test_Logic Reset (starea "Asleep"). Pe durata TMS = 1 (valoarea implicită), starea rămâne neschimbată. În starea Test_Logic Reset, registrul activ (selectat) este determinat de conţinutul secţiunii Hold a registrului de instrucţiuni. Registru selectat este fie registrul de identificare, dacă este prezent, sau registrul Bypass dacă registrul de identificare nu este prezent. Punând TMS în starea scăzută )low – zero), se produce o tranziţie la starea Run_Test / Idle (starea “Awake, and do nothing” – "Deşteaptă-te, şi nu fă nimic"). În mod normal, vrem să comutăm în starea Select IR_Scan gata să se încarce şi să execute o instrucţiune nouă. Un număr suplimentar de două comutări succesive, în ordine, 1 şi apoi 1 pe TMS va duce controlerul în starea Select IR_Scan. De aici, putem sa trecem prin stările Capture_IR, Shift_IR, şi Update_IR în funcţie de necesităţi. Ultima operaţiune este operaţiunea Update_IR şi, în acest moment, instrucţiunea încărcată în secţiunea deplasare (shift) a registrului de instrucţiuni este transferată în secţiunea Hold a registrului instrucţiunii pentru a deveni noua instrucţiune curentă. Acest lucru face ca registrul de instrucţiuni să fie deselectat ca registrul conectat între TDI şi TDO şi registrul de date identificat de noua instrucţiunea curentă să fie selectat ca noul registru de date ţintă între TDI şi TDO. De exemplu, în cazul în care instrucţiunea este Bypass, registrul Bypass devine registrul de date select. De acum, putem manipula registrul de date ţintă cu semnalele de control generice Capture_DR, Shift_DR şi Update_DR.

Registrele JTAG Registrele Bypass şi Identification Registrul Bypass Registrul Bypass este un registru de deplasare de un bit selectat de instrucţiunea Bypass care

furnizează o funcţie de deplasare serială de bază. Capturează un hard-wired 0.

Notă: in starea Test-Logic/Reset registrul Bypass este registrul implicit daca registrul Identification nu este prezent. Nu există o ieşire paralelă (ceea ce înseamnă că, în acest caz, comanda Update_DR nu are efect asupra registrului), dar există un efect stabilit pentru comanda Capture_DR – registrul captează o valoare logică „0” hardware (hard-wired value of logic 0). Registrul Identification

Registrul de identificare (opţional) este un registru pe 32 de biţi cu modurile de operare: captură şi deplasare (shift). Registrul este selectat de către instrucţiunile Idcode şi Usercode şi 32-biţi de date interne sunt încărcate în partea de deplasare registrului şi trimise în exterior prin intermediul pinului TDO al dispozitivului. Amintiţi-vă de asemenea, că acest registru, dacă este prezent, este registrul selectat atunci când controlerul de TAP este în starea Test_Logic Reset, altfel este selectat registrul Bypass.

Funcţia principală a acestui registru este de a identifica fabricantul sau codul dispozitivului. Notă: Idcode este instrucţiunea power-up dacă registrul Identification este prezent, altfel instrucţiunea este Bypass. Registrul Boundary-Scan

Registrul de deplasare cu celulele boundary-scan sunt conectate la:

- pinii de intrare ai dispozitivului - pinii de ieşire ai dispozitivului - controlul ieşirilor trei-stări - controlul celulelor bidirecţionale

Registrul boundary-scan este selectat de instrucţiunile: Extest, Intest, Preload şi Sample. Suntem gata să aruncăm o privire mai detaliată la celulele boundary-scan

şi concatenarea lor într-un registr de uz general boundary-scan. Pentru un anumit dispozitiv, celule boundary-scan sunt plasate în porturile digitale de intrare, porturile digitale de ieşire, precum şi pe liniile de control a porturilor intrare/ieşire (IO) bidirecţionale şi a porturilor TriState (OZ). Celulele

de scanare sunt legate împreună pentru a forma registrul boundary-scan. Ordinea de conectare în interiorul dispozitivului este determinată de adiacenţă fizică a pinilor şi / sau de alte constrângeri. Registrul boundary-scan este selectat de instrucţiunile Extest, Sample, Preload, şi Intest. Celulele boundary-scan pentru pinii IO şi OZ Celulele boundary-scan pentru pinii OZ

În primul rând, celulele boundary-scan trebuie să fie prevăzute la toţi pinii de intrare şi ieşire digitală ai dispozitivului cu excepţia pinilor de alimentare (Power şi Ground). Reţineţi faptul că nu trebuie să existe alt circuit între pini şi celulele boundary-scan, în afară de amplificatorul driver sau de circuitele analogice de protecţie la descărcări electro-statice. În ceea ce priveşte fan-in pentru pinii de intrare, celulele

e

ieşire are o celulă boundary-scan şi deci

boundary-sacan trebuie prevăzute pe fiecare intrare primară a intrare poate fi setată cu o valoare independentă. Acest lucru

permite o flexibilitate maximă pentru instrucţiunea Intest. Similar, în cazul fan-out a pinilor de ieşire – fiecare pin de

logicii interne. În acest fel, fiecar

instrucţiunea Extest este capabilă să seteze valori diferite independente la ieşiri multiple. În cazul pinilor de ieşire cu trei stări OZ TriState, trebuie să existe o celulă boundary-scan pe semnalul de control al stării în amplificatorul de ieşire. Pin-ul de intrare pentru comanda celei de-a treia stări are două moduri: ca o intrare şi ca un semnal de ieşire pentru controlul stării. Pentru pinul de intrare nu este necesară o suplimentare a celulei boundary-scan aşa cum se arată în figura de mai sus. Pinii bidirecţionali (IO)

omanda pinilor bidirecţionali presupune din punct de C

vedere conceptual existenţa a cel puţin 3 celule boundary-scan: una pentru calea de intrare, una pentru calea de ieşire şi o celulă pentru controlul IO aşa cum se arată în figura alăturată. În practică cele două celule destinate intrării şi ieşirii sunt combinate într-o singură celulă multifuncţională numită BC_7.