diff --git a/part3/firmware/payload/firmware/hdl/payload.vhd b/part3/firmware/payload/firmware/hdl/payload.vhd index caa4a78212014406ca8b5554368a87d7bec25bad..ff9db1dac08834961ec3da04e5877804d625f66f 100644 --- a/part3/firmware/payload/firmware/hdl/payload.vhd +++ b/part3/firmware/payload/firmware/hdl/payload.vhd @@ -34,10 +34,12 @@ end emp_payload; architecture rtl of emp_payload is - signal X_scaled : std_logic_vector(895 downto 0) := (others => '0'); - signal X_scaled_vld : std_logic := '0'; - signal y : std_logic_vector(12 downto 0) := (others => '0'); - signal y_vld : std_logic := '0'; + signal X_scaled : std_logic_vector(895 downto 0) := (others => '0'); + signal X_scaled_vld : std_logic := '0'; + signal X_scaled_delay : std_logic_vector(895 downto 0) := (others => '0'); + signal X_scaled_vld_delay : std_logic := '0'; + signal y : std_logic_vector(12 downto 0) := (others => '0'); + signal y_vld : std_logic := '0'; begin @@ -50,12 +52,16 @@ begin X_vld => X_scaled_vld ); + -- add a buffer between the scaler and NN to ease timing + X_scaled_delay <= X_scaled when rising_edge(clk); + X_scaled_vld_delay <= X_scaled_vld when rising_edge(clk); + -- run the NN NNInstance : entity work.NNWrapper port map( clk => clk_p, - X_scaled => X_scaled, - X_vld => X_scaled_vld, + X_scaled => X_scaled_delay, + X_vld => X_scaled_vld_delay, y => y, y_vld => y_vld );