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


von Bustle (Gast)


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

von Bustle (Gast)


Lesenswert?

sorry, natürlich

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

von Matthias (Gast)


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.

von FPGA-User (Gast)


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);

von Bustle (Gast)


Lesenswert?

Dankeschön

von Bustle (Gast)


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?

von Matthias (Gast)


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));

von Bustle (Gast)


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?

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.