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
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?
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.
> 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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.