Forum: FPGA, VHDL & Co. Typen Konvertierung


von hans (Gast)


Lesenswert?

Moin,

ich habe hier gerade so ein Problem vor mir.

Beim versuch diese Zeile zu übersetzen kommt ein Fehler:
FATAL INTERNAL ERROR: FPGA library: HDLParsers:3329 - ... Line 165. 
Expression in type conversion to std_logic_vector has 2 possible 
definitions in this scope, for example, data_array  and 
std_logic_vector.
1
use.ieee.numeric_std.all
2
-- Hier liegt, glaube ich, das Problem : --
3
type data_array is array (0 to 2) of std_logic_vector(31 downto 0);
4
--------------------------------------------
5
6
signal a : signed(31 downto 0);
7
signal b : std_logic_vector(31 downto 0);
8
signal c : std_logic_vector(15 downto 0);
9
10
a <= signed(std_logic_vector(std_logic_vector(b(15 downto 0)) & std_logic_vector(c)));
11
-- auch probiert habe ich folgendes immer der gleiche Fehler
12
a <= signed(std_logic_vector(b(15 downto 0)) & std_logic_vector(c));
13
a <= signed(b(15 downto 0) & c);

Das Problem ist, so glaube ich, meine Type data_array. Es ist 
anscheinend nicht eindeutig das ich in der Zeile einen signed aus zwei 
std_logic_vector haben will. Wie schreibt man das richtig??


mfg
hans

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

hans schrieb:
> Das Problem ist, so glaube ich, meine Type data_array.
In diesen 2 Zeilen ist aber kein data_array zu finden...

Poste mal etwas mehr von deinem Code.
Evtl. kommt da wer mit der Zeilennummerierung durcheinander...

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

hans schrieb:

>
1
> -- auch probiert habe ich folgendes immer der gleiche Fehler
2
> a <= signed(b(15 downto 0) & c);
3
>

Probier mal
1
a <= signed(b(15 downto 0))  & signed (c);

Ich hatte schon öfter Probleme mit einem Concatenate in einer 
Typ-Konvertierung.


Tom

von hans (Gast)


Lesenswert?

@ Lothar Miller:

ne ist auch kein data_array vorhanden. Das nutz ich an anderen Stellen.
Trotzdem bezieht sich die Fehlermeldung auf data_array. Merkwürding 
!!??!!

--

Hat aber mit :
1
a <= signed(b(15 downto 0))  & signed (c);
funktioniert danke erstmal..

mfg

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.