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!!
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 | );
|
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); |
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.