JTAG basierte Fehlerüberprüfung

Gast #2323027
Lesenswert?

Hallo

Ich bin Student und schreibe gerade eine Arbeit über "JTAG basierte 
Fehlerüberprüfung". Meine Aufgabe ist es mit einem Tricore Board, ein 
Feedback-Shiftregister auf einem Virtex 5 ML506 zu überwachen. Leider 
finde ich nix dazu, wie man am besten die JTAG Schnittstelle anspricht.
Ich wollte deswegen hier fragen, ob wer eine gute Quelle kennt, wo man 
sich dazu Wissen aneignen kann. Das ganze sollte über C oder C++ laufen 
und muss auch nicht direkt aufs Tricore, sondern kann erstmal über den 
Rechner geschehen. Nur finde ich leider nix, wie ich in der Virtex 5 
ML506 Evaluation Platform über die JTAG Schnittstelle auf bestimmte 
Ports zugreifen kann.
Ich würde mich sehr über eine Antwort freuen.

Gruß
Daniel
#2323073
Lesenswert?

Naja, so ganz wer ich aus deiner Anfrage nicht schlau. Willst du ein 
laufendes Design per JTAG quasi debuggen? Das ginge über ChipScope an 
einfachsten, allerdings eben nicht open source. Ansonsten gibts für die 
Virtex so ein internes Modul, mit dem zu eigene JTAG Instruktionen 
implementieren kannst, und eine interne JTAG Kette zur Verfügung hast.

"The BSCAN_VIRTEX5 component allows access to and from internal logic by 
the
JTAG Boundary Scan logic controller.  This allows for communication 
between the internal running design and the dedicated JTAG pins of the 
FPGA."
Gast #2323163
Lesenswert?

Also ich habe auf dem Virtex Board ein 4-Bit-Feedback-Shiftregister 
implementiert. Dieses will ich nun eigentlich mit dem Tricore-Board 
überwachen. Aber für den Anfang reicht es auch, wenn ich es mit dem 
PC-überwache. Überwachen bedeuten, dass ein Programm schreiben möchte, 
welches ebenfalls dieses Shiftregister hat und weiß wann welcher Zustand 
sein sollte und somit Fehler in dem Register erkennt (welche ich auf dem 
Virtex-Board gezielt einspeisen kann).
Damit ich nun aber dieses Programm zum laufen bringen kann, muss ich 
erstmal was finden, wie ich mit dem Virtex Board über den JTAG-Anschluss 
kommuniziere und das schlägt bei mir schon fehl. Ich habe das Virtex 
Board zwar über die JTAG komponente Programmiert, aber dafür gibt es von 
Xilinx ja vorgefertigte Lösungen.

Ich möchte hier auch keine fertige Lösung, sondern mehr Quellen, wo ich 
mich gescheit anlesen kann, da meine Suche bisher sonst erfolglos blieb.

Ich hoffe, dass es nun verstndlicher war.
#2323329
Lesenswert?

Hm, naja, JTAG machts nicht gerade einfach...aber der BSCAN Block ist 
schon mal der Ansatz. Wenn du das ohne ChipScope machen willst, musst du 
dann natürlich einen JTAG TAP Controller implementieren. Eine Quelle, wo 
eine Beispiel-Implementierung ist, weiß ich jetzt aber auch nicht.
Und nochmal zum Verständnis: Der Tricore soll den JTAG Master spielen 
und auf interne Daten des FPGA zugreifen? Auf jeden Fall bekommst du 
dann wahrscheinlich ein kleines Geschindigkeits-Problem, denn der FPGA 
errechnet die SR-Werte sicherlich um Größenordnungen schneller, als du 
die per JTAG übertragen kannst. Oder du speicherst halt die Werte in 
einem Blockram und liest sie anschließend über JTAG langsam aus....
#2323758
Lesenswert?

Hi,

zum Thema JTAG gibt es eine kostenlose Java-Software namens "gojtag". 
Läuft mit einigen FT2232-basierten JTAG-Adaptern, Goepel hat solche 
sogar eine Weile lang mal verschenkt. Das nette ist, dass man ohne 
Debugger auch schon mit boundary-Scan-Dateien im Simulationsmodus 
rumexperimentieren kann. Dokumentation gibts leider wenig, habe nur mal 
eine kleine Appnote geschrieben, siehe ICEbear-Manual 
(http://www.section5.ch/dsp/icebear/ICEbear-manual.pdf)

Sonst gibt es auch die urjtag-Library, ist zwar kein Ausbund an 
Geschwindigkeit, aber unterstützt immerhin einige Billig-Adapter. Kann 
im Prinzip auch so viel wie gojtag, aber zusätzlich auch Scripting.

Um ein einfaches shift-Register zu debuggen, reichen vermutlich die 
USER1/USER2 Scanchains der Xilinx-BSCAN-Primitiven. Dazu sollte es 
einige Appnotes geben.
Allerdings habe ich einen andern Ansatz gewählt und einen generischen 
JTAG-Controller und TAP (Test-Access-Port) Modul selber geschrieben. 
Gebe den VHDL-Code auch für nicht kommerzielle Nutzung raus.
Allerdings macht der Ansatz nur Sinn, wenn man einen etwas komplexeren 
Core (Softcore-CPU) debuggen will und dazu mehrere Scanchains 
(Instruction register) braucht.

Grüsse,

- Strubi
Gast #2323835
Lesenswert?

Ich danke für die schnellen Antworten, werde nun die kommenden Tage mal 
alles durch gehen. Das Geschwindigkeitsproblem ist ein Punkt um den es 
dann in meiner Arbeit geht. Ich soll dann rausbekommen, wie schnell man 
das Register Takten kann, damit Fehler noch erkannt werden und nicht 
falsche Fehlermeldungen kommen.
Vielen dank nochmal.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren