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
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.
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);
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?
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));
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.