Forum: FPGA, VHDL & Co. vhdl: std_logic_vector in Dezimalzahl umwandeln


von Paradigma (Gast)


Lesenswert?

ich weiß zwar, wie man eine dezimalzahl in einen Standart Logic Vector 
umwandelt, aber gibt es davon auch die Umkehrfunktion?

Ich hoffe, ihr könnt mir helfen!

mfg

von T.M. (Gast)


Lesenswert?

sowas hier?
1
use ieee.numeric_std.all;
2
3
dezimal <= to_integer(unsigned(Vektor));

von Paradigma (Gast)


Lesenswert?

ja sowas meinte ich, danke :)

noch eine frage (bin nicht sehr versiert in sachen vhdl)
wofür steht das unsigned?

von T.M. (Gast)


Lesenswert?

Für einen Vektor, der als vorzeichenlose Zahl interpretiert wird, signed 
im Gegensatz wird als vorzeichenbehaftete Zahl interpretiert. Es sind 
trotzdem noch Vektoren, deshalb nur der Cast unsigned(Vektor). Für die 
Umwandlung in integer muss richtig umgewandelt werden mit 
to_unsigned(...).

von T.M. (Gast)


Lesenswert?

Der letzte Satz sollte natürlich: "Für die
Umwandlung in integer muss richtig umgewandelt werden mit
to_integer(...)." heissen

von hosche (Gast)


Lesenswert?

Hi ihr,

mich würde die andere Richtung interessieren:

Wie mach ich aus nem Integer nen std_logic_vector?
Genaugenommen hab ich ne variable integer range 0 to 255 und will den 
Wert in einen std_logic_vector(7 downto 0) haben.


MfG

Hosche

von Matthias F. (flint)


Lesenswert?

Ich mach das, unter Verwendung von numeric_std immer so:

x <= std_logic_vector(to_unsigned(y))

oder

x <= std_logic_vector(to_signed(y))

. Dass es vorzeichenbehaftete Werte auch gibt sollte man grad bei 
Integers nicht vergessen ;) .

von hosche (Gast)


Lesenswert?

Vielen Dank, auch für die schnelle Hilfe.
Nicht das ich daran gezweifelt hätte, aber klappt einwndfrei. :-)

von Ranjet Kuruvilla (Gast)


Lesenswert?

Hallo
Meine Frage wäre, wie ich einen 11Bit Vecor in einen 19Bit umwandle?
Grüße

von Jan M. (mueschel)


Lesenswert?

Was hat deine Frage mit diesem alten Thread zu tun?

> wie ich einen 11Bit Vecor in einen 19Bit umwandle?

Einfach links oder rechts Nullen oder Einsen anhängen, z.B. so:
vec19 <= "00000000" & vec11;

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


Lesenswert?

@ Ranjet Kuruvilla (Gast)
> wie ich einen 11Bit Vecor in einen 19Bit umwandle?
Oder arithmetisch korrekt:
1
use ieee.numeric_std.all;
2
dezimal <= std_logic_vector(to_unsigned(to_integer(unsigned(Vektor)),dezimal'length));
3
dezimal <= std_logic_vector(to_signed(to_integer(signed(Vektor)),dezimal'length));
Na, das hat was... ;-)


Wozu so einen Zombie-Fred wieder aufheizen? Wer dir hier antworten will, 
muß erst noch das ganze alte Zeug durchlesen. Das ist meist sinnlos.

von Ranjet Kuruvilla (Gast)


Lesenswert?

Und wie zieht man nun wieder 9 Bit ab?
Ich muss danach einen 19Bit Vektor in 11 Bit umwandeln.

von Ranjet Kuruvilla (Gast)


Lesenswert?

allo
Im Übrigen funktioniert das mit
bdi<="00000000"&BORDER(i);
nicht, obwohl genaut 20Bit rauskommen sollten...
Grüße

von Ranjet Kuruvilla (Gast)


Lesenswert?

Sorry, jetzt klappt es irgendwie wieder.
Aber die Umwandlung in 11 Bit weiss ich nicht.

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


Lesenswert?

> Aber die Umwandlung in 11 Bit weiss ich nicht.
So klappts:
vec11 <= vec19(10 downto 0);
Aber jetzt lies mal erst in Ruhe das erste Kapitel deines VHDL-Buches 
durch.

von mac4ever (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab mir mal erlaubt eine Reference Card anzuhängen :)
Dort sind alle vordefinierten Datentypen und Konvertierungsfunktionen 
paketspezifisch aufgelistet. So spart man sich das ewige Gesuche!

Schönen Sonntagnachmittag

von Duke Scarring (Gast)


Lesenswert?

@Lothar Miller:

Deine Würmer müssen nicht sein:
1
use ieee.numeric_std.all;
2
dezimal <= std_logic_vector( resize( unsigned(Vektor), dezimal'length));
3
dezimal <= std_logic_vector( resize(   signed(Vektor), dezimal'length));

Siehe auch hier:
http://dz.ee.ethz.ch/support/ic/hdl/vhdlsources.en.html

Duke

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.