Gast
#1515756
Hallo, ich habe ein Problem und zwar möchhte ich eine Addition durchführen, in der ein Summand unsigned und der andere signed ist. Auf dieser Seite hab ich unter Rechnen in VHDL folgendes gefunden >signal x: unsigned(7 downto 0); -- Zahlenbereich: 0 bis 2**8-1 >signal y: signed(7 downto 0); -- Zahlenbereich: -2**7 bis 2**7-1 >... >x <= x + 1; >y <= x + y; Wenn ich dies Implementiere kommt immer der Fehler "Found 0 definitions for operator "+"... Wenn ich beide Summanden und die Summe signed ODER unsigned mache, funktioniert es. Ich wurde aber gerne rechnen: signed = unsigned + signed, wie oben ja zu sehen ist und funktionieren sollte. Was mache ich falsch? Hier mal mein Codebeispiel library IEEE; use IEEE.STD_LOGIC_1164.ALL; --use IEEE.STD_LOGIC_ARITH.ALL; --use IEEE.STD_LOGIC_UNSIGNED.ALL; use ieee.numeric_std.all; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity top is port ( CLK : in std_logic ); end top; architecture Behavioral of top is signal x : unsigned(7 downto 0) := (others => '0'); signal y : signed(7 downto 0) := (others => '0'); begin process begin wait until rising_edge(CLK); y <= x + y; end process; end Behavioral; Wie gesagt mache ich x signed oder y unsigned funktioniert es, ansonsten der Fehler. Danke für hilfe