Forum: FPGA, VHDL & Co. Wie einem std_logic_vector einen HEX zuweisen?


von Gast (Gast)


Lesenswert?

Ich kriege die Kriese. Ich will einem std_logic_vector (15 downto 0) den 
Wert C000 in Hex zuweisen und es geht nicht (mehr). Modelsim meckert.

Wie lautet die korrekte Syntax ?

von Kest (Gast)


Lesenswert?

signal s : std_logic_vector (15 downto 0);


begin
 s <= x"c000";
end;

von damicha (Gast)


Lesenswert?

verdammt, war wieder einer schneller... ;)

s <= 16#C000#

 geht aber auch!

von Gast (Gast)


Lesenswert?

Ja, die erste ist mir auch bekannt, aber die will er nicht. Die zweite 
habe ich nun probiert. Geht auch nicht. Ist wohl was anderes. Mal suchen 
...

von Bernd G. (Gast)


Lesenswert?

Ich würde mal kühn behaupten, daß Du in VHDL den Bus voll ausscreiben 
mußt:
"1100 0000 0000 0000" -- Leerzeichen aber weglassen, dient hier nur der
                      -- Übersichtlichkeit!

von Mathi (Gast)


Lesenswert?

> Ich würde mal kühn behaupten, daß Du in VHDL den Bus voll ausscreiben
> mußt:
> "1100 0000 0000 0000" -- Leerzeichen aber weglassen, dient hier nur der
>                       -- Übersichtlichkeit!

Nein, man muss nicht den Bus auschreiben. Was sagt denn Modelsim?

von Gast (Gast)


Lesenswert?

Mist! In der Portdeklaration war ein "downto" nicht passend. Gemeckert 
hat er aber unten bei der zuweisung, daß ihm die Länge nicht passt. Habe 
es nur zufällig gesehen. Lässt man die Deklaration unten weg, findet er 
den Portfehler. Offenbar ist ein solcher Fehler für ModelSim 
"anzeigenswerter" als die eigentlich Ursache.

Scheiss M****or.

von Spätaufklärer (Gast)


Lesenswert?

Gast schrieb:
> Ja, die erste ist mir auch bekannt, aber die will er nicht. Die zweite
> habe ich nun probiert. Geht auch nicht. Ist wohl was anderes. Mal suchen
> ...

16#xx# isse auch ein numerical literal, das man nur für integer, real 
oder physical verwenden kann, während
X"xx" ein string literal ist, was für strings aka eindimensionale 
vectoren wie std_logic_vector benutzt wird.

von Klakx (Gast)


Lesenswert?

Bernd G. schrieb:
> Ich würde mal kühn behaupten, daß Du in VHDL den Bus voll ausscreiben
> mußt:
> "1100 0000 0000 0000" -- Leerzeichen aber weglassen, dient hier nur der
>                       -- Übersichtlichkeit!

signal zahl: integer := 2#1100_0000_0000_0000#;
signal vec: std_logic_vector(15 downto 0) := b"1100_0000_0000_0000";

sollte auch gehen, siehe 
http://www.vhdl.renerta.com/mobile/source/vhd00041.htm


signal hzahl: integer := 16#C000#;
signal hvec: std_logic_vector(15 downto 0) := x"C000";

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.