Nochmal Frage zu Typ-Umwandlung

Gast #252145
Lesenswert?
• ▲
▼
Hallo Leute,

ich hatte vor einiger Zeit schonmal nachgefragt wegen der möglichkeit
einen signed-vektor in einen std_logic_vector umzuwandeln, hatte bis
jetzt aber noch keinen erfolg bzw. noch keine Antwort erhalten. Langsam
weiß ich aber auch nicht mehr weiter.
Mein Problem ist an sich ganz einfach. Ich möchte einen signed-vektor
den ich für arithmetische Zwecke habe als std_logic-vektor (also
unsigned) ansprechen (speziell in der entity, und intern soll es dann
als signed dargestellt werden).

bsp :

entity dsp_alu
   port (clock : in std_logic;
         ...
         dataout1 : out std_logic_vector (31 downto 0);

         ...
         datain1  : in  std_logic_vector (31 downto 0);
        );
end entity;

...

architecture behave of dsp_alu is

  signed dsp_acc : signed (31 downto 0);

begin

  dataout1 <= dsp_acc; -- funzt net

  ...

  dsp_acc <= datain1; -- funzt auch net

end behave;


hat jemand eine idee wie man sowas löst ? kann ja eigentlich kein
problem sein oder seh ich das falsch ?

danke schonmal im voraus
gruß

rene
Gast #252147
Lesenswert?
• ▲
▼
hallo fpga-user,

ich hatte das schonmal verwendet, aber dann in zusammenhang damit das
ich teile des signed vektors in einen unsigned kopieren wollte. da ging
es darum das ich den 32-bit signed vektor 8-bit weise unsigned
angesprechen wollte (für ein späteres debug-interface, also schreibend
und lesend). da kam er aus dem meckern nicht mehr raus. von wegen
ungültige typ-konversion. kann es sein das man nur komplette vektoren
konvertieren kann ?

das ganze sah dann so aus :

entity ...
   port (...
         dsp_data8b : out std_logic_vector (7 downto 0);
        );
end entity;

...
  signal dsp_reg1 : signed (31 downto 0);

...

  process...
  ...
    case regnum_8bit is
      when "0000" => dsp_data8b <= std_logic_vector (dsp_reg1) (31
downto 24);
      when "0001" => dsp_data8b <= std_logic_vector (dsp_reg1) (23
downto 16);
      when "0010" => dsp_data8b <= std_logic_vector (dsp_reg1) (15
downto  8);
      when "0011" => dsp_data8b <= std_logic_vector (dsp_reg1) ( 7
downto  0);
   ...

oder ist das ein syntaktischer fehler, von wegen das std_logic_vector
(x) ( y downto z) nicht funktioniert ?

vielen dank schonmal
rene

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