www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Globlaes constanten array


Autor: Slin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...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.

Autor: Jannulis Tembridis (tembridis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder man hängt das ganze als einen Slave an einen Bus und die 
entsprechenden Einheiten holen sich ihre Werte von dort.

wild spekulier

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jannulis Tembridis (tembridis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Damit verlagerst Du das Problem auf die Busarbitrierung.

Jo, aber wenigstens wird dann die Einheit nur einmal gebraucht.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Aber eigentlich geht es hier nicht um Details, sondern um die falsche
> Denkweise zum Thema "globale Konstanten in VHDL"...

Jepp ;-)

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.