Hallo, ich muss an verschiedenen Stellen in meinem Design einen Sinus bzw. Cosinus generieren. Dazu benutze ich numerical controlled oscillators an diesen Stellen. Nun möchte ich aber nicht, dass jedes Mal eine Kopie der (recht großen) Look-Up-Table (ein Array aus std_logic_vetcor-Konstanten) gespeichert wird. Gibt es eine Möglichkeit eine solche Tabelle global zu definieren, so dass jeder NCO darauf zugreifen kann? Vielen Dank im Voraus
Slin schrieb: > Gibt es eine Möglichkeit eine solche Tabelle global zu > definieren, so dass jeder NCO darauf zugreifen kann? Definier dafür ein Package... Slin schrieb: > Nun möchte ich aber nicht, dass jedes Mal eine Kopie der (recht großen) > Look-Up-Table (ein Array aus std_logic_vetcor-Konstanten) gespeichert > wird. Wo soll die nicht gespeichert werden? Auf dem FPGA? Aha, ein C-Programmierer... Wenn du diese (Software-)Denkweise hast, dann solltest du dir mal vergegenwärtigen, dass auf dem FPGA nur LUTs und FFs und bestenfalls noch RAMs existieren, die diese Aufgabe übernehmen müssen. Und wie willst du auf ein RAM, das diese Werte gespeichert hat, von mehreren Hardware-Stellen aus zugreifen? Du wirst einen Multiplexer brauchen...
...wenn dann noch unterschiedliche Frequenzen und/oder Phasenlagen ins Spiel kommen, wirds ganz eng, denn bei einen Speicher kann zeitgleich nur von genau einer Adresse gelesen werden. Sinnvollerweise wird das ja in die dedizierten RAMs eines FPGA gepackt, da musst du schauen, wieviel davon verfügbar ist.
Oder man hängt das ganze als einen Slave an einen Bus und die entsprechenden Einheiten holen sich ihre Werte von dort. wild spekulier
Jannulis Tembridis schrieb: > Oder man hängt das ganze als einen Slave an einen Bus und die > entsprechenden Einheiten holen sich ihre Werte von dort. Damit verlagerst Du das Problem auf die Busarbitrierung. > wild spekulier Genau. Duke
> Damit verlagerst Du das Problem auf die Busarbitrierung.
Jo, aber wenigstens wird dann die Einheit nur einmal gebraucht.
Jannulis Tembridis schrieb: > Jo, aber wenigstens wird dann die Einheit nur einmal gebraucht. Das hilft aber nichts, wenn zwei Komponenten gleichzeitig im Sinne von zum selben Zeitpunkt darauf zugreifen wollen...
Lothar Miller schrieb: > zwei Komponenten gleichzeitig Nur für den Fall, das es nur zwei Komponenten sind, die Zugriff brauchen bietet sich bei Xilinx z.B. der dual port ram an. Andere Hersteller bieten sicher was ähnliches. Duke
Duke Scarring schrieb: > Nur für den Fall, das es nur zwei Komponenten sind Ich hatte diesen Speizalfall durchaus im Hinterkopf, aber gleichzietig auch die Forderung: >>> ich muss an verschiedenen Stellen in meinem Design einen Sinus bzw. >>> Cosinus generieren. Und das implizierte bei mir: Stellen > 2 Aber eigentlich geht es hier nicht um Details, sondern um die falsche Denkweise zum Thema "globale Konstanten in VHDL"... >>> Gibt es eine Möglichkeit eine solche Tabelle global zu definieren ... denn allein mit einer Definition ist hier nichts zu erreichen.
Lothar Miller schrieb: > Aber eigentlich geht es hier nicht um Details, sondern um die falsche > Denkweise zum Thema "globale Konstanten in VHDL"... Jepp ;-)
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.