Hallo, Kann mir jemand erklären warum man ein Signal oder eine Konstante eines Arrays mit nur einem Element nicht initialisieren kann. Der Compiler meldet "Integer literal 3 is not of type t_i". Aber warum? Mittels Zuweisung scheint es ja zu gehen. siehe Beispiel! ------------------------------------------------------------------------ ------- library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity test is end test; architecture behavior of test is type t_i is array (natural range <>) of integer; constant i1 : t_i := (3,5); -- OK constant i2 : t_i := (3); -- compile failure signal i3 : t_i(0 to 1) := (3,5); -- OK signal i4 : t_i(0 to 0) := (3); -- compile failure signal i5 : t_i(0 to 0); -- OK begin i5(0) <= 3; -- OK end behavior;
Folgendes geht:
1 | signal i4 : t_i(0 to 0) := (others => 3); |
VG, SuperWilly
>Funktioniert das? >signal i4 : t_i(0) := (3); Nein: Expecting a type name, found type conversion (to t_i) instead.
Folgendes geht auch:
1 | signal i4 : t_i(0 to 0) := (0 => 3); |
VG, SuperWilly
Thomas Wendt schrieb: > Kann mir jemand erklären warum man ein Signal oder eine Konstante eines > Arrays mit nur einem Element nicht initialisieren kann. Der Compiler > meldet "Integer literal 3 is not of type t_i". Aber warum? Mittels > Zuweisung scheint es ja zu gehen. Die Initialisierung mit "(3)" ist einfach nur ein arithmetischer Ausdruck, der äquivalent zum Literal "3" ist, und daher keiner gültigen "array aggregate expression" entspricht. Man kann sich jetzt durch das LRM arbeiten und schauen, ob das Verhalten korrekt ist. Ein kommerzieller Compiler, den Du vermutlich auch verwendest, meckert jedenfalls. Bei Deiner Zuweisung verwendest Du ja ganz explizit das Element mit dem Index 0. Gruß Marcus
Einen hab' ich noch... ;-)
1 | signal i4 : t_i(0 to 0) := (3, others => 0); |
>Einen hab' ich noch... ;-) >signal i4 : t_i(0 to 0) := (3, others => 0); Ich liebe VHDL! ;-) SuperWilly
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.