Erhard M. schrieb:
> Fehlermeldung: type conversion expression type cannot be determined
> uniquely
Das kommt davon:
> use IEEE.STD_LOGIC_ARITH.ALL;
> use IEEE.STD_LOGIC_UNSIGNED.ALL;
> use IEEE.NUMERIC_STD.ALL;
Du hast durch die beiden Artihmetikpackages doppelte Typ- und
Umwandlungsdefinitionen. Der Synopsys Simulator von
https://www.edaplayground.com sagt das dann auch recht klar:
1 | output <= STD_LOGIC_VECTOR(unsigned(arg2) sll to_integer(unsigned(arg1)...
|
2 | ^
|
3 | Identifier 'UNSIGNED' is not visible because it is ambiguous. Contending
|
4 | identifiers:
|
5 | NUMERIC_STD:UNSIGNED
|
6 | STD_LOGIC_ARITH:UNSIGNED
|
7 | The conflicting identifiers were introduced by USE clauses. See section 10.4
|
8 | of the VHDL LRM for further details.
|
Fazit: niemals beide Packages gleichzeitig einbinden. Nimm die
numeric_std. Die kann alles, was du brauchst:
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std
> Wie muss die Befehlszeile mit „sll“ korrekt lauten?
Nimm die numeric_std und shift_left(). Etwa so:
1 | output <= STD_LOGIC_VECTOR(shift_left(unsigned(arg2),to_integer(unsigned(arg1)));
|
BTW: die [vhdl]-Tags formatieren den Quelltext hübsch. Siehe
"Formatierung" über jeder Eingabebox gleich unter "Antwort schreiben -
Wichtige Regeln - erst lesen, dann posten!"...