From 6e3338a42675a071d91a76305bc6f149c0ac0cad Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Tue, 4 Apr 2023 13:29:18 +0200 Subject: [PATCH] Define station_info = antenna_field_index & station_id. --- .../tb_lofar2_unb2b_sdp_station_bf.vhd | 11 +++++--- .../tb_lofar2_unb2c_sdp_station_bf.vhd | 9 ++++--- ...ofar2_unb2c_sdp_station_bf_bst_offload.vhd | 4 ++- .../tb_lofar2_unb2c_sdp_station_bf_ring.vhd | 9 ++++--- .../lofar2/libraries/sdp/sdp.peripheral.yaml | 27 +++++++++++++------ .../sdp/src/vhdl/sdp_beamformer_output.vhd | 10 ++++--- .../libraries/sdp/src/vhdl/sdp_info_reg.vhd | 6 +++-- .../lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd | 17 ++++++------ .../sdp/src/vhdl/sdp_statistics_offload.vhd | 9 ++++--- .../libraries/sdp/tb/vhdl/tb_sdp_info.vhd | 11 +++++++- .../libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd | 8 +++--- .../sdp/tb/vhdl/tb_sdp_statistics_offload.vhd | 3 ++- 12 files changed, 83 insertions(+), 41 deletions(-) diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf.vhd index 7a53d8454c..cd248d7e35 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf.vhd @@ -143,7 +143,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_bf IS CONSTANT c_exp_beamlet_scale : NATURAL := NATURAL(g_beamlet_scale * REAL(c_sdp_unit_beamlet_scale)); -- c_sdp_unit_beamlet_scale = 2**15; CONSTANT c_exp_sdp_info : t_sdp_info := ( - TO_UVEC(601, 16), -- station_id + TO_UVEC(3, 6), -- antenna_field_index + TO_UVEC(601, 10), -- station_id '0', -- antenna_band_index x"7FFFFFFF", -- observation_id, use > 0 to avoid Warning: (vsim-151) NUMERIC_STD.TO_INTEGER: Value -2 is not in bounds of subtype NATURAL. b"01", -- nyquist_zone_index, 0 = first, 1 = second, 2 = third @@ -525,7 +526,8 @@ BEGIN -- Set and check SDP info ---------------------------------------------------------------------------- -- TYPE t_sdp_info IS RECORD - -- 7 station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + -- 8 antenna_field_index : STD_LOGIC_VECTOR(5 DOWNTO 0); + -- 7 station_id : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 6 antenna_band_index : STD_LOGIC; -- 5 observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); -- 4 nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); @@ -535,6 +537,7 @@ BEGIN -- 0 block_period : STD_LOGIC_VECTOR(15 DOWNTO 0); -- END RECORD; -- . Write + mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 8, TO_UINT(c_exp_sdp_info.antenna_field_index), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 7, TO_UINT(c_exp_sdp_info.station_id), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 6, TO_UINT(slv(c_exp_sdp_info.antenna_band_index)), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 5, TO_UINT(c_exp_sdp_info.observation_id), tb_clk); @@ -593,7 +596,7 @@ BEGIN -- 20 "sdp_marker" ), "RW", 8, field_default(c_sdp_marker_beamlets) ), -- 19 "sdp_version_id" ), "RW", 8, field_default(c_sdp_cep_version_id) ), -- 18 "sdp_observation_id" ), "RW", 32, field_default(0) ), - -- 17 "sdp_station_id" ), "RW", 16, field_default(0) ), + -- 17 "sdp_station_info" ), "RW", 16, field_default(0) ), -- -- 16 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), -- 15 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), @@ -1070,7 +1073,7 @@ BEGIN exp_sdp_cep_header.app.sdp_marker <= TO_UVEC(c_sdp_marker_beamlets, 8); -- 98 = x"62" = 'b' exp_sdp_cep_header.app.sdp_version_id <= TO_UVEC(c_sdp_cep_version_id, 8); -- 5 exp_sdp_cep_header.app.sdp_observation_id <= c_exp_sdp_info.observation_id; - exp_sdp_cep_header.app.sdp_station_id <= c_exp_sdp_info.station_id; + exp_sdp_cep_header.app.sdp_station_info <= c_exp_sdp_info.antenna_field_index & c_exp_sdp_info.station_id; exp_sdp_cep_header.app.sdp_source_info_antenna_band_id <= slv(c_exp_sdp_info.antenna_band_index); exp_sdp_cep_header.app.sdp_source_info_nyquist_zone_id <= c_exp_sdp_info.nyquist_zone_index; diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf.vhd index 821bd58d57..958e4725ff 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf.vhd @@ -215,7 +215,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2c_sdp_station_bf IS CONSTANT c_exp_beamlet_index : NATURAL := 0; -- depends on beamset bset * c_sdp_S_sub_bf CONSTANT c_exp_sdp_info : t_sdp_info := ( - TO_UVEC(601, 16), -- station_id + TO_UVEC(3, 6), -- antenna_field_index + TO_UVEC(601, 10), -- station_id '0', -- antenna_band_index x"7FFFFFFF", -- observation_id, use > 0 to avoid Warning: (vsim-151) NUMERIC_STD.TO_INTEGER: Value -2 is not in bounds of subtype NATURAL. b"01", -- nyquist_zone_index, 0 = first, 1 = second, 2 = third @@ -661,7 +662,8 @@ BEGIN -- Set and check SDP info ---------------------------------------------------------------------------- -- TYPE t_sdp_info IS RECORD - -- 7 station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + -- 8 antenna_field_index : STD_LOGIC_VECTOR(5 DOWNTO 0); + -- 7 station_id : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 6 antenna_band_index : STD_LOGIC; -- 5 observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); -- 4 nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); @@ -671,6 +673,7 @@ BEGIN -- 0 block_period : STD_LOGIC_VECTOR(15 DOWNTO 0); -- END RECORD; -- . Write + mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 8, TO_UINT(c_exp_sdp_info.antenna_field_index), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 7, TO_UINT(c_exp_sdp_info.station_id), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 6, TO_UINT(slv(c_exp_sdp_info.antenna_band_index)), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 5, TO_UINT(c_exp_sdp_info.observation_id), tb_clk); @@ -729,7 +732,7 @@ BEGIN -- 20 "sdp_marker" ), "RW", 8, field_default(c_sdp_marker_beamlets) ), -- 19 "sdp_version_id" ), "RW", 8, field_default(c_sdp_cep_version_id) ), -- 18 "sdp_observation_id" ), "RW", 32, field_default(0) ), - -- 17 "sdp_station_id" ), "RW", 16, field_default(0) ), + -- 17 "sdp_station_info" ), "RW", 16, field_default(0) ), -- -- 16 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), -- 15 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf_bst_offload.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf_bst_offload.vhd index 4e7d6e2b1e..00e7fcc28e 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf_bst_offload.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf/tb_lofar2_unb2c_sdp_station_bf_bst_offload.vhd @@ -84,7 +84,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2c_sdp_station_bf_bst_offload IS CONSTANT c_exp_beamlet_index : NATURAL := 0; -- depends on beamset bset * c_sdp_S_sub_bf CONSTANT c_exp_sdp_info : t_sdp_info := ( - TO_UVEC(601, 16), -- station_id + TO_UVEC(3, 6), -- antenna_field_index + TO_UVEC(601, 10), -- station_id '0', -- antenna_band_index x"7FFFFFFF", -- observation_id, use > 0 to avoid Warning: (vsim-151) NUMERIC_STD.TO_INTEGER: Value -2 is not in bounds of subtype NATURAL. b"01", -- nyquist_zone_index, 0 = first, 1 = second, 2 = third @@ -237,6 +238,7 @@ BEGIN ---------------------------------------------------------------------------- -- Set SDP info ---------------------------------------------------------------------------- + mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 8, TO_UINT(c_exp_sdp_info.antenna_field_index), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 7, TO_UINT(c_exp_sdp_info.station_id), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 6, TO_UINT(slv(c_exp_sdp_info.antenna_band_index)), tb_clk); mmf_mm_bus_wr(c_mm_file_reg_sdp_info, 5, TO_UINT(c_exp_sdp_info.observation_id), tb_clk); diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd index a54b08c9df..d12d26fef3 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd @@ -227,7 +227,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2c_sdp_station_bf_ring IS CONSTANT c_exp_beamlet_index : NATURAL := 0; -- depends on beamset bset * c_sdp_S_sub_bf CONSTANT c_exp_sdp_info : t_sdp_info := ( - TO_UVEC(601, 16), -- station_id + TO_UVEC(3, 6), -- antenna_field_index + TO_UVEC(601, 10), -- station_id '0', -- antenna_band_index x"7FFFFFFF", -- observation_id, use > 0 to avoid Warning: (vsim-151) NUMERIC_STD.TO_INTEGER: Value -2 is not in bounds of subtype NATURAL. b"01", -- nyquist_zone_index, 0 = first, 1 = second, 2 = third @@ -708,7 +709,8 @@ BEGIN -- Set and check SDP info ---------------------------------------------------------------------------- -- TYPE t_sdp_info IS RECORD - -- 7 station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + -- 8 antenna_field_index : STD_LOGIC_VECTOR(5 DOWNTO 0); + -- 7 station_id : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 6 antenna_band_index : STD_LOGIC; -- 5 observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); -- 4 nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); @@ -722,6 +724,7 @@ BEGIN FOR RN IN 0 TO c_last_rn LOOP v_gn := g_first_gn + RN; + mmf_mm_bus_wr(mmf_unb_file_prefix(v_gn / c_quad, v_gn MOD c_quad) & "REG_SDP_INFO", 8, TO_UINT(c_exp_sdp_info.antenna_field_index), tb_clk); mmf_mm_bus_wr(mmf_unb_file_prefix(v_gn / c_quad, v_gn MOD c_quad) & "REG_SDP_INFO", 7, TO_UINT(c_exp_sdp_info.station_id), tb_clk); mmf_mm_bus_wr(mmf_unb_file_prefix(v_gn / c_quad, v_gn MOD c_quad) & "REG_SDP_INFO", 6, TO_UINT(slv(c_exp_sdp_info.antenna_band_index)), tb_clk); mmf_mm_bus_wr(mmf_unb_file_prefix(v_gn / c_quad, v_gn MOD c_quad) & "REG_SDP_INFO", 5, TO_UINT(c_exp_sdp_info.observation_id), tb_clk); @@ -787,7 +790,7 @@ BEGIN -- 20 "sdp_marker" ), "RW", 8, field_default(c_sdp_marker_beamlets) ), -- 19 "sdp_version_id" ), "RW", 8, field_default(c_sdp_cep_version_id) ), -- 18 "sdp_observation_id" ), "RW", 32, field_default(0) ), - -- 17 "sdp_station_id" ), "RW", 16, field_default(0) ), + -- 17 "sdp_station_info" ), "RW", 16, field_default(0) ), -- -- 16 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), -- 15 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml index 3e7c08ebe5..fa2a92bfb0 100644 --- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml +++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml @@ -14,11 +14,10 @@ peripherals: mm_port_type: REG mm_port_span: 16 * MM_BUS_SIZE mm_port_description: | - "The SDP info contains central SDP information. The station_id applies to the entire station. - The other info fields apply per antenna band (low band or high band). An FPGA node only - participates in one band." + "The SDP info contains central SDP information." fields: - - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x1C } + - - { field_name: antenna_field_index, mm_width: 6, access_mode: RW, address_offset: 0x20 } + - - { field_name: station_id, mm_width: 10, access_mode: RW, address_offset: 0x1C } - - { field_name: antenna_band_index, mm_width: 1, access_mode: RW, address_offset: 0x18 } - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x14 } - - { field_name: nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0x10 } @@ -252,7 +251,10 @@ peripherals: - - { field_name: sdp_marker, mm_width: 8, access_mode: RW, address_offset: 0x50 } - - { field_name: sdp_version_id, mm_width: 8, access_mode: RW, address_offset: 0x4C } - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x48 } - - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - "sdp_station_info": + - { field_name: antenna_field_index, mm_width: 6, bit_offset: 10, access_mode: RW, address_offset: 0x44 } + - { field_name: station_id, mm_width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x44 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x40 } - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x3C } - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x38 } @@ -320,7 +322,10 @@ peripherals: - - { field_name: sdp_marker, mm_width: 8, access_mode: RW, address_offset: 0x54 } - - { field_name: sdp_version_id, mm_width: 8, access_mode: RW, address_offset: 0x50 } - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - "sdp_station_info": + - { field_name: antenna_field_index, mm_width: 6, bit_offset: 10, access_mode: RW, address_offset: 0x48 } + - { field_name: station_id, mm_width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } @@ -393,7 +398,10 @@ peripherals: - - { field_name: sdp_marker, mm_width: 8, access_mode: RW, address_offset: 0x54 } - - { field_name: sdp_version_id, mm_width: 8, access_mode: RW, address_offset: 0x50 } - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - "sdp_station_info": + - { field_name: antenna_field_index, mm_width: 6, bit_offset: 10, access_mode: RW, address_offset: 0x48 } + - { field_name: station_id, mm_width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } @@ -467,7 +475,10 @@ peripherals: - - { field_name: sdp_marker, mm_width: 8, access_mode: RW, address_offset: 0x54 } - - { field_name: sdp_version_id, mm_width: 8, access_mode: RW, address_offset: 0x50 } - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - "sdp_station_info": + - { field_name: antenna_field_index, mm_width: 6, bit_offset: 10, access_mode: RW, address_offset: 0x48 } + - { field_name: station_id, mm_width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd index a3aae746b9..7d8fce510b 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd @@ -98,7 +98,8 @@ ARCHITECTURE str OF sdp_beamformer_output IS SIGNAL common_fifo_rd_req : STD_LOGIC; SIGNAL payload_err : STD_LOGIC_VECTOR(0 DOWNTO 0); - + SIGNAL station_info : STD_LOGIC_VECTOR(15 DOWNTO 0) := (OTHERS => '0'); + -- Default set all data path driven header fields to 0 SIGNAL dp_offload_tx_hdr_fields : STD_LOGIC_VECTOR(1023 DOWNTO 0) := (OTHERS=>'0'); @@ -238,7 +239,7 @@ BEGIN -- MM sdp_marker -- MM sdp_version_id -- DP sdp_observation_id - -- DP sdp_station_id + -- DP sdp_station_info -- -- DP sdp_source_info_antenna_band_id -- DP sdp_source_info_nyquist_zone_id @@ -262,12 +263,15 @@ BEGIN -- 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. + + station_info <= sdp_info.antenna_field_index & sdp_info.station_id; + 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, "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, "sdp_observation_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_observation_id" )) <= sdp_info.observation_id; - dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_station_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_station_id" )) <= sdp_info.station_id; + dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_station_info" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_station_info" )) <= station_info; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_antenna_band_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_antenna_band_id" )) <= SLV(sdp_info.antenna_band_index); dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_nyquist_zone_id" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_nyquist_zone_id" )) <= sdp_info.nyquist_zone_index; dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_f_adc" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_f_adc" )) <= SLV(sdp_info.f_adc); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd index 0fbbe4d31b..8fa94b8715 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd @@ -60,8 +60,9 @@ END sdp_info_reg; ARCHITECTURE str OF sdp_info_reg IS - CONSTANT c_field_arr : t_common_field_arr(7 DOWNTO 0) := - ( (field_name_pad("station_id"), "RW", 16, field_default(0)), + CONSTANT c_field_arr : t_common_field_arr(8 DOWNTO 0) := + ( (field_name_pad("antenna_field_index"), "RW", 6, field_default(0)), -- = station_info[15:10] + (field_name_pad("station_id"), "RW", 10, field_default(0)), -- = station_info[9:0] (field_name_pad("antenna_band_index"), "RW", 1, field_default(0)), (field_name_pad("observation_id"), "RW", 32, field_default(0)), (field_name_pad("nyquist_zone_index"), "RW", 2, field_default(0)), @@ -119,6 +120,7 @@ BEGIN mm_fields_in(field_hi(c_field_arr, "block_period") DOWNTO field_lo(c_field_arr, "block_period")) <= sdp_info_rd.block_period; -- get "RW" fields from mm_fields + sdp_info_wr.antenna_field_index <= mm_fields_out(field_hi(c_field_arr, "antenna_field_index") DOWNTO field_lo(c_field_arr, "antenna_field_index")); sdp_info_wr.station_id <= mm_fields_out(field_hi(c_field_arr, "station_id") DOWNTO field_lo(c_field_arr, "station_id")); sdp_info_wr.antenna_band_index <= sl(mm_fields_out(field_hi(c_field_arr, "antenna_band_index") DOWNTO field_lo(c_field_arr, "antenna_band_index"))); sdp_info_wr.observation_id <= mm_fields_out(field_hi(c_field_arr, "observation_id") DOWNTO field_lo(c_field_arr, "observation_id")); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index d4f7f9d577..d5b3ab93d7 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -47,7 +47,8 @@ PACKAGE sdp_pkg is -- LOFAR2-9258-SDP info per antenna band ------------------------------------------------- TYPE t_sdp_info IS RECORD - station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + antenna_field_index : STD_LOGIC_VECTOR(5 DOWNTO 0); -- = station_info[15:10] + station_id : STD_LOGIC_VECTOR(9 DOWNTO 0); -- = station_info[9:0] antenna_band_index : STD_LOGIC; observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); @@ -58,7 +59,7 @@ PACKAGE sdp_pkg is END RECORD; CONSTANT c_sdp_info_rst : t_sdp_info := - ( (OTHERS => '0'), '0', (OTHERS => '0'), (OTHERS => '0'), + ( (OTHERS => '0'), (OTHERS => '0'), '0', (OTHERS => '0'), (OTHERS => '0'), '0', '0', '0', (OTHERS => '0') ); @@ -315,7 +316,7 @@ PACKAGE sdp_pkg is ( field_name_pad("sdp_marker" ), "RW", 8, field_default(0) ), -- differs for SST, BST, XST so set by data path ( field_name_pad("sdp_version_id" ), "RW", 8, field_default(c_sdp_stat_version_id) ), ( field_name_pad("sdp_observation_id" ), "RW", 32, field_default(0) ), - ( field_name_pad("sdp_station_id" ), "RW", 16, field_default(0) ), + ( field_name_pad("sdp_station_info" ), "RW", 16, field_default(0) ), ( field_name_pad("sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), ( field_name_pad("sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), @@ -343,7 +344,7 @@ PACKAGE sdp_pkg is sdp_marker : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_version_id : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); - sdp_station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + sdp_station_info : STD_LOGIC_VECTOR(15 DOWNTO 0); sdp_source_info_antenna_band_id : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_nyquist_zone_id : STD_LOGIC_VECTOR( 1 DOWNTO 0); @@ -449,7 +450,7 @@ PACKAGE sdp_pkg is ( field_name_pad("sdp_marker" ), "RW", 8, field_default(c_sdp_marker_beamlets) ), ( field_name_pad("sdp_version_id" ), "RW", 8, field_default(c_sdp_cep_version_id) ), ( field_name_pad("sdp_observation_id" ), "RW", 32, field_default(0) ), - ( field_name_pad("sdp_station_id" ), "RW", 16, field_default(0) ), + ( field_name_pad("sdp_station_info" ), "RW", 16, field_default(0) ), ( field_name_pad("sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), ( field_name_pad("sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), @@ -475,7 +476,7 @@ PACKAGE sdp_pkg is sdp_marker : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_version_id : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); - sdp_station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + sdp_station_info : STD_LOGIC_VECTOR(15 DOWNTO 0); sdp_source_info_antenna_band_id : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_nyquist_zone_id : STD_LOGIC_VECTOR( 1 DOWNTO 0); @@ -850,7 +851,7 @@ PACKAGE BODY sdp_pkg IS v.app.sdp_marker := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_marker") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_marker")); v.app.sdp_version_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_version_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_version_id")); v.app.sdp_observation_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_observation_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_observation_id")); - v.app.sdp_station_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_station_id")); + v.app.sdp_station_info := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_info") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_station_info")); v.app.sdp_source_info_antenna_band_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id")); v.app.sdp_source_info_nyquist_zone_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id")); @@ -912,7 +913,7 @@ PACKAGE BODY sdp_pkg IS v.app.sdp_marker := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_marker") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_marker")); v.app.sdp_version_id := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_version_id") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_version_id")); v.app.sdp_observation_id := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_observation_id") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_observation_id")); - v.app.sdp_station_id := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_station_id") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_station_id")); + v.app.sdp_station_info := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_station_info") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_station_info")); v.app.sdp_source_info_antenna_band_id := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_antenna_band_id") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_antenna_band_id")); v.app.sdp_source_info_nyquist_zone_id := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_nyquist_zone_id") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_nyquist_zone_id")); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd index a2a5be3b5a..9fe378db64 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd @@ -257,10 +257,11 @@ ARCHITECTURE str OF sdp_statistics_offload IS SIGNAL udp_sosi : t_dp_sosi; - SIGNAL dp_header_info : STD_LOGIC_VECTOR(1023 DOWNTO 0):= (OTHERS => '0'); + SIGNAL dp_header_info : STD_LOGIC_VECTOR(1023 DOWNTO 0) := (OTHERS => '0'); SIGNAL r_dp_header_sop : STD_LOGIC; SIGNAL r_dp_header_rec : t_sdp_stat_header; SIGNAL fsub_type : STD_LOGIC := '0'; + SIGNAL station_info : STD_LOGIC_VECTOR(15 DOWNTO 0) := (OTHERS => '0'); -- Debug signals for view in Wave window SIGNAL dbg_c_marker : NATURAL := c_marker; @@ -313,7 +314,7 @@ BEGIN -- DP sdp_marker -- MM sdp_version_id -- DP sdp_observation_id - -- DP sdp_station_id + -- DP sdp_station_info -- -- DP sdp_source_info_antenna_band_id -- DP sdp_source_info_nyquist_zone_id @@ -335,6 +336,8 @@ BEGIN -- -- DP dp_bsn + station_info <= sdp_info.antenna_field_index & sdp_info.station_id; + dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_src_mac" )) <= eth_src_mac; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "ip_total_length" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_total_length" )) <= TO_UVEC(c_ip_total_length, 16); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_src_addr" )) <= ip_src_addr; @@ -342,7 +345,7 @@ BEGIN dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "udp_total_length" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_total_length" )) <= TO_UVEC(c_udp_total_length, 16); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_marker" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_marker" )) <= TO_UVEC(c_marker, 8); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_observation_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_observation_id" )) <= sdp_info.observation_id; - dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_station_id" )) <= sdp_info.station_id; + dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_info" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_station_info" )) <= station_info; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id" )) <= SLV(sdp_info.antenna_band_index); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id" )) <= sdp_info.nyquist_zone_index; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_f_adc" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_f_adc" )) <= SLV(sdp_info.f_adc); diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd index d775dbcc8e..d8d3ac02bf 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd @@ -58,7 +58,8 @@ ARCHITECTURE tb OF tb_sdp_info IS CONSTANT c_mm_addr_observation_id : NATURAL := 5; CONSTANT c_mm_addr_antenna_band_index : NATURAL := 6; CONSTANT c_mm_addr_station_id : NATURAL := 7; - + CONSTANT c_mm_addr_antenna_field_index : NATURAL := 8; + SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL tb_mm_reg_end : STD_LOGIC := '0'; @@ -103,6 +104,7 @@ BEGIN proc_mem_mm_bus_wr(c_mm_addr_observation_id ,16 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_antenna_band_index ,1 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_station_id ,17 ,mm_clk, reg_miso, reg_mosi); + proc_mem_mm_bus_wr(c_mm_addr_antenna_field_index ,15 ,mm_clk, reg_miso, reg_mosi); proc_common_wait_cross_clock_domain_latency(dp_clk, mm_clk); proc_mem_mm_bus_rd(c_mm_addr_block_period, mm_clk, reg_mosi); @@ -152,6 +154,12 @@ BEGIN proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 17 REPORT "Wrong station_id" SEVERITY ERROR; + proc_mem_mm_bus_rd(c_mm_addr_antenna_field_index, mm_clk, reg_mosi); + proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); + mm_natural_response <= TO_UINT(reg_miso.rddata); + proc_common_wait_some_cycles(mm_clk, 1); + ASSERT mm_natural_response = 15 REPORT "Wrong antenna_field_index" SEVERITY ERROR; + -- check block_period if f_adc and fsub_type are changed -- f_adc = '0' and fsub_type = '0' => block_period = 6400 -- f_adc = '1' and fsub_type = '0' => block_period = 5120 @@ -205,6 +213,7 @@ BEGIN ASSERT TO_UINT(sdp_info.observation_id) = 16 REPORT "wrong sdp_info.observation_id value" SEVERITY ERROR; ASSERT sdp_info.antenna_band_index = '1' REPORT "wrong sdp_info.antenna_band_index value" SEVERITY ERROR; ASSERT TO_UINT(sdp_info.station_id) = 17 REPORT "wrong sdp_info.station_id value" SEVERITY ERROR; + ASSERT TO_UINT(sdp_info.antenna_field_index)= 15 REPORT "wrong sdp_info.antenna_field_index value" SEVERITY ERROR; proc_common_wait_some_cycles(mm_clk, 100); tb_end <= '1'; diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd index c3f0bc73f7..bf511814a9 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd @@ -177,7 +177,7 @@ PACKAGE BODY tb_sdp_pkg IS v_hdr.app.sdp_marker := TO_UVEC(c_marker, 8); v_hdr.app.sdp_version_id := TO_UVEC(c_sdp_stat_version_id, 8); v_hdr.app.sdp_observation_id := sdp_info.observation_id; - v_hdr.app.sdp_station_id := sdp_info.station_id; + v_hdr.app.sdp_station_info := sdp_info.antenna_field_index & sdp_info.station_id; v_hdr.app.sdp_source_info_antenna_band_id := slv(sdp_info.antenna_band_index); v_hdr.app.sdp_source_info_nyquist_zone_id := sdp_info.nyquist_zone_index; @@ -243,7 +243,7 @@ PACKAGE BODY tb_sdp_pkg IS ASSERT in_hdr.app.sdp_marker = exp_hdr.app.sdp_marker REPORT "Wrong " & g_statistics_type & " app.sdp_marker" SEVERITY ERROR; ASSERT in_hdr.app.sdp_version_id = exp_hdr.app.sdp_version_id REPORT "Wrong " & g_statistics_type & " app.sdp_version_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_observation_id = exp_hdr.app.sdp_observation_id REPORT "Wrong " & g_statistics_type & " app.sdp_observation_id" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_station_id = exp_hdr.app.sdp_station_id REPORT "Wrong " & g_statistics_type & " app.sdp_station_id" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_station_info = exp_hdr.app.sdp_station_info REPORT "Wrong " & g_statistics_type & " app.sdp_station_info" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_antenna_band_id = exp_hdr.app.sdp_source_info_antenna_band_id REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_antenna_band_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_nyquist_zone_id = exp_hdr.app.sdp_source_info_nyquist_zone_id REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_nyquist_zone_id" SEVERITY ERROR; @@ -321,7 +321,7 @@ PACKAGE BODY tb_sdp_pkg IS v_hdr.app.sdp_marker := TO_UVEC(c_sdp_marker_beamlets, 8); v_hdr.app.sdp_version_id := TO_UVEC(c_sdp_cep_version_id, 8); v_hdr.app.sdp_observation_id := sdp_info.observation_id; - v_hdr.app.sdp_station_id := sdp_info.station_id; + v_hdr.app.sdp_station_info := sdp_info.antenna_field_index & sdp_info.station_id; v_hdr.app.sdp_source_info_antenna_band_id := slv(sdp_info.antenna_band_index); v_hdr.app.sdp_source_info_nyquist_zone_id := sdp_info.nyquist_zone_index; @@ -394,7 +394,7 @@ PACKAGE BODY tb_sdp_pkg IS ASSERT in_hdr.app.sdp_marker = exp_hdr.app.sdp_marker REPORT "Wrong beamlet app.sdp_marker" SEVERITY ERROR; ASSERT in_hdr.app.sdp_version_id = exp_hdr.app.sdp_version_id REPORT "Wrong beamlet app.sdp_version_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_observation_id = exp_hdr.app.sdp_observation_id REPORT "Wrong beamlet app.sdp_observation_id" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_station_id = exp_hdr.app.sdp_station_id REPORT "Wrong beamlet app.sdp_station_id" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_station_info = exp_hdr.app.sdp_station_info REPORT "Wrong beamlet app.sdp_station_info" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_antenna_band_id = exp_hdr.app.sdp_source_info_antenna_band_id REPORT "Wrong beamlet app.sdp_source_info_antenna_band_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_nyquist_zone_id = exp_hdr.app.sdp_source_info_nyquist_zone_id REPORT "Wrong beamlet app.sdp_source_info_nyquist_zone_id" SEVERITY ERROR; diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd index 016b6bb8ca..6c49fb1c6e 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd @@ -100,7 +100,8 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS CONSTANT c_exp_ip_header_checksum : NATURAL := 0; -- 0 in this local tb, calculated by IO eth when used in design - CONSTANT c_exp_sdp_info : t_sdp_info := (TO_UVEC(601, 16), -- station_id + CONSTANT c_exp_sdp_info : t_sdp_info := (TO_UVEC(7, 6), -- antenna_field_index + TO_UVEC(601, 10), -- station_id '0', -- antenna_band_index x"FFFFFFFF", -- observation_id b"01", -- nyquist_zone_index, 0 = first, 1 = second, 2 = third -- GitLab