From 2a5452a55fe9602d573cbae388369f76efef3109 Mon Sep 17 00:00:00 2001 From: Kirika Uchida <kirika.uchida@cern.ch> Date: Mon, 10 Jul 2023 22:52:40 +0100 Subject: [PATCH] added aditional condition for bcid check --- common/firmware/hdl/EcalDataAggregator.vhd | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/common/firmware/hdl/EcalDataAggregator.vhd b/common/firmware/hdl/EcalDataAggregator.vhd index 367aaca7..a323d7e2 100644 --- a/common/firmware/hdl/EcalDataAggregator.vhd +++ b/common/firmware/hdl/EcalDataAggregator.vhd @@ -29,6 +29,7 @@ architecture rtl of EcalDataAggregator is type tBcIdPipe is array (integer range 0 to 8) of std_logic_vector(11 downto 0); signal bcid_p : tBcIdPipe; + signal last_valid_bcid : std_logic_vector(11 downto 0); begin @@ -80,10 +81,19 @@ begin data_out(0).start <= '1'; end if; - if unsigned(bcid_p(0)) = unsigned(bcid_p(8)) + 1 or (unsigned(bcid_p(0)) = 0 and unsigned(bcid_p(8)) = 3563) then - timer := 0; - ecal_data_reg <= ecal_data_p; - valid_reg <= '1'; + if unsigned(bcid_p(0)) = unsigned(bcid_p(8)) + 1 or (unsigned(bcid_p(0)) = 0 and unsigned(bcid_p(8)) = 3563) then + if not ( valid_reg = '1' and (bcid_p(8) /= last_valid_bcid) ) then + timer := 0; + ecal_data_reg <= ecal_data_p; + last_valid_bcid <= bcid_p(0); + valid_reg <= '1'; + else + if timer = 7 then + timer := 0; + else + timer := timer + 1; + end if; + end if; elsif timer = 7 then timer :=0; valid_reg <= '0'; -- GitLab