diff --git a/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd b/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd index 9cd5bf76ee63f3a0911f7d3a7b29101764502354..448680abac93e80bc994dc19b6e6d7b6f0a84e2c 100644 --- a/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd +++ b/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd @@ -102,10 +102,6 @@ ARCHITECTURE rtl OF dp_block_validate_bsn_at_sync IS SIGNAL count_reg : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0) := (OTHERS=>'0'); SIGNAL mm_cnt_clr : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); - SIGNAL mm_cnt_clr_reg : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); - SIGNAL mm_cnt_clr_done : STD_LOGIC; - SIGNAL cnt_clr_en : STD_LOGIC; - SIGNAL cnt_clr_dat : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); SIGNAL cnt_clr : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); SIGNAL cnt_sync : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0); SIGNAL cnt_sync_en : STD_LOGIC; @@ -121,27 +117,20 @@ ARCHITECTURE rtl OF dp_block_validate_bsn_at_sync IS SIGNAL block_sosi : t_dp_sosi; BEGIN - - mm_cnt_clr_reg <= (OTHERS => '0') WHEN mm_rst = '1' ELSE mm_cnt_clr WHEN rising_edge(mm_clk) ELSE mm_cnt_clr_reg; - gen_err_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE - mm_cnt_clr(I) <= '1' WHEN reg_mosi.rd = '1' AND TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE - '0' WHEN mm_cnt_clr_done = '1' ELSE mm_cnt_clr_reg(I); + + gen_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE + mm_cnt_clr(I) <= reg_mosi.rd WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE '0' ; + u_common_spulse : ENTITY common_lib.common_spulse + PORT MAP ( + in_rst => mm_rst, + in_clk => mm_clk, + in_pulse => mm_cnt_clr(I), + out_rst => dp_rst, + out_clk => dp_clk, + out_pulse => cnt_clr(I) + ); END GENERATE; - u_common_reg_cross_cnt_clr : ENTITY common_lib.common_reg_cross_domain - PORT MAP ( - in_rst => mm_rst, - in_clk => mm_clk, - in_new => reg_mosi.rd, - in_dat => mm_cnt_clr, - in_done => mm_cnt_clr_done, - out_rst => dp_rst, - out_clk => dp_clk, - out_dat => cnt_clr_dat, - out_new => cnt_clr_en - ); - cnt_clr <= cnt_clr_dat WHEN cnt_clr_en = '1' ELSE (OTHERS => '0'); - -- discarded counter cnt_discarded_en <= '1' WHEN in_sosi.sync = '1' AND bsn_ok = '0' ELSE '0'; u_discarded_counter : ENTITY common_lib.common_counter diff --git a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd index aed70a11ddc2552e71d17770c4834b6e546b1dd6..e1319cfe169bb48fed5779cd1fb224f44f31a50c 100644 --- a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd +++ b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd @@ -116,10 +116,6 @@ ARCHITECTURE rtl OF dp_block_validate_err IS SIGNAL count_reg : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0) := (OTHERS=>'0'); SIGNAL mm_cnt_clr : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); - SIGNAL mm_cnt_clr_reg : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0) := (OTHERS => '0'); - SIGNAL mm_cnt_clr_done : STD_LOGIC; - SIGNAL cnt_clr_en : STD_LOGIC; - SIGNAL cnt_clr_dat : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); SIGNAL cnt_clr : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); SIGNAL cnt_blk : STD_LOGIC_VECTOR(g_cnt_w-1 DOWNTO 0); SIGNAL cnt_blk_en : STD_LOGIC; @@ -141,26 +137,19 @@ ARCHITECTURE rtl OF dp_block_validate_err IS BEGIN - mm_cnt_clr_reg <= (OTHERS => '0') WHEN mm_rst = '1' ELSE mm_cnt_clr WHEN rising_edge(mm_clk) ELSE mm_cnt_clr_reg; - gen_err_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE - mm_cnt_clr(I) <= '1' WHEN reg_mosi.rd = '1' AND TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE - '0' WHEN mm_cnt_clr_done = '1' ELSE mm_cnt_clr_reg(I); + gen_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE + mm_cnt_clr(I) <= reg_mosi.rd WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE '0' ; + u_common_spulse : ENTITY common_lib.common_spulse + PORT MAP ( + in_rst => mm_rst, + in_clk => mm_clk, + in_pulse => mm_cnt_clr(I), + out_rst => dp_rst, + out_clk => dp_clk, + out_pulse => cnt_clr(I) + ); END GENERATE; - u_common_reg_cross_cnt_clr : ENTITY common_lib.common_reg_cross_domain - PORT MAP ( - in_rst => mm_rst, - in_clk => mm_clk, - in_new => reg_mosi.rd, - in_dat => mm_cnt_clr, - in_done => mm_cnt_clr_done, - out_rst => dp_rst, - out_clk => dp_clk, - out_dat => cnt_clr_dat, - out_new => cnt_clr_en - ); - cnt_clr <= cnt_clr_dat WHEN cnt_clr_en = '1' ELSE (OTHERS => '0'); - -- block counter cnt_blk_en <= snk_in.eop WHEN UNSIGNED(cnt_blk) < UNSIGNED(c_max_cnt) ELSE '0'; u_blk_counter : ENTITY common_lib.common_counter