LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY synth; USE synth.vhdlsynth.all; ENTITY multiplier IS PORT ( clk : IN STD_LOGIC; -- Taktsignal load : IN STD_LOGIC; -- "Werte laden" Signal in_data_1 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 1. Faktor in_data_2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 2. Faktor ready : OUT STD_LOGIC; -- 1=Berechnung abgeschlossen out_data : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) -- Ergebnis ); END multiplier; ARCHITECTURE multiplier_arch OF multiplier IS SIGNAL add : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000"; -- Summand SIGNAL counter : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000"; -- verbleibende Additionen SIGNAL speicher : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000"; -- Zwischenergebnis BEGIN multiplication: PROCESS (clk) BEGIN IF clk'EVENT AND clk='1' THEN -- Werte laden IF counter > 0 THEN -- Berechnungsschritt speicher <= speicher + ("00000000" & add); counter <= counter-1; ELSE -- geladen wird nur, wenn keine Berechnung angestoßen wurde IF load='1' THEN speicher <= "0000000000000000"; -- um benötigte Taktzyklen zu minimieren: IF in_data_1