diff --git a/libraries/base/dp/src/vhdl/dp_offload_rx.vhd b/libraries/base/dp/src/vhdl/dp_offload_rx.vhd index 9effa4c7f350bc97dcadd99b59682feabad782f9..59e71bb079dfe57dd3b9b5f9efec91699a1e2206 100644 --- a/libraries/base/dp/src/vhdl/dp_offload_rx.vhd +++ b/libraries/base/dp/src/vhdl/dp_offload_rx.vhd @@ -31,6 +31,7 @@ ENTITY dp_offload_rx IS GENERIC ( g_nof_streams : NATURAL; g_data_w : NATURAL; + g_symbol_w : NATURAL := 0; -- default 0 yields g_symbol_w = g_data_w g_hdr_field_arr : t_common_field_arr; g_remove_crc : BOOLEAN := FALSE; g_crc_nof_words : NATURAL := 0 @@ -59,7 +60,8 @@ END dp_offload_rx; ARCHITECTURE str OF dp_offload_rx IS - CONSTANT c_nof_header_words : NATURAL := field_slv_len(g_hdr_field_arr) / g_data_w; + CONSTANT c_symbol_w : NATURAL := sel_a_b(g_symbol_w = 0, g_data_w, g_symbol_w); + CONSTANT c_nof_header_symbols : NATURAL := field_slv_len(g_hdr_field_arr) / c_symbol_w; CONSTANT c_field_sel : STD_LOGIC_VECTOR(g_hdr_field_arr'RANGE) := (OTHERS=>'0');-- Not used in sink mode but requires set range @@ -92,8 +94,8 @@ BEGIN u_dp_split : ENTITY work.dp_split GENERIC MAP ( g_data_w => g_data_w, - g_symbol_w => g_data_w, - g_nof_symbols => c_nof_header_words + g_symbol_w => c_symbol_w, + g_nof_symbols => c_nof_header_symbols ) PORT MAP ( rst => dp_rst,