JTAG

Un article de Wikipédia, l'encyclopédie libre.

Le JTAG pour Joint Test Action Group est le nom de la norme IEEE 1149.1 intitulé "Standard Test Access Port and Boundary-Scan Architecture". Le JTAG a été normalisé en 1990.

Le terme JTAG, désignant le groupe de travail qui a conçu la norme, est abusivement (mais très largement) utilisé au lieu du terme générique Boundary Scan, ou du sigle TAP (Test Access Port, port d'accès de test).

Sommaire

[modifier] Principe

La technique de Boundary-Scan (littéralement, scrutation des frontières) est conçue pour faciliter et automatiser le test des cartes électroniques numériques. Elle consiste à donner un accès auxiliaire aux broches d'entrée-sortie des composants numériques fortement intégrés.

Initialement, le Boundary Scan était uniquement destiné au test des court-circuits et de la continuité entre puces compatibles. Connaissant le schéma électrique de la carte électronique, on applique un ensemble de signaux logiques (appelé vecteur de test) sur les broches d'entrée de certains composants, et on relève les niveaux logiques sur les broches de sortie des composants qui y sont connectés, pour s'assurer qu'ils correspondent aux valeurs attendues. On peut ainsi s'assurer de la bonne qualité des pistes du circuit imprimé et des soudures.

Pour cela, chaque broche d'entrée-sortie n'est pas connectée directement à l'intérieur du composant numérique, mais à travers une "cellule JTAG" permettant de la piloter indépendamment de sa fonction initiale. Il est ainsi possible de la configurer en entrée (haute-impédance) ou en sortie (niveau logique haut ou bas). Les cellules sont connectées entre elles par un bus série faisant le tour de la puce (d'où la notion de "frontière" ou Boundary), équivalent à un grand registre à décalage de taille égale au nombre de broches d'entrée-sortie du composant. Le TAP Controller, qui reçoit les signaux JTAG de l'extérieur, permet d'activer et de piloter les cellules selon une séquence normalisée.

[modifier] Applications

Le JTAG n'est pas limité aux tests de continuité. Il est en effet également possible de tester des fonctions logiques combinatoires, même si elles sont composées de puces non compatibles JTAG, en élaborant des vecteurs de test appropriés et à condition que les entrées et sorties de ces fonctions soient connectées à des composants JTAG. De même, il est possible de tester des mémoires en écrivant puis relisant des valeurs de test. Il est même possible de cette manière de programmer des mémoires non-volatiles (EEPROM et Flash).

De plus, le JTAG n'est pas limité aux connexions externes au composant. La norme JTAG est ainsi utilisée pour remplacer les émulateurs de microprocesseurs (systèmes de débug sur carte remplaçant physiquement le composant), en donnant un accès direct à l'intérieur du processeur (points d'arrêt, lecture et écriture des registres internes, des mémoires internes et externes ...) sans perturber ses interactions avec l'extérieur. On nomme cette technique ICE (In-Circuit Emulator) ou ICD (In-Circuit Debugger), et elle est omniprésente sur les microprocesseurs et microcontrôleurs modernes.

Le bus JTAG est également utilisé pour programmer les composants logiques programmables (FPGA et CPLD) ainsi que de nombreux microcontrôleurs (grâce à la capacité du JTAG de programmer la Flash des microcontrôleurs.), voire pour débugger un microprocesseur ou accéder à un "analyseur logique" intégrés dans un FPGA.

[modifier] Technologie

Le bus JTAG est un bus série composé des 5 signaux de contrôle suivants:

  • TMS, (Test Mode Select) Signal d'activation de la communication JTAG,
  • TCK, (Test ClocK) Horloge,
  • TDI, (Test Data Input) Entrée des données,
  • TDO, (Test Data Output) Sortie des données,
  • TRST, (Test ReSeT) Réinitialisation. Ce signal optionnel est actif au niveau bas.

Généralement, les circuits intégrés compatibles "Boundary Scan" montés sur une carte électronique sont associés pour former une chaîne appelée "Chaîne JTAG". On connecte ainsi le signal TDO d'un composant au signal TDI du composant suivant, de manière à former une chaîne. Les autres signaux sont communs à tous les composants de la chaîne.

Exemple de chaîne JTAG
Exemple de chaîne JTAG

Il est également possible de chaîner entre elles plusieurs cartes compatibles JTAG, afin de réaliser un test d'un système complet. Cette technique fait l'objet d'une extension de la norme JTAG, nommée IEEE 1149.5.

Un composant Boundary Scan peut être utilisé selon 4 modes:

  • EXTEST : test externe, permettant de commander les broches d'entrée-sortie du composant afin de tester les interconnections de la carte,
  • INTEST : test interne du composant,
  • IDCODE : identification du composant,
  • BYPASS : mise en haute impédance des entrées-sorties du composant, sa chaîne interne est réduite à un registre afin d'accélérer l'accès à un autre composant de la chaîne.

L'activation d'un mode se fait via la programmation du registre IR (Instruction Register) et l'utilisation d'un mode se fait via l'envoi de données sur le registre DR (Data Register).

[modifier] Liens externes

[modifier] Voir aussi

  • wiggler
  • Background_debug_module Background debug module (BDM)