Skip to content
Snippets Groups Projects
Commit 40ca2b9b authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Merge branch 'L2SDP-713' into 'master'

added sync retention to dp_packet_merge

Closes L2SDP-713

See merge request desp/hdl!235
parents 7780aac0 8972d0e1
No related branches found
No related tags found
1 merge request!235added sync retention to dp_packet_merge
Pipeline #28414 passed
......@@ -201,6 +201,7 @@ ARCHITECTURE rtl OF dp_packet_merge IS
pkt_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
align_cnt : NATURAL RANGE 0 TO g_nof_pkt+1;
busy : STD_LOGIC;
sync : STD_LOGIC;
src_out : t_dp_sosi;
END RECORD;
......@@ -324,9 +325,17 @@ BEGIN
IF snk_in.sop = '1' THEN
IF r.pkt_cnt = 0 THEN
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.
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;
......@@ -359,6 +368,7 @@ BEGIN
v.pkt_cnt := 0;
v.align_cnt := 0;
v.busy := '0';
v.sync := '0';
v.src_out := c_dp_sosi_rst;
END IF;
......
......@@ -238,9 +238,6 @@ BEGIN
proc_dp_verify_data("verify_snk_in.bsn", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.bsn, prev_verify_snk_in.bsn);
proc_dp_verify_data("verify_snk_in.channel", c_rl, c_unsigned_0, TO_UNSIGNED(c_verify_data_gap,32), clk, verify_en_sop, verify_snk_out.ready, verify_snk_in.sop, verify_snk_in.channel, prev_verify_snk_in.channel);
-- Verify that the output sync occurs when expected
proc_dp_verify_sync(c_sync_period, c_sync_offset, clk, verify_en_sop, verify_snk_in.sync, verify_snk_in.sop, verify_snk_in.bsn);
-- Verify output packet ctrl
proc_dp_verify_sop_and_eop(clk, verify_snk_in.valid, verify_snk_in.sop, verify_snk_in.eop, verify_hold_sop);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment