Kürzel für Dezimalzahl in VHDL

Gast #387479
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.
Gast #387480
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);
Gast #387482
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?
Gast #387483
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));
Gast #387484
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren