Skip to content
Snippets Groups Projects

added sync retention to dp_packet_merge

Merged Reinier van der Walle requested to merge L2SDP-713 into master
2 files
+ 11
4
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS
@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS
pkt_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
pkt_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
align_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
align_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
busy : STD_LOGIC;
busy : STD_LOGIC;
 
sync : STD_LOGIC;
src_out : t_dp_sosi;
src_out : t_dp_sosi;
END RECORD;
END RECORD;
@@ -324,9 +325,17 @@ BEGIN
@@ -324,9 +325,17 @@ BEGIN
IF snk_in.sop = '1' THEN
IF snk_in.sop = '1' THEN
IF r.pkt_cnt = 0 THEN
IF r.pkt_cnt = 0 THEN
v.src_out.sop := '1';
v.src_out.sop := '1';
v.src_out.sync := snk_in.sync; -- only preserve sync when sync interval and nof_pkt interval are aligned, else sync gets lost but could still be recovered from BSN
v.src_out.sync := r.sync; -- use sync from previous merged packet if it occurred on pkt_cnt /= 0.
v.src_out.bsn := snk_in.bsn; -- use BSN of first packet for merged packet
v.src_out.bsn := snk_in.bsn; -- use BSN of first packet for merged packet
v.src_out.channel := snk_in.channel; -- use channel of first packet for merged packet
v.src_out.channel := snk_in.channel; -- use channel of first packet for merged packet
 
v.sync := '0'; -- reset captured sync.
 
IF snk_in.sync = '1' THEN
 
v.src_out.sync := '1'; -- set out sync to '1' if this first block contains the sync.
 
END IF;
 
ELSE
 
IF snk_in.sync = '1' THEN
 
v.sync := '1'; -- Capture sync if it occurs on a pkt_cnt /= 0 so we can use it in the next merged packet
 
END IF;
END IF;
END IF;
END IF;
END IF;
@@ -359,6 +368,7 @@ BEGIN
@@ -359,6 +368,7 @@ BEGIN
v.pkt_cnt := 0;
v.pkt_cnt := 0;
v.align_cnt := 0;
v.align_cnt := 0;
v.busy := '0';
v.busy := '0';
 
v.sync := '0';
v.src_out := c_dp_sosi_rst;
v.src_out := c_dp_sosi_rst;
END IF;
END IF;
Loading