mikrocontroller.net

Forum: FPGA, VHDL & Co. Array's schachteln


Autor: Tino (Gast)
Datum:
Angehängte Dateien:

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

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

Bewertung
0 lesenswert
nicht 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:
type BasisTyp is std_logic_vector(7 downto 0); 
Dann definierst du ein "kleines" Array:
type SmallArrayTyp is array (0 to 100)(0 to 50) of BasisTyp; 
Und dann definierst du dein "großes Array:
type BigArrayTyp is array (0 to 3)(0 to 2) of SmallArrayTyp; 
Und dann legst du das Ding noch an:
signal MeinArray : BigArrayTyp;

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

BTW: wo im FPGA soll das Ganze denn implementiert werden?

Autor: Tino (Gast)
Datum:

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

Autor: Tino (Gast)
Datum:

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

Autor: Tino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...achso... über einen Zähler von 0 bis 11 müsste ich ja jedes Array im 
BigArray adressieren können um zu sagen welcher FeldTyp in welches Array 
soll...zumindest verstehe ich laut dem Bsp. hier so.

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

Autor: Tino (Gast)
Datum:

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

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

Bewertung
0 lesenswert
nicht 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:
XST supports multi-dimensional array types of up to three dimensions.
Da wäre also schon beim SmallArray Schluss...  :-/

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.