1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.std_logic_misc.all;
|
4 | use ieee.std_logic_arith.all;
|
5 | use ieee.std_logic_unsigned.all;
|
6 | use ieee.numeric_std.all;
|
Viel hilft viel oder wie?
Lies mal: Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"
Du hast doppelte Definitionen, die der Compiler anmault. Also schreib
das:
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.numeric_std.all;
|
Die numeric_std bietet alles, was du brauchst:
http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html
Du hast noch einen Breitenfehler:
"line 33: Width mismatch. <out_data> has a width of 4 bits but assigned
expression is 3-bit wide."
3Bit + 3Bit ergeben weiterhin 3 Bit, du mußt vor der Addition noch ein
Bit anhängen:
1 | out_data <= std_logic_vector(resize(unsigned(data_in1),4) + resize(unsigned(data_in2),4));
|
oder gleich den Weg über Integer gehen:
1 | out_data <= std_logic_vector(to_unsigned(to_integer(unsigned(data_in1)) + to_integer(unsigned(data_in2)),4));
|
Übrigens:
Synplify (Lattice) bringt keinen Fehler trotz der (zu)vielen Libs...
;-)