Dezimal und Hexadezimal

Gast #1418822
Lesenswert?
• ▲
▼
Hallo zusammen, habe eine Anfängerfrage:

Ich habe einen
SIGNAL a : STD_LOGIC_VECTOR (7 downto 0);
definiert.

weisse ich dem Signal nun eine Hex-zahl zu, so klappt das einwandfrei:

a <= x"ff";

nun will ich aber eine Dezimalzahl zuweisen :

a <= 255;     oder
a <= 10#255#;

beides funktioniert nicht, ich erhalte immer:
Type of a is incompatible with type of 255

Wie kann ich eine dezimalzahl zuweisen ?
Moderator (Firma: Titel) Persönliche Seite #1418998
Lesenswert?
• ▲
▼
> weisse ich dem Signal nun eine Hex-zahl zu, so klappt das einwandfrei:
> a <= x"ff";
Du weist damit keine Hex-/Zahl/ zu, sondern einen Hex-/Vektor/. Deshalb 
geht das.

> nun will ich aber eine Dezimalzahl zuweisen :
> a <= 255;
255 ist jetzt wirklich eine Zahl, und die muß deshalb erst mal in 
einen Vektor umgewandelt werden. Wenn du die numeric_std verwendest 
(und ich würde dir zu diesem Standard raten), geht das z.B. so
1
a <= std_logic_vector(to_unsigned(255,8));
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std

Wenn du die "alte" STD_LOGIC_ARITH verwendest, geht das mit
1
a <= conv_std_logic_vector(255);  -- ohne Garantie, da muß ich selber immer nachschauen  ;-)
Gast #1419190
Lesenswert?
• ▲
▼
und wieso muss ich bei einem

if a = 255 then.....

die 255 nicht in einen std_logic_vector umwandeln ?

Was genau ist denn der unterschied zwischen einer Zahl und einem Vector 
?

und wieso gibt es keinen Datentyp std_logic_int ?
Moderator (Firma: Titel) Persönliche Seite #1419280
Lesenswert?
• ▲
▼
> und wieso muss ich bei einem
>    if a = 255 then.....
> die 255 nicht in einen std_logic_vector umwandeln ?
Es ist leider so, dass nur der Vergleichsoperator (a = 255) in der 
numeric_std überladen wurde, der Zuweisungsoperator (a <= 255) leider 
nicht...    :-(
Und das obwohl die Zahl 255 definitiv immer das Bitmuster x"FF" ergeben 
wird, egal ob signed oder unsigend.

> und wieso gibt es keinen Datentyp std_logic_int ?
Du kannst dir doch selber einen definieren  ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren