Forum: FPGA, VHDL & Co. Anzeigen und Manipulation von Variablen


von Thilo (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite mit Quartus Prime Lite und einem Altera Cyclone IV.
Mit diesem empfange ich Daten per SPI Schnittstelle.
Jetzt würde ich gerne sehen, welche Daten ich empfangen habe und auch 
Variablen auf dem FPGA während er läuft ändern können.
Ich bräuchte also so eine Art "Seriellen Monitor" wie es ihn zum 
Beispiel in der Arduino IDE gibt.

Ich weiß dass es unter Quartus den In System Memory Content Editor gibt. 
Ich habe mir zwar die Anleitung von Altera durchgelesen, es allerdings 
nicht geschafft das mit VHDL umsetzen zu können..

Gibt es eine einfachere Möglichkeit, wie ich mir den Inhalt von 
Variablen während des Ablaufens des Codes anzeigen lassen und diese 
während des Ablaufens ändern kann?

Danke schon einmal.

von Martin O. (ossi-2)


Lesenswert?

Ich habe mir für solche Zwecke eine RS232 Schnittstelle im FPGA
realisiert mit der ich dem FPGA Kommandos geben kann (z.B. Werte setzen)
und womit ich mir Werte ausgeben lassen kann (z.B. durch bestimmte 
Kommandos).

Hat sich bei vielen Designs bewährt.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Thilo schrieb:
> Jetzt würde ich gerne sehen, welche Daten ich empfangen habe und auch
> Variablen auf dem FPGA während er läuft ändern können.
> Ich bräuchte also so eine Art "Seriellen Monitor" wie es ihn zum
> Beispiel in der Arduino IDE gibt.

Das Stichwort heißt "internal Logic Analyzer". Bei Xilinx heißt das 
Chipscope, bei Lattice Reveal und bei Altera anscheinend SignalTap.

Hab allerdings nie mit Altera gearbeitet, daher hoffe ich, dass diese 
Info nicht veraltet ist.

von Donni D. (Gast)


Lesenswert?

Info ist nicht veraltet. Mit dem SignalTap Logic Analyzer kann man sich 
an beliebige Signale hängen. Ist auch recht einfach umzusetzen, Clock 
zum Samplen auswählen, Signale zum Analysieren und fertig.

Auch gut ist sich was auf 7Segment anzeigen anzugucken. Was für ein 
Board hast du denn genau?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thilo schrieb:
> Variablen auf dem FPGA während er läuft ändern können.
Du willst Software auf dem FPGA machen. Das geht schief...

Stell dir vor, wie du die Anzeige bzw. die Manipulation der Werte in 
Hardware machen könntest und beschreibe diese Hardware mit der 
HardwareBESCHREIBUNGssprache VHDL. Mit dieser Denkweise kommst du ans 
Ziel.

Und da kommen dann die angesprochenen Wege mit der Segmentanzeige oder 
der seriellen Schnitte ins Spiel. Aber prinzipiell wird ein HDL Design 
zu 90% im Simulator getestet. Nur die hartnäckigen letzten 10% der 
Fehler brauchen dann den (internen oder externen) Logikanalyzer.

Als Tipp: gut 80% der Probleme kommen von nicht korrekt synchronisierten 
Eingangssignalen oder undefinierten Taktdomänenübergängen...

von Wltbester FPGA-Pongo (Gast)


Lesenswert?

Thilo schrieb:
> Mit diesem empfange ich Daten per SPI Schnittstelle.

Nö, du simuliertst eine Schaltung, von der Du annimmst, dass sie eine 
SPI-Schnittstelle beschreibt, weil - im Besten Fall - das Verhalten des 
Simulators etwas zeigt, was dem Ablauf eines SPI-Slaves entspricht.

Ob das ein wirklicher SPI-Slave ist oder wird, ob er vollständig ist und 
ob er sich auch bauen lässt, steht auf einem anderen Blatt.

Wenn Ich da lese, dass man sich Variablen anzeigen lassen muss, werde 
Ich hellhörig, denn das, was mit Variablen eigentlich gemacht wird, 
mündet immer direkt in eine Signalreaktion oder Signalerzeugung. Die 
sollte sichtbar sein.

Ich kann mich persönlich nicht erinnern, jemals Variablenwerte vermisst 
zu haben.

In 20 Jahren FPGA-Entwicklung nicht

Möglich, dass wir Alten etwas nicht verstanden haben ... (?) :-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wltbester FPGA-Pongo schrieb im Beitrag #5435218:
> das, was mit Variablen eigentlich gemacht wird, mündet immer direkt in
> eine Signalreaktion oder Signalerzeugung. Die sollte sichtbar sein.
Du hast die falsche Vorstellung von "Variable". Hier ist es aus der 
Sicht von Thilo (der bisher uC programmiert hat) einfach ein 
Speicherplatz, der einen sich ändernden Wert beinhaltet.
Das hat rein gar nichts mit VHDL Variablen oder Signalen zu tun. Es ist 
eine völlig andere Abstraktionsebene.

Für Hardwarebeschreibung eine zu abstrakte Abstraktionsebene...  ;-)

: Bearbeitet durch Moderator
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.