www.mikrocontroller.net

Forum: FPGA, VHDL & Co. dynamische Datenstruktur in VHDL


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann mir die Antwort schon fast selbst geben, trozdem: Gibt es in 
VHDL eine Möglichkeit eine dynamische Datenstruktur aufzubauen? Also 
sowas wie eine verkettete Liste?
Ich muss ein paar Daten vorausberechnen, auf die ich hinterher zugreifen 
muss. Dabei ist die Anzahl der Daten per Register einstellbar

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

in VHDL kannst Du (fast) alles machen, meine 1. Frage ist:
soll das synthesefähig sein oder nicht?

2. warum muss es eine verkettete Liste sein? (Ich nehme jetzt mal
an, die Datenblöcke sind unterschiedlich groß)
also wenns unbedingt so eine Liste sein soll, dann baust
Du Dir einfach eine entspr. RAM-Struktur.
z.B. 1. Byte=Anzahl Blöcke, dann jeweils pro Block 1.Byte=Block-Nr., 
2.Byte = Blocklänge, damit hast Du eine einfache Liste.

Ist es das, was Du suchst?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Marc! Danke für deine Antwort.
Zu 1.: ja, der Code soll synthetisierbar sein.
Zu 2.: so richtig habe ich das nicht verstanden.
Ich erkläre mein Problem mal vielleicht etwas ausführlicher.
Per mathematischer Funktion werden Stützstellen einer Funktion 
berechnet. Die Anzahl der Stützstellen hängt von verschiedenen 
Parametern ab, die über Register eingestellt werden.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Zu 1.: ja, der Code soll synthetisierbar sein.

Nein, dann geht es nicht, schließlich muss VHDL in Hardware umgesetzt 
werden und man kann (leider noch ) nicht Transistoren dynamisch 
erzeugen.

Du muss mit der maximalen Anzahl von Stützstellen rechnen, bzw. den Kode 
für den größten Fall dimensionieren.

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

hmm, mal angenommen so eine Stützstelle lässt sich mit Hilfe eines
Records beschreiben. Und die Anzahl dieser Records ist erstmal
nicht bekannt. Dann kann man doch einfach eine Funktion schreiben,
die so einen Record in eine RAM-Adresse X schreiben kann.
In dem Record gibt es ein Flag z.B. 'Last_Record'. Das setzt Du
auf 1 beim Schreiben des letzten Datums.
Der Ablauf wäre nun wie folgt:
1) Math-Funktion liefert Datum (Record)
2) Record im RAM ablegen, beim letzten das Flag setzen
3) Adresse inkrementieren
4) Loop solange wiederholen bis alle Datensätze abgelegt wurden.

Die RAMs müssen natürlich - da hat Klaus Recht - in der max. möglichen
Anzahl verfügbar sein. Das ist aber bei einem PC auch nicht anders -
OK da gibts noch andere Speichermöglichkeiten - aber wenn das RAM
voll ist dann ist eben Schluss.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist viel zu PC-mäßig gedacht.
Wenn es nur darum geht, Daten vorauszuberechen, dann ist es besser diese 
am PC zu rechnen und an das FPGA zu überspielen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.