JTAG

Joint Test Action Group (kurz JTAG) bezeichnet den IEEE-Standard 1149.1, der eine Ansammlung von Verfahren zum Testen und Debuggen von elektronischer Hardware direkt in der Schaltung beschreibt. Für den SpartanMC existiert eine Peripherie-Komponente welche die Kommunikation per JTAG vereinfacht. Die Komponente besitzt eine Erweiterung um die Takt-Steuerung für MSP430 Prozessoren zu unterstützen.

Verbindungen

Neben den typischen JTAG Signalen besitzt die Komponente eine Interrupt-Leitung um das Ende einer Übertragung zu signalisieren.

NameRichtungBedeutung
introutInterrupt Signal
tckoutJtag Takt Signal
tmsoutJtag Test Mode Select, steuert den Tap-Controller im Kommunikationspartner
tdioutJtag Test Data In, Daten die versendet werden
tdoinJtag Test Date Out, Daten die empfangen werden


Register

Das User-Interface zum SpartanMC besteht aus 5 Registern:

AdresseName Beschreibung
0KonfigurationSchreiben der Konfiguration der Komponente
1TAP AdressenAdressen für Schiebe-Operationen setzen
2Daten zum TargetDaten die gesendet werden sollen
3Daten-LängeAnzahl der Bit die gesendet werden sollen
4Daten vom TargetEmpfangene Daten vom Target


Konfigurationsregister


BitName Bedeutung
0-9 clkdivTakt-Vorteiler
10irqenableInterrupt enable
11runAktivierung Automatikmodus
12tclkSetze MSP-Takt auf diesen Wert
13tmstms Pegel des Signals im Manuellen Modus
14tditdi Pegel des Signals im Manuellen Modus
15tcktck Pegel des Signals im Manuellen Modus
16gated_tckTaktgenerierung nur wenn nötig
17busyAnzeige ob Komponente arbeitet


TAP Adressen


BitNameBedeutung
0-3Shift-StateRegister in das die Daten geschoben werden
4-7End-StateTAP-Controller-Zustand der eingenommen wird wenn Daten übertragen wurden
8reverse send0 bedeutet LSB zuerst schieben, 1-> MSB zuerst schieben
9reverse receive0 -> Daten ins LSB übernehmen, 1-> Daten ins MSB übernehmen
17-10not used----

Benutzung

Initialisierung

  1. Konfiguration der Komponente
  2. Mit Hilfe der tms und tck bit im Konfigurationsregister den Run-Test-Idle-Modus fahren:
    Reset und RunTestIdle
    // TAP Controller to Reset
    jtag->jtagfields.config.tms = 1;
        for (i = 8; i > 0; i--) {
            jtag->jtagfields.config.tck = 0;
            jtag->jtagfields.config.tck = 1;
            jtag->jtagfields.config.tck = 0;
            jtag->jtagfields.config.tck = 1;
        }
        // TAP Controller manuell in RUN_TEST_IDLE fahren
        jtag->jtagfields.config.tms = 0;
        jtag->jtagfields.config.tck = 0;
        jtag->jtagfields.config.tck = 1;
  3. Automatik-Modus über run-bit aktivieren
    jtag->jtagfields.config.run = 1;

Übertragung von Daten


  1. Setzen der Adressen
  2. Setzen der zu übertragenen Daten
  3. Setzen der Länge (startet die Übertragung)
  4. Warten bis Bysy-Bit im Konfigurationsregister auf 0 weckselt
  5. Lesen der empfangenen Daten


SpartanMC