Forum: FPGA, VHDL & Co. Integer nach std_logic_vector


von Micha (Gast)


Lesenswert?

Ich habe vor kurzem begonnen, mich mit VHDL zu beschäftigen. Ich habe
jetzt ein Verständnisproblem.

Ich habe in einen Process eine Variable vom Typ "Integer range 0 to
255". Wie kann ich diese auf einen Port vom Typ "std_logic_vector(7
downto 0) ausgeben? Alle 256 Möglichkeiten über if oder case
abzufragen, scheint mir nicht der richtige Weg zu ein.

von Ssss S. (sssssss)


Lesenswert?

output <= conv_std_logic_vector(int,anzahlbits)

also für varabc 0...255:
output <= conv_std_logic_vector(varabc,8);

Gruss,
Simon

von Christian (Gast)


Lesenswert?

Hallo, probier mal vektor <=
conv_std_logic_vector(integerwert,vektorbreite)


Mfg
Christian

von Christian (Gast)


Lesenswert?

Da war wohl wer schneller

von Klaus F. (kfalser)


Lesenswert?

Sauberer ist es das "numeric_std" package zu verwenden und die
integer zahl zuerst mit

u = TO_UNSIGNED(zahl, 8)

in einen UNSIGNED Typ umzuwandeln.
Diesen kann man dann mit einem cast auf std_logic_vector wandeln.

Allgemein wird empfohlen das std_logic_arith package nicht mehr zu
verwenden.
Meiner Meinung nach ist bei der Verwendung der conv_std_logic_vector()
nicht sicher was mit dem Vorzeichenbit passiert, während man bei den
Typen SIGNED und UNSIGNED genau weiss, ob sie ein Vorzeichenbit haben
oder nicht.

Grüße
Klaus

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.