Forum: FPGA, VHDL & Co. mehrdimensionale arrays VHDL


von S. F. (deffman)


Lesenswert?

Hi zusammen,

ich suche nen VHDL Code wie ich diesen C code umsetzen kann:

const unsigned int Feld[2][6] ={
{0x00030400,0x00003400,0x00024000,0x10000001,0x00003000,0x10000001},
{0x00002340,0x10030013,0x00200000,0x00001200,0x00078000,0x00090000}
};

Nur eine Zeile wäre kein Problem. Aber zum oberen Code habe ich leider 
nichts passendes gefunden.

Gruß und Danke!!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

1
type rom_t is array ((2**a)-1 downto 0) of std_logic_vector(w-1 downto 0);
2
  signal rom : rom_t := (
3
    "10001011101010101101101111110101110",
4
    "10111010000010110101101010000000010",
5
    "11110101100111110010101001011000000",
6
.
7
.
8
);

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Das ist bisher nach Redeart von "C" nur eindimensional...  :-o
>> const unsigned int Feld[2][6];
Das ist umgesetzt nach VDHL ein dreidimensionales Array, weil der 
Schritt vom Bit nach Bit-Vektor ja auch schon eine Dimension ist.


So wirds C-like zweidimensional (in VHDL dreidimensional):
1
type Feldelement is array (0 to 3) of std_logic_vector(3 downto 0); 
2
type FeldTyp1 is array (0 to 3) of Feldelement; 
3
signal FeldA : FeldTyp1 := ((x"0",x"1",x"2",x"3"),(x"4",x"5",x"6",x"7"),(x"8",x"9",x"A",x"B"),(x"C",x"D",x"E",x"F"));
4
:
5
  outputA <= FeldA(hi)(lo);

oder
1
type FeldTyp2 is array (0 to 3, 0 to 3) of std_logic_vector(3 downto 0); 
2
signal FeldB : FeldTyp2 := ((x"0",x"1",x"2",x"3"),(x"4",x"5",x"6",x"7"),(x"8",x"9",x"A",x"B"),(x"C",x"D",x"E",x"F"));
3
:
4
  outputB <= FeldB(hi, lo);

von S. F. (deffman)


Lesenswert?

Hallo Lothar,

vielen Dank für deine Antwort. Hatte so etwas ähnliches schon selbst 
probiert aber hatte nen kleinen Fehler drin. Jetzt funktioniert es 
super!

Danke & Gruß S.F.

von Moritz G. (mbydq2)


Lesenswert?

1
outputA <= FeldA(hi)(lo);

Ich kann die Korrektheit dieser Schreibweise nicht bestätigen.
Wurde der Array nicht mehrdimensional deklariert kann immer nur auf eine 
Dimension zugegriffen werden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mal abgesehen davon, dass du einen 4 Jahre alten Zombie ausgegraben hast 
und es um das und nicht den Array geht: was meinst du? Wo siehst du 
Probleme? Wie äussern die sich? Welche Toolchain verwendest du?

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.