Gast
#3779580
Ich möchte mehrere std_logic_vector (alle gleich breit) addieren und die Summe in einem entsprechend breiteren std_logic_vector speichern. Wie von Lothar Miller empfohlen sollen die Rechenoperationen mit der herstellerunabhängigen numeric-Bibliothek erfolgen. Mein Codeausschnitt hierfür: ---------------------------- USE ieee.numeric_std.ALL; SIGNAL a, b, c, d : std_logic_vector(3 DOWNTO 0); SIGNAL z : std_logic_vector(5 DOWNTO 0); z <= std_logic_vector(unsigned(a) + unsigned(b) + unsigned(c) + unsigned(d)); Damit erhalte ich mit Lattice Diamond folgende Fehlermeldung: "ERROR - CD297 : Width mismatch, location has width 6, value 4 Wenn ich noch mehr Typwandlungen durchführe, funktioniert es: z <= std_logic_vector(to_unsigned(to_integer(unsigned(a) + unsigned(b) + unsigned(c) + unsigned(d)), z'length)); Das sieht aber vor allem bei noch größeren Operationen, wie ich sie benötige, sehr unübersichtlich aus, daher die Frage, wie geht es "kürzer" bzw. "kompakter"? Ich freue mich über eure Rückmeldungen.