Forum: FPGA, VHDL & Co. Hexwert einem Signal zuweisen


von Franz (Gast)


Lesenswert?

Hallo ich habe eine Frage wie weiße ich einem SignalVector einen Hex 
wert zu.

Bsp(frei geschrieben):
1
 test_singal <= std_logic_vector((to_unsigned(integer(x"20"), test_signal'length));
Hat nicht funktioniert.

lg Franz

von ... (Gast)


Lesenswert?

Franz schrieb:
> Hallo ich habe eine Frage wie weiße ich einem SignalVector einen Hex
> wert zu.

Das kommt auf dein System drauf an.

von Franz (Gast)


Lesenswert?

... schrieb:
> as kommt auf dein System drauf an.

System? ISIM, Modelsim; Altera, Xilinx; welches system?

lg Franz

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


Lesenswert?

Franz schrieb:
> Bsp(frei geschrieben):
> Hat nicht funktioniert.
Klar hat das nicht funktioniert: da fehlt eine schliessende Klammer!
WAS hat da nicht funktioniert?
WELCHE Fehlermeldungen hast du mit WELCHER Toolchain bekommen?

BTW:
Wie breit ist der Vektor/test_singal/?
Welche Libraries verwendest du?
Schon das hier ist undefiniert:
1
integer(x"20")
Probiers mal so:
1
test_singal <= std_logic_vector(to_unsigned(16#20#, test_signal'length));

von Franz (Gast)


Lesenswert?

Hallo Lothar,


Sorry das ganze war aus dem Gedächniss so hin getippt, deswegen die eine 
Klammer zu viel.


Hm nun zur kritischen Stelle du hast sie eh schon hin geschrieben:
1
integer(x"20")

Thx deine Lösung funktioniert.

Frage was hat es mit der # auf sich dient sie nur zur Änderung des Radix 
oder gibt es dafür noch andere Verwendungen? Bzw unter welchem 
schlagwort finde ich das im Designers Guide to VHDL? (hab ihn grad nicht 
zu hand)

lg Franz

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


Lesenswert?

Franz schrieb:
> Frage was hat es mit der # auf sich dient sie nur zur Änderung des Radix
Damit kannst du einem Integerwert (aber wiederum keinem Vektor) die 
Basis zuweisen: 2#100011010# oder 8#123456701234# oder eben 
16#123456789abcd#.
Default ist die Basis 10#1234567890123#

> oder gibt es dafür noch andere Verwendungen?
Nichts, an was ich mich erinnern könnte... ;-)

von Georg A. (Gast)


Lesenswert?

Bei Vektoren mit n*4 Bits geht doch auch einfach a<=x"deadbeaf".

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


Lesenswert?

Georg A. schrieb:
> Bei Vektoren mit n*4 Bits geht doch auch einfach a<=x"deadbeaf".
Deshalb meine Frage:
>> Wie breit ist der Vektor?

von Franz (Gast)


Lesenswert?

Lothar Miller schrieb:
> Georg A. schrieb:
>> Bei Vektoren mit n*4 Bits geht doch auch einfach a<=x"deadbeaf".
> Deshalb meine Frage:
>>> Wie breit ist der Vektor?

Einstellbar über ein generic... also keine Allgemeine Aussage gültig.

lg Franz

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


Lesenswert?

Franz schrieb:
> Einstellbar über ein generic...
Es wäre aber noch der resize aus der numeric_std möglich:
1
  test_signal <= std_logic_vector(resize(unsigned(x"20"), test_signal'length));

von Franz (Gast)


Lesenswert?

thx ist natürlich auch eine Möglichkeit, fragt sich nur was ist Besser 
bzw gibt es soetwas wie Besser?

lg franz

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


Lesenswert?

Franz schrieb:
> fragt sich nur was ist Besser
Im Resultat kommt genau das selbe raus.
> bzw gibt es soetwas wie Besser?
Bis 31 Bit Vektorbreite: das, was du besser verstehst, ist besser.
Ab 32 Bit Vektorbreite:  nur die Lösung mit resize funktioniert.

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.