diff --git a/libraries/base/dp/src/vhdl/dp_strobe_total_count.vhd b/libraries/base/dp/src/vhdl/dp_strobe_total_count.vhd index 5f05e64a48373ba8ad06ca1a1573faf837685ca5..3af79f73d603f7213c2cd4afb502b653521c62f1 100644 --- a/libraries/base/dp/src/vhdl/dp_strobe_total_count.vhd +++ b/libraries/base/dp/src/vhdl/dp_strobe_total_count.vhd @@ -26,8 +26,8 @@ -- * g_nof_counts >= 1, maximum c_nof_counts_max = 15 -- There are g_nof_counts in parallel, one clear that clears them all -- . count any strobe like e.g. sync, sop, valid, error flag, ... --- . MM read or write of clear registers clears all counter immediately, --- the clear data value is dont care. +-- . MM write of clear registers clears all counter immediately, the +-- clear data value is dont care. -- . the count clips at 2**g_count_w-1 in case of overflow when g_clip = -- TRUE, else it wraps and continues from 0. -- * g_count_w <= 64 @@ -130,7 +130,8 @@ BEGIN ASSERT g_nof_counts <= c_nof_counts_max REPORT "Too many counters to fit REGMAP." SEVERITY FAILURE; ASSERT g_count_w <= g_mm_w*2 REPORT "Too wide counter to fit REGMAP." SEVERITY FAILURE; - mm_cnt_clr <= (reg_mosi.rd OR reg_mosi.wr) WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = c_clear_adr ELSE '0' ; + -- Only clear on MM write, to allow MM read of all register fields without clear + mm_cnt_clr <= reg_mosi.wr WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = c_clear_adr ELSE '0' ; u_common_spulse : ENTITY common_lib.common_spulse PORT MAP (