diff --git a/hdl/matrix_mul.vhd b/hdl/matrix_mul.vhd index e29edbb5639fb9591c4e37901cc151cf8037a726..dacbc77ca2be5ba58b4139cfcd292ca799e38a28 100644 --- a/hdl/matrix_mul.vhd +++ b/hdl/matrix_mul.vhd @@ -142,11 +142,11 @@ begin ) port map( pi_clk_a => clk, - pi_en_a => mm_coef_i(2*I).en, - pi_we_a => mm_coef_i(2*I).we, - pi_addr_a => mm_coef_i(2*I).addr(C_W_MM_IDCNT-1 downto 0), - pi_data_a => mm_coef_i(2*I).data, - po_data_a => mm_coef_o(2*I).data, + pi_en_a => mm_coef_i(I).en, + pi_we_a => mm_coef_i(I).we, + pi_addr_a => mm_coef_i(I).addr(C_W_MM_IDCNT-1 downto 0), + pi_data_a => mm_coef_i(I).data, + po_data_a => mm_coef_o(I).data, pi_clk_b => clk, pi_en_b => '1', pi_we_b => '0', @@ -162,11 +162,11 @@ begin ) port map( pi_clk_a => clk, - pi_en_a => mm_coef_i(2*I+1).en, - pi_we_a => mm_coef_i(2*I+1).we, - pi_addr_a => mm_coef_i(2*I+1).addr(C_W_MM_IDCNT-1 downto 0), - pi_data_a => mm_coef_i(2*I+1).data, - po_data_a => mm_coef_o(2*I+1).data, + pi_en_a => mm_coef_i(I+C_N_MM_PSC/2).en, + pi_we_a => mm_coef_i(I+C_N_MM_PSC/2).we, + pi_addr_a => mm_coef_i(I+C_N_MM_PSC/2).addr(C_W_MM_IDCNT-1 downto 0), + pi_data_a => mm_coef_i(I+C_N_MM_PSC/2).data, + po_data_a => mm_coef_o(I+C_N_MM_PSC/2).data, pi_clk_b => clk, pi_en_b => '1', pi_we_b => '0', @@ -204,11 +204,11 @@ begin p_rndsat:process(clk, rst_n) begin if rst_n = '0' then - matmult(2*I) <= (others => '0'); - matmult(2*I+1) <= (others => '0'); + matmult(I) <= (others => '0'); + matmult(I+C_N_MM_PSC/2) <= (others => '0'); elsif rising_edge(clk) then - matmult(2*I) <= f_resize_sat(f_resize_lsb(accu_x, C_W_MM_ACCU-C_N_MM_RND), C_W_MM); - matmult(2*I+1) <= f_resize_sat(f_resize_lsb(accu_y, C_W_MM_ACCU-C_N_MM_RND), C_W_MM); + matmult(I) <= f_resize_sat(f_resize_lsb(accu_x, C_W_MM_ACCU-C_N_MM_RND), C_W_MM); + matmult(I+C_N_MM_PSC/2) <= f_resize_sat(f_resize_lsb(accu_y, C_W_MM_ACCU-C_N_MM_RND), C_W_MM); end if; end process;