Forum: FPGA, VHDL & Co. Debuggen in der Hardware (FPGFA) möglich?


von Michi (Gast)


Lesenswert?

Ich bin noch ein relativer Anfänger in der VHDL-Programmierung. Im
Moment setze ich einen kleinen Spartan II von Xilinx ein und würde
diesen gerne in der Hardware debuggen können, ähnlich wie es bei
Mikrocontrollern eben auch möglich ist. (Keine Siimulation)

Da im FPGA die ganzen Prozesse parallel ablaufen ist das bestimmt nicht
ganz so einfach, aber ist es nicht auch möglich diese in der Hardware zu
debuggen?

Freue mich auf Eure Rückmeldungen und Erfahrungen.

von Jörn (Gast)


Lesenswert?

Bei Xilinx gibt es den ChipScope*. Das ist ein LA der zu deinem Design
hinzusynthetisiert wird und über das JTAG Interface gestartet und
ausgelesen werden kann.

Ansonsten Signal auf FPGA Pins legen und mit dem Oszi messen.

Gruß Jörn

*http://www.xilinx.com/ise/optional_prod/cspro.htm

von FPGA-User (Gast)


Lesenswert?

ChipScope Pro gibts offenbar als 60-Tage Testversion, ansonsten
kostet es wohl 695,- USD

Es ist aber auch nicht schwer, eigene kleine Debug-Tools
zu erstellen, z.B. kannst Du mit einem simplen UART (nur TX)
und etwas Logik drumrum prima Registerinhalte auslesen, z.B.
zyklisch und diese dann mit einem Terminal-Programm anschauen.

Was sich bei mir auch bewährt hat:
Testsignale generieren, die man sich mit dem Scope anschauen
kann (wie von Jörn vorgeschlagen).
Dabei so viel wie möglich ins FPGA packen (z.B. Vergleich
ist das Signal > 0x500  usw.) und nur das Ergebnis rauslegen,
damit man mit 1 - 2 -Kanal-Scope was messen kann.

von Michi (Gast)


Lesenswert?

Danke "Jörn" und "FPGA-User" für Eure schnellen Antworten.

Das ChipScope-Programm scheint zumindest laut Xilinx recht interessant
zu sein, habt Ihr oder andere hier im Forum Erfahrungen mit diesem
Programm?

Mich würde interessieren ob dies gut einzubinden ist, wieviel
Ressourcen es im FPGA benötigt, was wirklich genau wie analysiert
werden kann und ob eine Art Einzelschirttmodus möglich ist.

von FPGA-User (Gast)


Lesenswert?

@Michi
hab vor längerer Zeit mal mit dem Vorgänger Chip-Scope (ohne Pro)
gearbeitet.
Das ist praktisch nichts anderes als ein Logic-Analyzer, der
im FPGA implementiert wird. Man definiert zuerst den ILA-Core
(oder auch mehrere) und dann glaube ich den Core zur Kommunikation,
das ganze kommt dann ins FPGA mit rein und muss zusammen mit dem
Design mit compiliert werden. Wenn dann das FPGA geladen war
konnte man per Windows-Oberfläche den Trigger konfigurieren,
also meinetwegen Start bei fallender Flanke WE und Adresse = 0x100
und dann hat der LA einen "Schuss" gemacht und z.B. 32k Samples
von den Datenleitungen ins Block-RAM geschrieben.
Den Signalverlauf kann man sich so ähnlich wie im ModelSim anschauen.

Das ist aber nicht vergleichbar mit dem Schrittbetrieb eines
uC! Vielleich kann der Pro jetzt mehr, aber ein Schrittbetrieb
würde ja voraussetzen, dass es ein globales Clock-Enable-Signal
gibt oder der Clock sonst irgendwie "angehalten" werden kann,
was normalerweise nicht geht.
Also schau Dir mal die Features von dem Teil an, aber alles
kann der auch nicht.

Aus meiner Erfahrung spart man sich viel Fehlersuche, wenn man
ordentlich simuliert, auch Fehlerfälle mit prüft und generell
synchrone Designs verwendet. Natürlich kann die Hardware
rings ums FPGA fehlerhaft sein, da ist es auch sinnvoll,
wenn man schnell mal einen Block Daten in ein RAM schieben kann
um sich das am PC anzuschauen, aber dafür braucht man nicht gleich
einen ChipScopePro.

von Bernhard (Gast)


Lesenswert?

Hi!

Ich setze selbst gerade ChipScope Pro 7.1 ein und bin damit sehr
zufrieden.

Zu Deinen Fragen:

ChipScope Pro ist quasi ein Logik-Analyser, das stimmt. Du kannst
verschiedene (beliebig breite) Signale anschauen, kannst
Trigger-Funktionen (und auch Trigger-Sequenzen) bestimmen, nachher noch
durch einen Filter jagen und das Ganze anschauen.

Dabei werden einfach mit jedem Clock (wenn die Filter-Bedingung erfüllt
ist) die Daten in die Block-Rams geschrieben und dann über das
JTAG-Kabel raus-übertragen.

Ein Einzelschritt-Modus ist damit nicht möglich, aber auch nicht
sinnvoll. Es handelt sich eben nicht um sequentielle Software, sondern
um vollparallele Logik. Und da zählt, was zu welchem Takt an welchem
Knoten anliegt und ein Einzelschritt-Betrieb macht keinen Sinn.
Ausserdem treten viele Probleme ja auch erst bei voller Geschwindigkeit
auf und wären somit gar nicht erfassbar.

Also, ich kann ChipScope Pro nur empfehlen (und ich arbeite nicht für
Xilinx), weil es sehr viel Zeit erspart. Sonst müsste man sich Signale
erstmal auf Pins rauslegen und mit einem LA anschauen und das ist
manchmal gar nicht möglich, ausserdem: wer hat schon einen LA für 40-
oder 50 bit breite Signale zu Hause stehen, der jenseits der 350MHz
samplen kann? Also ich nicht. Und ChipScope ist da eine einfache
Möglichkeit zum debugging.

Aber man muss sich eben auch bewusst sein, dass uC-Programmierung nicht
gleich VHDL-Design ist und demnach auch Debugging anders ausschaut.


Ich hoffe, Dir (Euch) damit geholfen zu haben und bin für Kritik,
Anregungen, Fragen usw. offen.


c yas!

Bernhard

von Axel (Gast)


Lesenswert?

Es gibt auf der Xilinxseite ein Video on demand, wo ein mitarbeiter die
grundzüge von Chipscope erläutert. Sehr interessant. Die Demoversion
gibt es, aber der Messadapter um es an deinen PC anzuschliessen kostet
leider auch an die 100 Euro. Das ist der Nachteil :-(
Selberbauen ist glaub ich nicht drin oder?

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.