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

Clarify use of c_sdp_cep_hdr_field_sel.

parent 49f385e6
No related branches found
No related tags found
1 merge request!283Resolve L2SDP-696
...@@ -64,6 +64,7 @@ ENTITY sdp_beamformer_output IS ...@@ -64,6 +64,7 @@ ENTITY sdp_beamformer_output IS
beamlet_scale : IN STD_LOGIC_VECTOR(c_sdp_W_beamlet_scale-1 DOWNTO 0); beamlet_scale : IN STD_LOGIC_VECTOR(c_sdp_W_beamlet_scale-1 DOWNTO 0);
gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0); gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
-- Source MAC/IP/UDP are not used, c_sdp_cep_hdr_field_sel selects MM programmable instead
eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0); ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0);
...@@ -204,6 +205,62 @@ BEGIN ...@@ -204,6 +205,62 @@ BEGIN
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Assemble offload info -- Assemble offload info
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Whether the dp_offload_tx_hdr_fields value is actually used in the Tx header depends on c_sdp_cep_hdr_field_sel
-- . c_sdp_cep_hdr_field_sel = "111"&"111111111011"&"1110"&"1100"&"00000010"&"100110"&"0";
-- eth ip udp app
-- where 0 = data path, 1 = MM controlled. The '0' fields are assigned here via dp_offload_tx_hdr_fields.
-- in order:
-- access field
-- MM eth_dst_mac
-- MM eth_src_mac
-- MM eth_type
--
-- MM ip_version
-- MM ip_header_length
-- MM ip_services
-- MM ip_total_length
-- MM ip_identification
-- MM ip_flags
-- MM ip_fragment_offset
-- MM ip_time_to_live
-- MM ip_protocol
-- DP ip_header_checksum --> added by u_tr_10GbE_ip_checksum
-- MM ip_src_addr
-- MM ip_dst_addr
--
-- MM udp_src_port
-- MM udp_dst_port
-- MM udp_total_length
-- DP udp_checksum --> default fixed 0, so not used, not calculated here or in tr_10GbE
-- because would require store and forward
--
-- MM sdp_marker
-- MM sdp_version_id
-- DP sdp_observation_id
-- DP sdp_station_id
--
-- DP sdp_source_info_antenna_band_id
-- DP sdp_source_info_nyquist_zone_id
-- DP sdp_source_info_f_adc
-- DP sdp_source_info_fsub_type
-- DP sdp_source_info_payload_error
-- DP sdp_source_info_repositioning_flag
-- MM sdp_source_info_beamlet_width
-- DP sdp_source_info_gn_id
--
-- MM sdp_reserved
-- DP sdp_beamlet_scale
-- DP sdp_beamlet_index
-- MM sdp_nof_blocks_per_packet
-- MM sdp_nof_beamlets_per_block
-- DP sdp_block_period
--
-- DP dp_bsn
-- Use MM programmable source MAC/IP/UDP instead of source MAC/IP/UDP based on node ID. This is necessary because
-- beamlet packets from different stations must have different source MAC/IP/UDP.
-- Hence the eth_src_mac, udp_src_port and ip_src_addr are ignored, because c_sdp_cep_hdr_field_sel selects MM control,
-- but keep the code to be able to enable using them by just changing the selection bit.
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "eth_src_mac" )) <= eth_src_mac; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "eth_src_mac" )) <= eth_src_mac;
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "udp_src_port")) <= udp_src_port; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "udp_src_port")) <= udp_src_port;
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "ip_src_addr" )) <= ip_src_addr; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "ip_src_addr" )) <= ip_src_addr;
...@@ -217,7 +274,7 @@ BEGIN ...@@ -217,7 +274,7 @@ BEGIN
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_payload_error" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_payload_error" )) <= payload_err; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_payload_error" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_payload_error" )) <= payload_err;
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_repositioning_flag" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_repositioning_flag" )) <= SLV(sdp_info.beam_repositioning_flag); dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_repositioning_flag" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_repositioning_flag" )) <= SLV(sdp_info.beam_repositioning_flag);
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_gn_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_gn_id" )) <= gn_id; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_gn_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_gn_id" )) <= gn_id;
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_reserved" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_reserved" )) <= (OTHERS => '0');
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale" )) <= beamlet_scale; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale" )) <= beamlet_scale;
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_beamlet_index" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_beamlet_index" )) <= TO_UVEC(c_beamlet_index, c_halfword_w); dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_beamlet_index" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_beamlet_index" )) <= TO_UVEC(c_beamlet_index, c_halfword_w);
dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_block_period" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_block_period" )) <= sdp_info.block_period; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_block_period" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_block_period" )) <= sdp_info.block_period;
......
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