From 77e3ffd499784b25ee9600690c5af5551e6f7a64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Romain=20Bron=C3=A8s?= <romain.brones@synchrotron-soleil.fr>
Date: Tue, 21 May 2024 14:34:52 +0200
Subject: [PATCH] feat: Add sequence offset

Static numbering offset for the FA sequence.
---
 hdl/combpm_protocol_electron.vhd | 3 ++-
 hdl/top_combpm_electron.vhd      | 1 +
 rdl/combpm.rdl                   | 6 ++++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/hdl/combpm_protocol_electron.vhd b/hdl/combpm_protocol_electron.vhd
index aab0390..3376a49 100644
--- a/hdl/combpm_protocol_electron.vhd
+++ b/hdl/combpm_protocol_electron.vhd
@@ -26,6 +26,7 @@ entity combpm_protocol_electron is
 
         -- Status and control interface
         soft_reset              : in std_logic;                      -- Reset all counters.
+        seq_offset              : in signed(7 downto 0);             -- Sequence numbering offset
         frame_seq_cnt           : out std_logic_vector(15 downto 0); -- Number of frame in last sequence.
         frame_valid_cnt         : out std_logic_vector(31 downto 0); -- Count of valid frames.
         frame_invalid_cnt       : out std_logic_vector(31 downto 0); -- Count of invalid frames.
@@ -292,7 +293,7 @@ begin
                 m_axis_tdata_posy   <= packet_ypos;
                 m_axis_tdata_bpmid  <= "000000" & packet_bpmid;
                 m_axis_tuser_mcts   <= mc_time;
-                m_axis_tdata_faseq  <= packet_timestamp;
+                m_axis_tdata_faseq  <= std_logic_vector(signed(packet_timestamp)+seq_offset);
 
                 -- AXIS TVALID
                 m_axis_tvalid       <= not soft_reset;
diff --git a/hdl/top_combpm_electron.vhd b/hdl/top_combpm_electron.vhd
index f24bfaa..78fc3b9 100644
--- a/hdl/top_combpm_electron.vhd
+++ b/hdl/top_combpm_electron.vhd
@@ -271,6 +271,7 @@ begin
 
         mc_time                 => mc_time,
         soft_reset              => addrmap_r.RESET.SOFTRESET.data(0),
+        seq_offset              => signed(addrmap_r.SEQ_OFFSET.data),
         frame_seq_cnt           => frame_seq_cnt,
         frame_valid_cnt         => frame_valid_cnt,
         frame_invalid_cnt       => frame_invalid_cnt,
diff --git a/rdl/combpm.rdl b/rdl/combpm.rdl
index 7910dda..f4ab94f 100644
--- a/rdl/combpm.rdl
+++ b/rdl/combpm.rdl
@@ -104,4 +104,10 @@ addrmap combpm {
         mementries = 2**`C_W_ADDR_TABLE;
     } FILTERTABLE;
 
+    reg {
+        desc="Sequence numbering offset";
+        desyrdl_data_type="int8";
+        field {sw = rw; hw = r;} data[8]=0;
+    } SEQ_OFFSET;
+
 };
-- 
GitLab