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

Added hdr_fields_raw_arr to also output e.g. bsn during entiry packet, instead of only at sop.

parent 89951fb7
No related branches found
No related tags found
No related merge requests found
......@@ -51,7 +51,8 @@ ENTITY dp_offload_rx IS
src_out_arr : OUT t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0);
src_in_arr : IN t_dp_siso_arr(g_nof_streams-1 DOWNTO 0);
hdr_fields_out_arr : OUT t_slv_1024_arr(g_nof_streams-1 DOWNTO 0) --Valid at src_out_arr(i).sop.
hdr_fields_out_arr : OUT t_slv_1024_arr(g_nof_streams-1 DOWNTO 0); -- Valid at src_out_arr(i).sop, use for sosi.sync
hdr_fields_raw_arr : OUT t_slv_1024_arr(g_nof_streams-1 DOWNTO 0) -- Valid at src_out_arr(i).sop and beyond, use for sosi.bsn
);
END dp_offload_rx;
......@@ -187,11 +188,13 @@ BEGIN
nxt_reg_dp_field_blk_slv_out(i) <= dp_field_blk_slv_out(i) WHEN dp_field_blk_slv_out_val(i) = '1' ELSE reg_dp_field_blk_slv_out(i);
END GENERATE;
-- Put the fields on the entity output at src_out.sop
-- Put the fields that can only be active at sop on the entity output at src_out.sop (e.g. sosi sync field)
gen_hdr_fields_out_arr : FOR i IN 0 TO g_nof_streams-1 GENERATE
hdr_fields_out_arr(i) <= reg_dp_field_blk_slv_out(i) WHEN dp_tail_remove_src_out_arr(i).sop='1' ELSE (OTHERS=>'0');
END GENERATE;
-- Put the fields that can be valid during entire packet on the entity combinatorially (e.g. all sosi slv fields)
hdr_fields_raw_arr <= reg_dp_field_blk_slv_out;
---------------------------------------------------------------------------------------
-- MM control & monitoring
---------------------------------------------------------------------------------------
......
......@@ -151,6 +151,7 @@ ARCHITECTURE tb OF tb_dp_concat_field_blk IS
SIGNAL dp_offload_rx_src_in_arr : t_dp_siso_arr(0 DOWNTO 0);
SIGNAL rx_hdr_fields_out_arr : t_slv_1024_arr(0 DOWNTO 0);
SIGNAL rx_hdr_fields_raw_arr : t_slv_1024_arr(0 DOWNTO 0);
SIGNAL reg_dp_offload_rx_hdr_dat_mosi : t_mem_mosi := c_mem_mosi_rst;
SIGNAL reg_dp_offload_rx_hdr_dat_miso : t_mem_miso;
......@@ -243,7 +244,7 @@ BEGIN
-- . after the test
verify_last_snk_in_evt.sync <= last_snk_in_evt;
verify_last_snk_in_evt.bsn <= '0'; -- in rx_hdr_fields_out_arr from dp_offload_rx output the bsn is only valid at sop
verify_last_snk_in_evt.bsn <= last_snk_in_evt; -- thanks to using rx_hdr_fields_raw_arr for bsn field
verify_last_snk_in_evt.data <= last_snk_in_evt;
verify_last_snk_in_evt.re <= '0';
verify_last_snk_in_evt.im <= '0';
......@@ -374,14 +375,15 @@ BEGIN
src_out_arr => dp_offload_rx_src_out_arr,
src_in_arr => dp_offload_rx_src_in_arr,
hdr_fields_out_arr => rx_hdr_fields_out_arr
hdr_fields_out_arr => rx_hdr_fields_out_arr,
hdr_fields_raw_arr => rx_hdr_fields_raw_arr
);
p_restore_sync_bsn : PROCESS(dp_offload_rx_src_out_arr, rx_hdr_fields_out_arr)
BEGIN
verify_snk_in <= dp_offload_rx_src_out_arr(0);
verify_snk_in.sync <= sl(rx_hdr_fields_out_arr(0)(field_hi(c_udp_offload_hdr_field_arr, "dp_sync") DOWNTO field_lo(c_udp_offload_hdr_field_arr, "dp_sync" )));
verify_snk_in.bsn <= RESIZE_UVEC(rx_hdr_fields_out_arr(0)(field_hi(c_udp_offload_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_udp_offload_hdr_field_arr, "dp_bsn" )), c_dp_stream_bsn_w);
verify_snk_in.bsn <= RESIZE_UVEC(rx_hdr_fields_raw_arr(0)(field_hi(c_udp_offload_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_udp_offload_hdr_field_arr, "dp_bsn" )), c_dp_stream_bsn_w);
END PROCESS;
dp_offload_rx_src_in_arr <= (OTHERS=>c_dp_siso_rdy);
......
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