mikrocontroller.net

Forum: FPGA, VHDL & Co. Kürzel für Dezimalzahl in VHDL


Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr,

wenn ich eine Hexadezimalzahl in VHDL einem Signal zuweisen will dann
mache ich ja...

hex <= x"FF";

wie funktioniert das bei einer Dezimalzahl, z.B. 99???

Danke

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, natürlich

hex(255 downto 0) <= x"FF";

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
direkt: garnicht, weil eine Dezimalzahl keine bestimmte Zahl an bits
hat. Du musst sie konvertieren, z.b. wenn du eine 32bit Variable
(signal asd: std_logic_vector(31 downto 0)) hast:

asd <= std_logic_vector(to_unsigned(99,32));

dabei gibt der zweite Parameter von to_unsigned an, wieviel Bits das
Ziel hat.
Wenn das ganze im signed Format abgespeichert werden soll, dann
to_signed statt to_unsigned. Alles in der Bibliothek ieee.numeric_std
enthalten.

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich gehe mal davon aus, dass Dein Signal vom Typ
std_logic_vector ist, dann könntest Du z.B. schreiben:

signal my_signal : std_logic_vector(7 downto 0);
constant DezimalZahl : integer := 123; -- Beispiel

....

my_signal <= conv_std_logic_vector(DezimalZahl, my_signal'LENGTH);

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dankeschön

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, und was ich wenn ich sowas hab...

test_signal(1399 downto 0) <= ( 15, -- Dezimalzahl 1
                                99, -- Dezimalzahl 2
                                x"AB", -- Kommentar
                                17, -- Dezimalzahl 3
usw.
                                25); -- Dezimalzahl n

Wie setzt man sowas am besten um?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, je nachdem wie lange deine einzelnen Dezimalzahlen sind. Könntest
zB machen:

test_signal(1399 downto 0) <= std_logic_vector(to_unsigned(15,32)) &
std_logic_vector(to_unsigned(99,32)) & x"AB" &
std_logic_vector(to_unsigned(17,32)) & ... &
std_logic_vector(to_unsigned(25,32));

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das werde ich mal probieren.

Nun noch eine andere Frage dazu. Das sollte mal auf einem CPLD laufen.
Brauch das mehr Platz als wenn ich schreiben würde...

test_signal(1399 downto 0) <= "00001111" & "01100011" & x"AB"
&...

Nach meiner Einschätzung ja nicht. Lieg ich da falsch?

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.