mikrocontroller.net

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


Autor: Paradigma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sowas hier?
use ieee.numeric_std.all;

dezimal <= to_integer(unsigned(Vektor));

Autor: Paradigma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja sowas meinte ich, danke :)

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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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(...).

Autor: T.M. (Gast)
Datum:

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

Autor: hosche (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias F. (flint)
Datum:

Bewertung
0 lesenswert
nicht 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 ;) .

Autor: hosche (Gast)
Datum:

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

Autor: Ranjet Kuruvilla (Gast)
Datum:

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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Ranjet Kuruvilla (Gast)
> wie ich einen 11Bit Vecor in einen 19Bit umwandle?
Oder arithmetisch korrekt:
use ieee.numeric_std.all;
dezimal <= std_logic_vector(to_unsigned(to_integer(unsigned(Vektor)),dezimal'length));
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.

Autor: Ranjet Kuruvilla (Gast)
Datum:

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

Autor: Ranjet Kuruvilla (Gast)
Datum:

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

Autor: Ranjet Kuruvilla (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mac4ever (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar Miller:

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

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

Duke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.