Forum: FPGA, VHDL & Co. Range-Fehler bei Deklaration


von Georg (Gast)


Lesenswert?

Hallo Leute,

möchte folgendes beschreiben:
1
constant cReg_xy : std_logic_vector(12 downto 0) := x"1ABC";

Beim Compilieren mit Modelsim erhalte ich:
Error, Index value -3 is out of std.standard.natural range 0 to 
2147483647.


Wie kann ich in der obigen Deklaration die "1" als tatsächlich ein Bit
verkaufen ?

Danke.

VG
Georg

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


Lesenswert?

Concatenation?
'1' & x"ABC";

> Beim Compilieren mit Modelsim erhalte ich:
> Error, Index value -3 is out of std.standard.natural range 0 to 2147483647.
Und was hat das mit der Zuweisung zu tun?

von Georg (Gast)


Lesenswert?

Hallo Lothar,

ja das mit der Concatenation ist mir auch schon in den Sinn gekommen, 
funktioniert auch. Aber gibt es nicht eine elegantere Methode, die einen 
Ausdruck vorsieht ?

>Und was hat das mit der Zuweisung zu tun?
Keine Ahnung, das ist das was Modelsim ausspuckt ....


VG,
Georg

von dito (Gast)


Lesenswert?

Keine Ahnung, aber vielleicht funktioniet so was in der Art:
1
constant cReg_xy : std_logic_vector(12 downto 0)  <= (12=>'1',  x"ABC")

von Georg (Gast)


Lesenswert?

Funktioinert so nicht! Und mit Eleganz hätte es auch nichts zu tun :O)

von dito (Gast)


Lesenswert?

Aber wie soll das denn noch eleganter als mit Konkatenation gehen?

von Boris M. (borism)


Lesenswert?

> Aber gibt es nicht eine elegantere Methode, die einen
> Ausdruck vorsieht ?
1
constant cReg_xy : std_logic_vector(12 downto 0) := "1101010111100";

:) (ist jetzt nicht ganz so ernst gemeint)

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


Lesenswert?

Mit der numeric_std ginge das:
1
constant cReg_xy : std_logic_vector(12 downto 0) := std_logic_vector(to_unsigned(to_integer(unsigned(x"1ABC")),13)));

von Georg (Gast)


Lesenswert?

Hi Lothar,

erhalte folgende Fehlermeldung:

Error: Type conversion (to unsigned) can not have string literal 
operand.

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


Lesenswert?

Georg schrieb:
> erhalte folgende Fehlermeldung:
So ist das, wenn man mal was nicht austestet  :-/

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.