Forum: FPGA, VHDL & Co. Übergabe von Arrays


von Fränkie (Gast)


Lesenswert?

Puh, also diese Arrays rauben mir noch den letzten nerv :-(
Also ich habe inzwischen mein Array aud die dimension:

type data_array is array (1 to 255, 1 to 99) of bit

reduziert.

So, dann habe ich zwei variablen

variable data_x: data_array;
variable data_y: data_array;

erstellt.
Nun kommt aber mein problem. Wie kann ich diese Datan zwischen meinen
componenten am besten hin und herschieben. Ich möchte ja nicht für jede
Komponente wieder diese grosse Menge an Speicher verbrauchen.
Nun habe ich gedacht das ich des mit shared variables mache, aber da
habe ich hier im Forum eher nicht so positive Meinungen lesen können.
Ist das für mein Fall trotzdem die richtige vergehensweise? Wie kann
ich eine solche shared variable deklarieren und wo?

von Fränkie (Gast)


Lesenswert?

Vielleicht konkretisier ich meine frage nochmal.
Ich schreibe nun z.B. im Toplevel
shared variable data_x: data_array;
shared variable data_y: data_array;
Wenn ich dort dann Daten im Array ändere, und in einer anderen
component auf die daten zugreifen möchte, schreibe ich dort auch nur
shared variable data_x: data_array;
shared variable data_y: data_array;
und kann dann dort auch drauf zugreifen?
Wenn es so wär, dann kann man damit ja richtig viel machen. Aber da ist
bestimm ein Harken bei oder?

von Bjarne Streusand (Gast)


Lesenswert?

Wieso kapselst Du die zwei Arrays nicht als eigenes Modul
(entity,architecture)?

Dann bindest Du das als Komponente ein. Du brauchts natürlich noch die
nötigen Schnittstellen-Signale, um lesend und schreibend darauf
zuzugreifen (Lese-, Schreibsignal, Addresse, Daten-Ein-/Ausgang).

von Fränkie (Gast)


Lesenswert?

Ups... na sowas habe ich noch nie gemacht... kingt aber verdammt
clever... das muss ich mal ausprobieren. Dann übergebe ich einfach nur
die werte für zeile und reihe und verwende das somit als addresse ? Das
probier ich mal aus. Super idee... danke dir. Ich werd berichten ob es
geklappt hat.

von Bjarne Streusand (Gast)


Lesenswert?

> kingt aber verdammt clever...

Danke für die Lorbeeren, aber das ist das Standardverfahren zur
Beschreibung von Speicher.

von Fränkie (Gast)


Lesenswert?

Na egal... dann hast du es dir gut gemerkt :-)

von Fränkie (Gast)


Lesenswert?

Wie ist es denn stilistisch am elegantesten? mit if-schleifen den status
von oe we etc abfragen? oder eher mit na case anweisung? oder hast du
irgendwo nen link wo ich ein beispiel finden kann... Muss in dem fall
das rad ja niht 2 mal erfinden.

von Bjarne Streusand (Gast)


Lesenswert?

m "XST User Guide" von Xilinx (xst.pdf) sind Beispiele zur
Beschreibung
von RAM (genauer gesagt Block-RAM).

Das sollte Dir weiterhelfen.

von Fränkie (Gast)


Lesenswert?

Danke

von Fränkie (Gast)


Lesenswert?

Och nö... ich bekomme gleich die kriese...
Sag mir doch bitte mal einer warum er die zuweisung nicht
akzeptiert...

data_x(1 to 256, addresse_z) <= daten_x_in(1 to 256);

Wobei:
type data_array is array (1 to 256, 1 to 64) of bit;
und addresse_z nen Integerwert ist.
ach ja und daten_:x_in ist nen std_logic_vector(1 to 256)

Die fehlermeldung lautet: parse error, unexpected Comma... aber das ist
doch nen array, da muss ich doch zeile und Spalte angeben.

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.