Forum: FPGA, VHDL & Co. In einem Vektor ein Bit ersetzen


von Paul (Gast)


Lesenswert?

Hallo,

ich wuerde geren in einem Vektor v ein Bit an einer Stelle ersetzen.
Also z.B. so was:

Anfangswert:

v <= "00000";
...
...
...

v(2) <= "1";

dann sollte das Ergebnis so aussehen: "00010"

Geht das wenn ich nur die Stelle kenne?

Wenn ich das so naiv mache also Vektor(Stlelle) <= ...

dann bekomme ich folgende Fehlermeldung:

"Index value(s) does not match array range, simulation mismatch."


Gruss

von dito (Gast)


Lesenswert?

Probier doch mal:
v(2) <= '1';

von dito (Gast)


Lesenswert?

bzw.
v(1) <= '1';

von Paul (Gast)


Lesenswert?

Danke fuer die Antwort, so hab ich das gemacht, klappt aber immer noch 
nicht...

von Klaus (Gast)


Lesenswert?

Paul schrieb:
> klappt aber immer noch
> nicht

Ich bin mir ziemlich sicher, dass das nicht die exakte Fehlermeldung 
ist...

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


Lesenswert?

Paul schrieb:
> klappt aber immer noch nicht...
Vermutlich hast du jetzt mehrere Treiber auf dieses Signal. Aber das 
kann man nur raten...   :-/

von user (Gast)


Lesenswert?

hast du das in einem prozess gemacht?

von Duke Scarring (Gast)


Lesenswert?

Paul schrieb:
> Wenn ich das so naiv mache also Vektor(Stlelle) <= ...
>
> dann bekomme ich folgende Fehlermeldung:
>
> "Index value(s) does not match array range, simulation mismatch."

"Stlelle" ist dein Index. Und der muß vom Typ integer sein. Falls es 
unsgined ist kannst Du mit "Vektor( to_integer( Stlelle))" konvertieren.
Falls Du (warum auch immer) std_logic_vector verwendest muß das ganze so 
aussehen:
1
Vektor( to_integer( unsigned(Stlelle))) <= ...

Duke

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


Lesenswert?

Duke Scarring schrieb:
> Falls Du (warum auch immer) std_logic_vector verwendest muß das ganze so
> aussehen:
Dazu muss aber dann auch die numeric_std.all verwendet werden statt der 
alten Synopsys-Libs...
http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html

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.