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