Nochmal Frage zu Typ-Umwandlung

Gast #252145
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
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
Gast
aaaarrrrgggghhhh...

bitte anstellen zum schlagen. *mann, bin ich doof.

danke fpga-user.
jetzt sollte meinen ersten dsp-entwicklungsversuchen nichts mehr im
wege stehen.

gruß
rene

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.