@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS
pkt_cnt:NATURALRANGE0TOg_nof_pkt+1;
align_cnt:NATURALRANGE0TOg_nof_pkt+1;
busy:STD_LOGIC;
sync:STD_LOGIC;
src_out:t_dp_sosi;
ENDRECORD;
...
...
@@ -324,9 +325,17 @@ BEGIN
IFsnk_in.sop='1'THEN
IFr.pkt_cnt=0THEN
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.channel:=snk_in.channel;-- use channel of first packet for merged packet
v.sync:='0';-- reset captured sync.
IFsnk_in.sync='1'THEN
v.src_out.sync:='1';-- set out sync to '1' if this first block contains the sync.
ENDIF;
ELSE
IFsnk_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