Array's schachteln

Gast #2116703
Lesenswert?

Hallo

Mal eine Frage zu Array's. Wie muss ich ein Array aufbauen, das 1200 
Byte breit ist und 500 lang. Dieses wäre das "Hauptarray". In diesem 
würden sich dann kleinere befinden die das "Hauptarray" füllen.

Oder brauch man das große "Hauptarray" gar nicht?

Ich möchte jedes Array einzeln anprechen können um es zu "füllen".

Das Bild soll nur ne grobe Skizze sein, die Array's sollen viel kleiner 
werden.

Danke für jede Anregung.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #2116741
Lesenswert?

Tino schrieb:
> Wie muss ich ein Array aufbauen, das 1200
> Byte breit ist und 500 lang. Dieses wäre das "Hauptarray". In diesem
> würden sich dann kleinere befinden die das "Hauptarray" füllen.
Der Weg (und die Denkweise) ist genau umgekehrt: du definierst erst den 
"kleinsten" Typ und bastelst dir dann die "größeren" daraus zusammen...


Mach doch einfach ein Array von Arrays...
http://www.lothar-miller.de/s9y/categories/32-Arrays

Es gibt 1000 Wege nach Rom, und fast genausoviele als Lösung für deine 
Aufgabe...

Du definierst z.B. erst mal deinen Basistyp:
1
type BasisTyp is std_logic_vector(7 downto 0);
Dann definierst du ein "kleines" Array:
1
type SmallArrayTyp is array (0 to 100)(0 to 50) of BasisTyp;
Und dann definierst du dein "großes Array:
1
type BigArrayTyp is array (0 to 3)(0 to 2) of SmallArrayTyp;
Und dann legst du das Ding noch an:
1
signal MeinArray : BigArrayTyp;

Allerdings könnte ich mir anhand deiner Zählweise auch eine Liste von 
kleinen Arrays vorstellen:
1
type BigArrayTyp is array (0 to 11) of SmallArrayTyp;
Und dann weiter wie gehabt:
1
signal MeinArray : BigArrayTyp;

BTW: wo im FPGA soll das Ganze denn implementiert werden?
Gast #2116747
Lesenswert?

...die Frage stellte sich mir auch schon da ich mal von ausgehe, dass 
der Speicher nicht reicht. Ich hab hier nen Cyclone III EP3C80F484I7

Lothar Miller schrieb:
> Mach doch einfach ein Array von Arrays...
> http://www.lothar-miller.de/s9y/categories/32-Arrays

Deine Seite hat mir schon viel geholfen. Ich denke immer noch zu oft in 
C :). Das ist auch echt schwer nicht immer in Variablen zu denken. :)
Gast #2116873
Lesenswert?

ich würde so denken...bitte nicht gleich hauen wenns syntaktischer 
Unsinn ist.

architecture Behavioral of MultidimArray is

type SmallArray is array (0 to 4) of std_logic_vector(3 downto 0);
type FeldTyp0 is array (0 to 8) of SmallArray;
              FeldTyp0 :=  ((x"0",x"0",x"0",x"0",x"0"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"0",x"0",x"1"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"0")
                            (x"0",x"0",x"0",x"0",x"0")); --A

type SmallArray is array (0 to 4) of std_logic_vector(3 downto 0);
type FeldTyp1 is array (0 to 8) of SmallArray;
              FeldTyp1 :=  ((x"0",x"0",x"0",x"0",x"0"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"1"),
                            (x"0",x"1",x"1",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"0"),
                            (x"0",x"1",x"0",x"1",x"0"),
                            (x"0",x"1",x"1",x"1",x"0")
                            (x"0",x"0",x"0",x"0",x"0")); --B


...das würde ich dann noch 10 mal machen und hätte meine 12 kleinen 
Array's

type BigArrayTyp is array (0 to 3)(0 to 2) of SmallArrayTyp;

Jetzt muss ich ja noch sagen das FeldTyp0 oben links hin soll daneben 
Feldtyp1 etc. Feldtyp5 müsste er ja automatisch unter Feldtyp0 machen.
Gast #2117022
Lesenswert?

was noch zu sagen wäre...der Inhalt der SmallArray's ist statisch. Nur 
die Positionierung der SmallArray's innerhalb des BigArray soll mal 
dynamisch werden.
Der Inhalt der Array's soll geprüft werden, also ob ein 0,1,2,3...etc 
drinsteht und für jede Zahl soll eine Aktion ausgeführt werden.
Moderator (Firma: Titel) Persönliche Seite #2117417
Lesenswert?

Tino schrieb:
> was noch zu sagen wäre...der Inhalt der SmallArray's ist statisch.
Dann pack die Dinger in Block-Rams (oder wie auch immer die bei Altera 
heißen).

> was noch zu sagen wäre...
Lies auf jeden Fall auch noch den User-Guide zu deinem Synthesizer. 
Xilinx XST verdaut solche Arrays nicht mehr:
1
XST supports multi-dimensional array types of up to three dimensions.
Da wäre also schon beim SmallArray Schluss...  :-/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren