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
sowas hier?
1 | use ieee.numeric_std.all; |
2 | |
3 | dezimal <= to_integer(unsigned(Vektor)); |
ja sowas meinte ich, danke :) noch eine frage (bin nicht sehr versiert in sachen vhdl) wofür steht das unsigned?
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(...).
Der letzte Satz sollte natürlich: "Für die Umwandlung in integer muss richtig umgewandelt werden mit to_integer(...)." heissen
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
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 ;) .
Vielen Dank, auch für die schnelle Hilfe. Nicht das ich daran gezweifelt hätte, aber klappt einwndfrei. :-)
Hallo Meine Frage wäre, wie ich einen 11Bit Vecor in einen 19Bit umwandle? Grüße
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;
@ 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.
Und wie zieht man nun wieder 9 Bit ab? Ich muss danach einen 19Bit Vektor in 11 Bit umwandeln.
allo Im Übrigen funktioniert das mit bdi<="00000000"&BORDER(i); nicht, obwohl genaut 20Bit rauskommen sollten... Grüße
Sorry, jetzt klappt es irgendwie wieder. Aber die Umwandlung in 11 Bit weiss ich nicht.
> 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.
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.