Forum: FPGA, VHDL & Co. JTAG basierte Fehlerüberprüfung


von Daniel (Gast)


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

von Christian R. (supachris)


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."

von Daniel (Gast)


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.

von Christian R. (supachris)


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....

von Michael F. (mifi)


Lesenswert?

Hallo,

wenn Du mit dem PC was mit JTAG machen möchtest, dann könnte
das hier vielleicht was sein, Amontec JTAGkey:

http://www.amontec.com/jtagkey.shtml

Damit hättest Du schon mal eine Schnittstelle am PC. Für
das Programm musst Du aber selber sorgen.

von Martin S. (strubi)


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

von Daniel (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.