From 5d70f6e040e1a13c3e785501aa887fc6f728f441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Bron=C3=A8s?= <romain.brones@synchrotron-soleil.fr> Date: Wed, 31 May 2023 16:10:45 +0200 Subject: [PATCH] fix(mmul): Changeorder of mm coefs All x then all y coefs --- hdl/matrix_mul.vhd | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/hdl/matrix_mul.vhd b/hdl/matrix_mul.vhd index e29edbb..dacbc77 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; -- GitLab