diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold index e4861ad9b69282c0d8d6a940d004d6036492bee1..9fd8f3fb5a25b985fd6737fa0494bb322f806b9b 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold @@ -280,42 +280,42 @@ number_of_columns = 13 - - - - sdp_data_id_sst_reserved 0x000e8006 1 RW uint32 b[31:8] - - - - - - - sdp_integration_interval 0x000e8007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x000e8008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x000e8009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x000e800a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x000e800b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x000e800c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x000e800d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x000e800e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x000e800f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x000e8010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x000e8011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x000e8012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x000e8012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x000e8013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x000e8014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x000e8015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x000e8016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x000e8017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x000e8018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x000e8019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x000e801a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x000e801b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x000e801c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x000e801d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x000e801e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x000e801f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x000e8020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x000e8021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x000e8022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x000e8023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x000e8024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x000e8025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x000e8026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x000e8027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x000e8028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x000e8029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x000e802a - - - b[15:0] b[47:32] - - - - - - - word_align 0x000e802b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x000e8009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x000e800a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x000e800b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x000e800c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x000e800d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x000e800e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x000e800f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x000e8010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x000e8011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x000e8011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x000e8011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x000e8012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x000e8013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x000e8014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x000e8015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x000e8016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x000e8017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x000e8018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x000e8019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x000e801a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x000e801b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x000e801c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x000e801d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x000e801e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x000e801f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x000e8020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x000e8021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x000e8022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x000e8023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x000e8024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x000e8025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x000e8026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x000e8027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x000e8028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x000e8029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x000e802a 1 RW uint32 b[15:0] - - - REG_BSN_MONITOR_V2_SST_OFFLOAD 1 1 REG xon_stable 0x000f0000 1 RO uint32 b[0:0] - - - - - - - ready_stable 0x000f0000 1 RO uint32 b[1:1] - - - - - - - sync_timeout 0x000f0000 1 RO uint32 b[2:2] - - - @@ -359,42 +359,42 @@ number_of_columns = 13 - - - - sdp_data_id_xst_reserved 0x00128006 1 RW uint32 b[31:25] - - - - - - - sdp_integration_interval 0x00128007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x00128008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x00128009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x0012800a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x0012800b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x0012800c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x0012800d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x0012800e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x0012800f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x00128010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x00128011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x00128012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x00128012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x00128013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x00128014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x00128015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x00128016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x00128017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x00128018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x00128019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x0012801a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x0012801b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x0012801c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x0012801d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x0012801e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x0012801f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x00128020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x00128021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x00128022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x00128023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x00128024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x00128025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x00128026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x00128027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x00128028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x00128029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x0012802a - - - b[15:0] b[47:32] - - - - - - - word_align 0x0012802b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x00128009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x0012800a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x0012800b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x0012800c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x0012800d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x0012800e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x0012800f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x00128010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x00128011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x00128011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x00128011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x00128012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x00128013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x00128014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x00128015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x00128016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x00128017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x00128018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x00128019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x0012801a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x0012801b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x0012801c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x0012801d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x0012801e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x0012801f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x00128020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x00128021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x00128022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x00128023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x00128024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x00128025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x00128026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00128027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x00128028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00128029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x0012802a 1 RW uint32 b[15:0] - - - REG_BSN_ALIGN_V2_XSUB 1 9 REG enable 0x00130000 1 RW uint32 b[0:0] - - 2 - - - - replaced_pkt_cnt 0x00130001 1 RO uint32 b[31:0] - - - REG_BSN_MONITOR_V2_RX_ALIGN_XSUB 1 9 REG xon_stable 0x00138000 1 RO uint32 b[0:0] - - 8 @@ -690,16 +690,17 @@ number_of_columns = 13 - - - - sdp_nof_blocks_per_packet 0x001e0004 1 RW uint32 b[7:0] - - - - - - - sdp_beamlet_index 0x001e0005 1 RW uint32 b[15:0] - - - - - - - sdp_beamlet_scale 0x001e0006 1 RW uint32 b[15:0] - - - - - - - - sdp_reserved 0x001e0007 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x001e0008 - - - b[7:0] b[39:32] - - - - - - - sdp_source_info_gn_index 0x001e0009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_beamlet_width 0x001e000a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_repositioning_flag 0x001e000b 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x001e000c 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x001e000d 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x001e000e 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x001e000f 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x001e0010 1 RW uint32 b[15:15] - - - + - - - - sdp_reserved 0x001e0007 1 RW uint32 b[31:0] - - - + - - - - sdp_source_info_gn_index 0x001e0008 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_beamlet_width 0x001e0009 1 RW uint32 b[2:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x001e000a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x001e000b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x001e000c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x001e000d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x001e000e 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x001e000f 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_reserved 0x001e0010 1 RW uint32 b[4:0] - - - + - - - - sdp_station_info 0x001e0011 1 RW uint32 b[15:0] - - - - - - - sdp_station_info_station_id 0x001e0011 1 RW uint32 b[9:0] - - - - - - - sdp_station_info_antenna_field_index 0x001e0011 1 RW uint32 b[15:10] - - - - - - - sdp_observation_id 0x001e0012 1 RW uint32 b[31:0] - - - @@ -741,42 +742,42 @@ number_of_columns = 13 - - - - sdp_data_id_bst_reserved 0x00200006 1 RW uint32 b[31:16] - - - - - - - sdp_integration_interval 0x00200007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x00200008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x00200009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x0020000a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x0020000b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x0020000c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x0020000d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x0020000e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x0020000f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x00200010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x00200011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x00200012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x00200012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x00200013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x00200014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x00200015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x00200016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x00200017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x00200018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x00200019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x0020001a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x0020001b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x0020001c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x0020001d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x0020001e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x0020001f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x00200020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x00200021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x00200022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x00200023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x00200024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x00200025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x00200026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x00200027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x00200028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x00200029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x0020002a - - - b[15:0] b[47:32] - - - - - - - word_align 0x0020002b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x00200009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x0020000a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x0020000b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x0020000c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x0020000d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x0020000e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x0020000f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x00200010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x00200011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x00200011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x00200011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x00200012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x00200013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x00200014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x00200015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x00200016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x00200017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x00200018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x00200019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x0020001a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x0020001b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x0020001c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x0020001d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x0020001e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x0020001f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x00200020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x00200021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x00200022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x00200023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x00200024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x00200025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x00200026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00200027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x00200028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00200029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x0020002a 1 RW uint32 b[15:0] - - - REG_BSN_MONITOR_V2_BST_OFFLOAD 2 1 REG xon_stable 0x00208000 1 RO uint32 b[0:0] - 8 8 - - - - ready_stable 0x00208000 1 RO uint32 b[1:1] - - - - - - - sync_timeout 0x00208000 1 RO uint32 b[2:2] - - - 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 f8e42b7389b990d2215d3bf6ebfefc666c933ae2..fad08ed8d8414627b5538a7524cd44e289eb8b81 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 @@ -598,16 +598,17 @@ BEGIN -- 18 "sdp_observation_id" ), "RW", 32, 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) ), - -- 14 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), - -- 13 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), - -- 12 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), - -- 11 "sdp_source_info_repositioning_flag" ), "RW", 1, field_default(0) ), - -- 10 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), - -- 9 "sdp_source_info_gn_id" ), "RW", 5, field_default(0) ), + -- 16 "sdp_source_info_reserved" ), "RW", 5, field_default(0) ), + -- 15 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), + -- 14 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), + -- 13 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), + -- 12 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), + -- 11 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), + -- 10 "sdp_source_info_beam_repositioning_flag"), "RW", 1, field_default(0) ), + -- 9 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), + -- 8 "sdp_source_info_gn_id" ), "RW", 8, field_default(0) ), -- - -- 7 "sdp_reserved" ), "RW", 40, field_default(0) ), + -- 7 "sdp_reserved" ), "RW", 32, field_default(0) ), -- 6 "sdp_beamlet_scale" ), "RW", 16, field_default(c_sdp_unit_beamlet_scale) ), -- 5 "sdp_beamlet_index" ), "RW", 16, field_default(0) ), -- 4 "sdp_nof_blocks_per_packet" ), "RW", 8, field_default(c_sdp_cep_nof_blocks_per_packet) ), @@ -1075,14 +1076,14 @@ BEGIN exp_sdp_cep_header.app.sdp_observation_id <= c_exp_sdp_info.observation_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; - exp_sdp_cep_header.app.sdp_source_info_f_adc <= slv(c_exp_sdp_info.f_adc); - exp_sdp_cep_header.app.sdp_source_info_fsub_type <= slv(c_exp_sdp_info.fsub_type); - exp_sdp_cep_header.app.sdp_source_info_payload_error <= TO_UVEC(0, 1); - exp_sdp_cep_header.app.sdp_source_info_repositioning_flag <= slv(c_exp_sdp_info.beam_repositioning_flag); - exp_sdp_cep_header.app.sdp_source_info_beamlet_width <= TO_UVEC(c_sdp_W_beamlet, 4); - exp_sdp_cep_header.app.sdp_source_info_gn_id <= TO_UVEC(c_gn_index, 5); + 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; + exp_sdp_cep_header.app.sdp_source_info_f_adc <= slv(c_exp_sdp_info.f_adc); + exp_sdp_cep_header.app.sdp_source_info_fsub_type <= slv(c_exp_sdp_info.fsub_type); + exp_sdp_cep_header.app.sdp_source_info_payload_error <= TO_UVEC(0, 1); + exp_sdp_cep_header.app.sdp_source_info_beam_repositioning_flag <= slv(c_exp_sdp_info.beam_repositioning_flag); + exp_sdp_cep_header.app.sdp_source_info_beamlet_width <= TO_UVEC(c_sdp_W_beamlet, 4); + exp_sdp_cep_header.app.sdp_source_info_gn_id <= TO_UVEC(c_gn_index, 5); exp_sdp_cep_header.app.sdp_reserved <= TO_UVEC( 0, 40); exp_sdp_cep_header.app.sdp_beamlet_scale <= TO_UVEC( c_exp_beamlet_scale, 16); diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd index 52404f9735568534d163cbb0f803266f06215680..a6cf45d4d7a613d3d556a46e8792aaefd63394ef 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd @@ -802,8 +802,8 @@ BEGIN ); - -- Use gn_id = ID MOD 32, so map ID to 0:31 range (c_sdp_W_gn_id = 5) - gn_id <= ID(c_sdp_W_gn_id-1 DOWNTO 0); + -- Use full 8 bit gn_id = ID + gn_id <= ID; ----------------------------------------------------------------------------- -- sdp nodes diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.mmap.gold b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.mmap.gold index 3c8e9319a748daba9e49bb70d746b6ba7f8db9ed..a97e0285240ee1339f9039de3e067ae134084184 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.mmap.gold +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.mmap.gold @@ -280,42 +280,42 @@ number_of_columns = 13 - - - - sdp_data_id_sst_reserved 0x000e8006 1 RW uint32 b[31:8] - - - - - - - sdp_integration_interval 0x000e8007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x000e8008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x000e8009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x000e800a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x000e800b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x000e800c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x000e800d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x000e800e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x000e800f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x000e8010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x000e8011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x000e8012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x000e8012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x000e8013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x000e8014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x000e8015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x000e8016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x000e8017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x000e8018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x000e8019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x000e801a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x000e801b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x000e801c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x000e801d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x000e801e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x000e801f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x000e8020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x000e8021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x000e8022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x000e8023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x000e8024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x000e8025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x000e8026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x000e8027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x000e8028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x000e8029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x000e802a - - - b[15:0] b[47:32] - - - - - - - word_align 0x000e802b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x000e8009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x000e800a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x000e800b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x000e800c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x000e800d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x000e800e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x000e800f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x000e8010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x000e8011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x000e8011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x000e8011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x000e8012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x000e8013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x000e8014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x000e8015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x000e8016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x000e8017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x000e8018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x000e8019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x000e801a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x000e801b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x000e801c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x000e801d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x000e801e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x000e801f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x000e8020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x000e8021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x000e8022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x000e8023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x000e8024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x000e8025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x000e8026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x000e8027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x000e8028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x000e8029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x000e802a 1 RW uint32 b[15:0] - - - REG_BSN_MONITOR_V2_SST_OFFLOAD 1 1 REG xon_stable 0x000f0000 1 RO uint32 b[0:0] - - - - - - - ready_stable 0x000f0000 1 RO uint32 b[1:1] - - - - - - - sync_timeout 0x000f0000 1 RO uint32 b[2:2] - - - @@ -359,42 +359,42 @@ number_of_columns = 13 - - - - sdp_data_id_xst_reserved 0x00128006 1 RW uint32 b[31:25] - - - - - - - sdp_integration_interval 0x00128007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x00128008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x00128009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x0012800a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x0012800b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x0012800c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x0012800d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x0012800e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x0012800f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x00128010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x00128011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x00128012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x00128012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x00128013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x00128014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x00128015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x00128016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x00128017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x00128018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x00128019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x0012801a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x0012801b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x0012801c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x0012801d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x0012801e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x0012801f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x00128020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x00128021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x00128022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x00128023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x00128024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x00128025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x00128026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x00128027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x00128028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x00128029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x0012802a - - - b[15:0] b[47:32] - - - - - - - word_align 0x0012802b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x00128009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x0012800a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x0012800b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x0012800c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x0012800d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x0012800e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x0012800f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x00128010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x00128011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x00128011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x00128011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x00128012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x00128013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x00128014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x00128015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x00128016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x00128017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x00128018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x00128019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x0012801a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x0012801b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x0012801c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x0012801d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x0012801e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x0012801f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x00128020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x00128021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x00128022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x00128023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x00128024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x00128025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x00128026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00128027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x00128028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00128029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x0012802a 1 RW uint32 b[15:0] - - - REG_BSN_ALIGN_V2_XSUB 1 9 REG enable 0x00130000 1 RW uint32 b[0:0] - - 2 - - - - replaced_pkt_cnt 0x00130001 1 RO uint32 b[31:0] - - - REG_BSN_MONITOR_V2_RX_ALIGN_XSUB 1 9 REG xon_stable 0x00138000 1 RO uint32 b[0:0] - - 8 @@ -690,16 +690,17 @@ number_of_columns = 13 - - - - sdp_nof_blocks_per_packet 0x001e0004 1 RW uint32 b[7:0] - - - - - - - sdp_beamlet_index 0x001e0005 1 RW uint32 b[15:0] - - - - - - - sdp_beamlet_scale 0x001e0006 1 RW uint32 b[15:0] - - - - - - - - sdp_reserved 0x001e0007 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x001e0008 - - - b[7:0] b[39:32] - - - - - - - sdp_source_info_gn_index 0x001e0009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_beamlet_width 0x001e000a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_repositioning_flag 0x001e000b 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x001e000c 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x001e000d 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x001e000e 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x001e000f 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x001e0010 1 RW uint32 b[15:15] - - - + - - - - sdp_reserved 0x001e0007 1 RW uint32 b[31:0] - - - + - - - - sdp_source_info_gn_index 0x001e0008 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_beamlet_width 0x001e0009 1 RW uint32 b[2:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x001e000a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x001e000b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x001e000c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x001e000d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x001e000e 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x001e000f 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_reserved 0x001e0010 1 RW uint32 b[4:0] - - - + - - - - sdp_station_info 0x001e0011 1 RW uint32 b[15:0] - - - - - - - sdp_station_info_station_id 0x001e0011 1 RW uint32 b[9:0] - - - - - - - sdp_station_info_antenna_field_index 0x001e0011 1 RW uint32 b[15:10] - - - - - - - sdp_observation_id 0x001e0012 1 RW uint32 b[31:0] - - - @@ -741,42 +742,42 @@ number_of_columns = 13 - - - - sdp_data_id_bst_reserved 0x00200006 1 RW uint32 b[31:16] - - - - - - - sdp_integration_interval 0x00200007 1 RW uint32 b[23:0] - - - - - - - sdp_reserved 0x00200008 1 RW uint32 b[7:0] - - - - - - - - sdp_source_info_gn_index 0x00200009 1 RW uint32 b[4:0] - - - - - - - - sdp_source_info_reserved 0x0020000a 1 RW uint32 b[7:5] - - - - - - - - sdp_source_info_weighted_subbands_flag 0x0020000b 1 RW uint32 b[8:8] - - - - - - - - sdp_source_info_beam_repositioning_flag 0x0020000c 1 RW uint32 b[9:9] - - - - - - - - sdp_source_info_payload_error 0x0020000d 1 RW uint32 b[10:10] - - - - - - - - sdp_source_info_fsub_type 0x0020000e 1 RW uint32 b[11:11] - - - - - - - - sdp_source_info_f_adc 0x0020000f 1 RW uint32 b[12:12] - - - - - - - - sdp_source_info_nyquist_zone_index 0x00200010 1 RW uint32 b[14:13] - - - - - - - - sdp_source_info_antenna_band_index 0x00200011 1 RW uint32 b[15:15] - - - - - - - - sdp_station_info_station_id 0x00200012 1 RW uint32 b[9:0] - - - - - - - - sdp_station_info_antenna_field_index 0x00200012 1 RW uint32 b[15:10] - - - - - - - - sdp_observation_id 0x00200013 1 RW uint32 b[31:0] - - - - - - - - sdp_version_id 0x00200014 1 RW uint32 b[7:0] - - - - - - - - sdp_marker 0x00200015 1 RW uint32 b[7:0] - - - - - - - - udp_checksum 0x00200016 1 RW uint32 b[15:0] - - - - - - - - udp_length 0x00200017 1 RW uint32 b[15:0] - - - - - - - - udp_destination_port 0x00200018 1 RW uint32 b[15:0] - - - - - - - - udp_source_port 0x00200019 1 RW uint32 b[15:0] - - - - - - - - ip_destination_address 0x0020001a 1 RW uint32 b[31:0] - - - - - - - - ip_source_address 0x0020001b 1 RW uint32 b[31:0] - - - - - - - - ip_header_checksum 0x0020001c 1 RW uint32 b[15:0] - - - - - - - - ip_protocol 0x0020001d 1 RW uint32 b[7:0] - - - - - - - - ip_time_to_live 0x0020001e 1 RW uint32 b[7:0] - - - - - - - - ip_fragment_offset 0x0020001f 1 RW uint32 b[12:0] - - - - - - - - ip_flags 0x00200020 1 RW uint32 b[2:0] - - - - - - - - ip_identification 0x00200021 1 RW uint32 b[15:0] - - - - - - - - ip_total_length 0x00200022 1 RW uint32 b[15:0] - - - - - - - - ip_services 0x00200023 1 RW uint32 b[7:0] - - - - - - - - ip_header_length 0x00200024 1 RW uint32 b[3:0] - - - - - - - - ip_version 0x00200025 1 RW uint32 b[3:0] - - - - - - - - eth_type 0x00200026 1 RW uint32 b[15:0] - - - - - - - - eth_source_mac 0x00200027 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x00200028 - - - b[15:0] b[47:32] - - - - - - - eth_destination_mac 0x00200029 1 RW uint64 b[31:0] b[31:0] - - - - - - - - 0x0020002a - - - b[15:0] b[47:32] - - - - - - - word_align 0x0020002b 1 RW uint32 b[15:0] - - - + - - - - sdp_source_info_gn_index 0x00200009 1 RW uint32 b[7:0] - - - + - - - - sdp_source_info_weighted_subbands_flag 0x0020000a 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_beam_repositioning_flag 0x0020000b 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_payload_error 0x0020000c 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_fsub_type 0x0020000d 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_f_adc 0x0020000e 1 RW uint32 b[0:0] - - - + - - - - sdp_source_info_nyquist_zone_index 0x0020000f 1 RW uint32 b[1:0] - - - + - - - - sdp_source_info_antenna_band_index 0x00200010 1 RW uint32 b[0:0] - - - + - - - - sdp_station_info 0x00200011 1 RW uint32 b[15:0] - - - + - - - - sdp_station_info_station_id 0x00200011 1 RW uint32 b[9:0] - - - + - - - - sdp_station_info_antenna_field_index 0x00200011 1 RW uint32 b[15:10] - - - + - - - - sdp_observation_id 0x00200012 1 RW uint32 b[31:0] - - - + - - - - sdp_version_id 0x00200013 1 RW uint32 b[7:0] - - - + - - - - sdp_marker 0x00200014 1 RW uint32 b[7:0] - - - + - - - - udp_checksum 0x00200015 1 RW uint32 b[15:0] - - - + - - - - udp_length 0x00200016 1 RW uint32 b[15:0] - - - + - - - - udp_destination_port 0x00200017 1 RW uint32 b[15:0] - - - + - - - - udp_source_port 0x00200018 1 RW uint32 b[15:0] - - - + - - - - ip_destination_address 0x00200019 1 RW uint32 b[31:0] - - - + - - - - ip_source_address 0x0020001a 1 RW uint32 b[31:0] - - - + - - - - ip_header_checksum 0x0020001b 1 RW uint32 b[15:0] - - - + - - - - ip_protocol 0x0020001c 1 RW uint32 b[7:0] - - - + - - - - ip_time_to_live 0x0020001d 1 RW uint32 b[7:0] - - - + - - - - ip_fragment_offset 0x0020001e 1 RW uint32 b[12:0] - - - + - - - - ip_flags 0x0020001f 1 RW uint32 b[2:0] - - - + - - - - ip_identification 0x00200020 1 RW uint32 b[15:0] - - - + - - - - ip_total_length 0x00200021 1 RW uint32 b[15:0] - - - + - - - - ip_services 0x00200022 1 RW uint32 b[7:0] - - - + - - - - ip_header_length 0x00200023 1 RW uint32 b[3:0] - - - + - - - - ip_version 0x00200024 1 RW uint32 b[3:0] - - - + - - - - eth_type 0x00200025 1 RW uint32 b[15:0] - - - + - - - - eth_source_mac 0x00200026 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00200027 - - - b[15:0] b[47:32] - - + - - - - eth_destination_mac 0x00200028 1 RW uint64 b[31:0] b[31:0] - - + - - - - - 0x00200029 - - - b[15:0] b[47:32] - - + - - - - word_align 0x0020002a 1 RW uint32 b[15:0] - - - REG_BSN_MONITOR_V2_BST_OFFLOAD 2 1 REG xon_stable 0x00208000 1 RO uint32 b[0:0] - 8 8 - - - - ready_stable 0x00208000 1 RO uint32 b[1:1] - - - - - - - sync_timeout 0x00208000 1 RO uint32 b[2:2] - - - 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 f77bfa92cf67e6d2555b5c7604f8a21313360f53..b0affd66b43b3d976710783d5adc1d7d52ea7ca3 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 @@ -713,16 +713,17 @@ BEGIN -- 18 "sdp_observation_id" ), "RW", 32, 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) ), - -- 14 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), - -- 13 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), - -- 12 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), - -- 11 "sdp_source_info_repositioning_flag" ), "RW", 1, field_default(0) ), - -- 10 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), - -- 9 "sdp_source_info_gn_id" ), "RW", 5, field_default(0) ), + -- 16 "sdp_source_info_reserved" ), "RW", 5, field_default(0) ), + -- 15 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), + -- 14 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), + -- 13 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), + -- 12 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), + -- 11 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), + -- 10 "sdp_source_info_beam_repositioning_flag"), "RW", 1, field_default(0) ), + -- 9 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), + -- 8 "sdp_source_info_gn_id" ), "RW", 8, field_default(0) ), -- - -- 7 "sdp_reserved" ), "RW", 40, field_default(0) ), + -- 7 "sdp_reserved" ), "RW", 32, field_default(0) ), -- 6 "sdp_beamlet_scale" ), "RW", 16, field_default(c_sdp_unit_beamlet_scale) ), -- 5 "sdp_beamlet_index" ), "RW", 16, field_default(0) ), -- 4 "sdp_nof_blocks_per_packet" ), "RW", 8, field_default(c_sdp_cep_nof_blocks_per_packet) ), 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 00e7fcc28e19538126e89f758bee36b5d3b95144..804bf1cbec272738bf9423e90aaf3db54bd471ac 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 @@ -229,10 +229,10 @@ BEGIN ---------------------------------------------------------------------------- -- Offload destination MAC/IP/UDP ---------------------------------------------------------------------------- - mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 42, TO_UINT(c_sdp_stat_eth_dst_mac(47 DOWNTO 32)), tb_clk); - mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 41, TO_SINT(c_sdp_stat_eth_dst_mac(31 DOWNTO 0)), tb_clk); -- use signed to fit 32 b in INTEGER - mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 26, TO_SINT(c_sdp_stat_ip_dst_addr), tb_clk); -- use signed to fit 32 b in INTEGER - mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 24, TO_UINT(c_sdp_stat_udp_dst_port), tb_clk); + mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 41, TO_UINT(c_sdp_stat_eth_dst_mac(47 DOWNTO 32)), tb_clk); + mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 40, TO_SINT(c_sdp_stat_eth_dst_mac(31 DOWNTO 0)), tb_clk); -- use signed to fit 32 b in INTEGER + mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 25, TO_SINT(c_sdp_stat_ip_dst_addr), tb_clk); -- use signed to fit 32 b in INTEGER + mmf_mm_bus_wr(c_mm_file_reg_stat_hdr_dat_bst, 23, TO_UINT(c_sdp_stat_udp_dst_port), tb_clk); proc_common_wait_cross_clock_domain_latency(c_mm_clk_period, c_ext_clk_period); ---------------------------------------------------------------------------- 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 ed581a501adff51764e9fb989dd00e3575f0ff3f..f770e8597237f4ae6c6e9860816bad2ce2aed7e0 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 @@ -792,16 +792,17 @@ BEGIN -- 18 "sdp_observation_id" ), "RW", 32, 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) ), - -- 14 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), - -- 13 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), - -- 12 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), - -- 11 "sdp_source_info_repositioning_flag" ), "RW", 1, field_default(0) ), - -- 10 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), - -- 9 "sdp_source_info_gn_id" ), "RW", 5, field_default(0) ), + -- 16 "sdp_source_info_reserved" ), "RW", 5, field_default(0) ), + -- 15 "sdp_source_info_antenna_band_id" ), "RW", 1, field_default(0) ), + -- 14 "sdp_source_info_nyquist_zone_id" ), "RW", 2, field_default(0) ), + -- 13 "sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), + -- 12 "sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), + -- 11 "sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), + -- 10 "sdp_source_info_beam_repositioning_flag"), "RW", 1, field_default(0) ), + -- 9 "sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), + -- 8 "sdp_source_info_gn_id" ), "RW", 8, field_default(0) ), -- - -- 7 "sdp_reserved" ), "RW", 40, field_default(0) ), + -- 7 "sdp_reserved" ), "RW", 32, field_default(0) ), -- 6 "sdp_beamlet_scale" ), "RW", 16, field_default(c_sdp_unit_beamlet_scale) ), -- 5 "sdp_beamlet_index" ), "RW", 16, field_default(0) ), -- 4 "sdp_nof_blocks_per_packet" ), "RW", 8, field_default(c_sdp_cep_nof_blocks_per_packet) ), diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd index d419d5eb41e225dc7eb53e2d3789b391e93de56b..ad2e791598fbcb6e0665cd0ec2bb5aee546f158a 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd @@ -767,8 +767,8 @@ BEGIN ram_st_xsq_cipo => ram_st_xsq_cipo ); - -- Use gn_id = ID MOD 32, so map ID to 0:31 range (c_sdp_W_gn_id = 5) - gn_id <= ID(c_sdp_W_gn_id-1 DOWNTO 0); + -- Use full 8 bit gn_id = ID + gn_id <= ID; ----------------------------------------------------------------------------- -- sdp nodes diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml index fa2a92bfb0f3f24bc5bf6337d94ec78907da901f..73acf210efb3dbed285dc6417e3f2e7748f82d5e 100644 --- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml +++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml @@ -226,51 +226,53 @@ peripherals: " fields: # eth field group - - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } - - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x98 } - - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x94 } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x98 } + - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x94 } # ip field group - - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } - - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } - - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } - - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } - - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } - - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } - - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } - - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } - - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } # udp field group - - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } - - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } - - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } # application field group - - - { 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_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_info, 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 } - - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x34 } - - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x30 } - - - { field_name: sdp_source_info_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x2C } - - - { field_name: sdp_source_info_beamlet_width, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: sdp_reserved, mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C } - - - { field_name: sdp_beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } - - - { field_name: sdp_beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } - - - { field_name: sdp_nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: sdp_nof_beamlets_per_block, mm_width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: sdp_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } - - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } + - { 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_reserved, mm_width: 5, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_beamlet_width, mm_width: 3, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_source_info_gn_index, mm_width: 8, access_mode: RW, address_offset: 0x20 } + + - - { field_name: sdp_reserved, mm_width: 32, access_mode: RW, address_offset: 0x1C } + - - { field_name: sdp_beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } + - - { field_name: sdp_beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } + - - { field_name: sdp_nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: sdp_nof_beamlets_per_block, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: sdp_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } - peripheral_name: sdp_statistics_offload_hdr_dat_sst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py @@ -296,45 +298,46 @@ peripherals: " fields: # eth field group - - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } - - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } - - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x9C } - - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x98 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xA8 } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x98 } + - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x94 } # ip field group - - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } - - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } - - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } - - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } - - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } - - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } - - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } - - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } - - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } # udp field group - - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } - - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } # application field group - - - { 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_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_info, 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: 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 } - - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - { 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, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 8, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } @@ -372,45 +375,46 @@ peripherals: " fields: # eth field group - - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } - - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } - - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x9C } - - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x98 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xA8 } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x98 } + - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x94 } # ip field group - - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } - - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } - - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } - - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } - - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } - - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } - - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } - - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } - - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } # udp field group - - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } - - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } # application field group - - - { 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_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_info, 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: 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 } - - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - { 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, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 8, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } @@ -449,45 +453,46 @@ peripherals: " fields: # eth field group - - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } - - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } - - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x9C } - - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x98 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xA8 } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x98 } + - - { field_name: eth_type, mm_width: 16, access_mode: RW, address_offset: 0x94 } # ip field group - - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } - - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } - - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } - - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } - - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } - - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } - - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } - - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } - - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } # udp field group - - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } - - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } # application field group - - - { 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_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_info, 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: 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 } - - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - { 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, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 8, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } 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 3455cb7950c4f0cbb064817b741b39259ae96ff0..610fc3db5b45c859d261ee019103f79d7b85c28e 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd @@ -242,12 +242,13 @@ BEGIN -- DP sdp_observation_id -- DP sdp_station_info -- + -- DP sdp_source_info_reserved -- 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 + -- DP sdp_source_info_beam_repositioning_flag -- MM sdp_source_info_beamlet_width -- DP sdp_source_info_gn_id -- @@ -271,19 +272,19 @@ BEGIN 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_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); - dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type" )) <= SLV(sdp_info.fsub_type); - 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_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_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_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_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_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); + dp_offload_tx_hdr_fields(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type" )) <= SLV(sdp_info.fsub_type); + 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_beam_repositioning_flag" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_beam_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_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_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, "dp_bsn" ) DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "dp_bsn" )) <= dp_fifo_sc_src_out.bsn(63 DOWNTO 0); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index fee6a698c7229321bb56ef849bb03f265ea94579..1d74e41df649882c8d1005850aba38c3eaa961c9 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -66,11 +66,12 @@ PACKAGE sdp_pkg is ------------------------------------------------- -- SDP specific parameters as defined in [1] CONSTANT c_sdp_f_adc_MHz : NATURAL := 200; + CONSTANT c_sdp_N_band : NATURAL := 2; -- 2 antenna bands, LB and HB CONSTANT c_sdp_N_beamsets : NATURAL := 2; -- = N_beamsets_sdp in doc CONSTANT c_sdp_N_cross_sets_sdp : NATURAL := 1; CONSTANT c_sdp_N_crosslets_max : NATURAL := 7; CONSTANT c_sdp_N_fft : NATURAL := 1024; - CONSTANT c_sdp_N_pn_max : NATURAL := 16; -- gn 0:31 --> pn 0:15, pn 0:15 per antenna band + CONSTANT c_sdp_N_pn_max : NATURAL := 16; -- max 16 PN per ring = per antenna band CONSTANT c_sdp_N_pol : NATURAL := 2; CONSTANT c_sdp_N_pol_bf : NATURAL := 2; CONSTANT c_sdp_N_rings_sdp : NATURAL := 1; @@ -96,7 +97,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_W_crosslet : NATURAL := 16; CONSTANT c_sdp_W_beamlet_sum : NATURAL := 18; CONSTANT c_sdp_W_beamlet : NATURAL := 8; - CONSTANT c_sdp_W_gn_id : NATURAL := 5; -- Use gn_id = ID MOD 32, so map ID to 0:31 range (2**5 = 32) + CONSTANT c_sdp_W_gn_id : NATURAL := 8; -- = UniBoard2 ID[7:0] CONSTANT c_sdp_W_statistic : NATURAL := 64; CONSTANT c_sdp_W_statistic_sz : NATURAL := 2; -- = c_sdp_W_statistic / c_word_w CONSTANT c_sdp_W_sub_weight : NATURAL := 16; -- = w in s(w, p), s = signed @@ -266,7 +267,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_xst_udp_src_port_15_8 : STD_LOGIC_VECTOR( 7 DOWNTO 0) := x"D2"; -- TBC CONSTANT c_sdp_stat_version_id : NATURAL := 5; - CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 1+3+12+4+20+1; -- 608b; 19 32b words + CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 1 + 3+12+4 + 4+8+7+1; -- 608b; 19 32b words -- hdr_field_sel bit selects where the hdr_field value is set: -- . 0 = data path controlled, value is set in sdp_statistics_offload.vhd, so field_default() is not used. @@ -283,9 +284,9 @@ PACKAGE sdp_pkg is -- hdr_fields_in_arr with all 0. Hence e.g. udp_checksum = 0 can be achieve via data path -- and default hdr_fields_in_arr = 0 or via MM controlled and field_default(0). -- eth ip udp app - CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111011111001"&"0100"&"0100"&"000000010"&"1000000"&"0"; -- current ---CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111011111001"&"0101"&"0100"&"000000000"&"0000100"&"0"; -- previous 26 nov 2021 ---CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "0"&"100"&"000000010001"&"0100"&"0100"&"000000010"&"1000000"&"0"; -- initial + CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111011111001"&"0100"&"0100"&"00000000"&"1000000"&"0"; -- current +--CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111011111001"&"0101"&"0100"&"00000000"&"0000100"&"0"; -- previous 26 nov 2021 +--CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "0"&"100"&"000000010001"&"0100"&"0100"&"00000000"&"1000000"&"0"; -- initial -- Default use destination MAC/IP/UDP = 0, so these have to be MM programmed before -- statistics offload packets can be send. @@ -325,8 +326,7 @@ PACKAGE sdp_pkg is ( field_name_pad("sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), ( field_name_pad("sdp_source_info_beam_repositioning_flag" ), "RW", 1, field_default(0) ), ( field_name_pad("sdp_source_info_weighted_subbands_flag" ), "RW", 1, field_default(0) ), - ( field_name_pad("sdp_source_info_reserved" ), "RW", 3, field_default(0) ), - ( field_name_pad("sdp_source_info_gn_id" ), "RW", 5, field_default(0) ), + ( field_name_pad("sdp_source_info_gn_id" ), "RW", 8, field_default(0) ), ( field_name_pad("sdp_reserved" ), "RW", 8, field_default(0) ), ( field_name_pad("sdp_integration_interval" ), "RW", 24, field_default(0) ), @@ -353,8 +353,7 @@ PACKAGE sdp_pkg is sdp_source_info_payload_error : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_beam_repositioning_flag : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_weighted_subbands_flag : STD_LOGIC_VECTOR( 0 DOWNTO 0); - sdp_source_info_reserved : STD_LOGIC_VECTOR( 2 DOWNTO 0); - sdp_source_info_gn_id : STD_LOGIC_VECTOR( 4 DOWNTO 0); + sdp_source_info_gn_id : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_reserved : STD_LOGIC_VECTOR( 7 DOWNTO 0); sdp_integration_interval : STD_LOGIC_VECTOR(23 DOWNTO 0); @@ -411,16 +410,16 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_cep_payload_nof_longwords : NATURAL := c_sdp_cep_nof_blocks_per_packet * c_sdp_cep_nof_beamlets_per_block / c_sdp_cep_nof_beamlets_per_longword; -- = 976 CONSTANT c_sdp_cep_packet_nof_longwords : NATURAL := ceil_div(c_sdp_cep_header_len, c_longword_sz) + c_sdp_cep_payload_nof_longwords; -- without tail CRC, the CRC is applied by 10GbE MAC - CONSTANT c_sdp_cep_nof_hdr_fields : NATURAL := 3+12+4+18+1; -- c_sdp_cep_header_len / c_longword_sz = 74 / 8 = 9.25 64b words = 592b + CONSTANT c_sdp_cep_nof_hdr_fields : NATURAL := 3+12+4 + 4+9+6+1; -- c_sdp_cep_header_len / c_longword_sz = 74 / 8 = 9.25 64b words = 592b -- hdr_field_sel bit selects where the hdr_field value is set: -- . 0 = data path controlled, value is set in sdp_beamformer_output.vhd, so field_default() is not used. -- . 1 = MM controlled, value is set via MM or by the field_default(), so any data path setting in -- sdp_beamformer_output.vhd is not used. -- Remarks: see remarks at c_sdp_stat_nof_hdr_fields. -- eth ip udp app - CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111011"&"1110"&"1100"&"00000010"&"100110"&"0"; -- current ---CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"1100"&"00000010"&"000110"&"0"; -- previous 27 sep 2022 ---CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "100"&"000000010001"&"0100"&"0100"&"00000000"&"101000"&"0"; -- initial + CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111011"&"1110"&"1100"&"100000010"&"100110"&"0"; -- current +--CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"1100"&"100000010"&"000110"&"0"; -- previous 27 sep 2022 +--CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "100"&"000000010001"&"0100"&"0100"&"100000000"&"101000"&"0"; -- initial -- Default use source MAC/IP/UDP = 0 and destination MAC/IP/UDP = 0, so these have to be MM programmed -- before beamlet output packets can be send. @@ -452,16 +451,17 @@ PACKAGE sdp_pkg is ( field_name_pad("sdp_observation_id" ), "RW", 32, 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) ), - ( field_name_pad("sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), - ( field_name_pad("sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), - ( field_name_pad("sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), - ( field_name_pad("sdp_source_info_repositioning_flag" ), "RW", 1, field_default(0) ), - ( field_name_pad("sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), - ( field_name_pad("sdp_source_info_gn_id" ), "RW", 5, field_default(0) ), - - ( field_name_pad("sdp_reserved" ), "RW", 40, field_default(0) ), + ( field_name_pad("sdp_source_info_reserved" ), "RW", 5, 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) ), + ( field_name_pad("sdp_source_info_f_adc" ), "RW", 1, field_default(0) ), + ( field_name_pad("sdp_source_info_fsub_type" ), "RW", 1, field_default(0) ), + ( field_name_pad("sdp_source_info_payload_error" ), "RW", 1, field_default(0) ), + ( field_name_pad("sdp_source_info_beam_repositioning_flag"), "RW", 1, field_default(0) ), + ( field_name_pad("sdp_source_info_beamlet_width" ), "RW", 4, field_default(c_sdp_W_beamlet) ), + ( field_name_pad("sdp_source_info_gn_id" ), "RW", 8, field_default(0) ), + + ( field_name_pad("sdp_reserved" ), "RW", 32, field_default(0) ), ( field_name_pad("sdp_beamlet_scale" ), "RW", 16, field_default(c_sdp_unit_beamlet_scale) ), ( field_name_pad("sdp_beamlet_index" ), "RW", 16, field_default(0) ), ( field_name_pad("sdp_nof_blocks_per_packet" ), "RW", 8, field_default(c_sdp_cep_nof_blocks_per_packet) ), @@ -478,16 +478,17 @@ PACKAGE sdp_pkg is sdp_observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); sdp_station_info : STD_LOGIC_VECTOR(15 DOWNTO 0); + sdp_source_info_reserved : STD_LOGIC_VECTOR( 4 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); sdp_source_info_f_adc : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_fsub_type : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_payload_error : STD_LOGIC_VECTOR( 0 DOWNTO 0); - sdp_source_info_repositioning_flag : STD_LOGIC_VECTOR( 0 DOWNTO 0); + sdp_source_info_beam_repositioning_flag : STD_LOGIC_VECTOR( 0 DOWNTO 0); sdp_source_info_beamlet_width : STD_LOGIC_VECTOR( 3 DOWNTO 0); - sdp_source_info_gn_id : STD_LOGIC_VECTOR( 4 DOWNTO 0); + sdp_source_info_gn_id : STD_LOGIC_VECTOR( 7 DOWNTO 0); - sdp_reserved : STD_LOGIC_VECTOR(39 DOWNTO 0); + sdp_reserved : STD_LOGIC_VECTOR(31 DOWNTO 0); sdp_beamlet_scale : STD_LOGIC_VECTOR(15 DOWNTO 0); sdp_beamlet_index : STD_LOGIC_VECTOR(15 DOWNTO 0); sdp_nof_blocks_per_packet : STD_LOGIC_VECTOR( 7 DOWNTO 0); @@ -860,7 +861,6 @@ PACKAGE BODY sdp_pkg IS v.app.sdp_source_info_payload_error := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_payload_error") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_payload_error")); v.app.sdp_source_info_beam_repositioning_flag := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_beam_repositioning_flag") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_beam_repositioning_flag")); v.app.sdp_source_info_weighted_subbands_flag := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_weighted_subbands_flag") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_weighted_subbands_flag")); - v.app.sdp_source_info_reserved := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_reserved") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_reserved")); v.app.sdp_source_info_gn_id := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id")); v.app.sdp_reserved := hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_reserved") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_reserved")); @@ -915,14 +915,15 @@ PACKAGE BODY sdp_pkg IS 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_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")); - v.app.sdp_source_info_f_adc := hdr_fields_raw(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")); - v.app.sdp_source_info_fsub_type := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type")); - v.app.sdp_source_info_payload_error := hdr_fields_raw(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")); - v.app.sdp_source_info_repositioning_flag := hdr_fields_raw(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")); - v.app.sdp_source_info_beamlet_width := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_beamlet_width") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_beamlet_width")); - v.app.sdp_source_info_gn_id := hdr_fields_raw(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")); + v.app.sdp_source_info_reserved := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_reserved") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_reserved")); + 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")); + v.app.sdp_source_info_f_adc := hdr_fields_raw(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")); + v.app.sdp_source_info_fsub_type := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_fsub_type")); + v.app.sdp_source_info_payload_error := hdr_fields_raw(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")); + v.app.sdp_source_info_beam_repositioning_flag := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_beam_repositioning_flag") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_beam_repositioning_flag")); + v.app.sdp_source_info_beamlet_width := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_source_info_beamlet_width") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_source_info_beamlet_width")); + v.app.sdp_source_info_gn_id := hdr_fields_raw(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")); v.app.sdp_reserved := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_reserved") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_reserved")); v.app.sdp_beamlet_scale := hdr_fields_raw(field_hi(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale") DOWNTO field_lo(c_sdp_cep_hdr_field_arr, "sdp_beamlet_scale")); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd index d8af2c9bfa6589447b951177e03f116700b48d27..af106cdfccf8f2f92daaab665100dc543cc4f0f9 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd @@ -453,7 +453,7 @@ ARCHITECTURE str OF sdp_station IS TYPE t_dp_sosi_2arr_pfb IS ARRAY (INTEGER RANGE <>) OF t_dp_sosi_arr(c_sdp_P_pfb - 1 DOWNTO 0); - SIGNAL gn_index : NATURAL := 0; -- range 0:31 (c_sdp_W_gn_id = 5) + SIGNAL gn_index : NATURAL := 0; SIGNAL this_rn : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); SIGNAL sdp_info : t_sdp_info := c_sdp_info_rst; @@ -605,16 +605,16 @@ BEGIN -- instead they are MM programmable as set by c_sdp_cep_hdr_field_sel cep_eth_src_mac <= c_sdp_cep_eth_src_mac_47_16 & RESIZE_UVEC(this_bck_id, c_byte_w) & RESIZE_UVEC(this_chip_id, c_byte_w); -- Simply use chip_id since we only use 1 of the 6*4 = 24 10GbE port. cep_ip_src_addr <= c_sdp_cep_ip_src_addr_31_16 & RESIZE_UVEC(this_bck_id, c_byte_w) & INCR_UVEC(RESIZE_UVEC(this_chip_id, c_byte_w), 1); -- +1 to avoid IP = *.*.*.0 - cep_udp_src_port <= c_sdp_cep_udp_src_port_15_8 & RESIZE_UVEC(gn_id, c_byte_w); + cep_udp_src_port <= c_sdp_cep_udp_src_port_15_8 & gn_id; -- . derive statistics offload source MAC/IP/UDP as in: https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD -- . these FW default statistics offload source MAC, IP and UDP port for 1GbE are used, as set by c_sdp_stat_hdr_field_sel. -- . the source MAC, IP are the same as for the M&C, because M&C and statistics offload share the same 1GbE stat_eth_src_mac <= c_sdp_stat_eth_src_mac_47_16 & RESIZE_UVEC(this_bck_id, c_byte_w) & RESIZE_UVEC(this_chip_id, c_byte_w); -- Simply use chip_id since we only use 1 of the 6*4 = 24 10GbE port. stat_ip_src_addr <= c_sdp_stat_ip_src_addr_31_16 & RESIZE_UVEC(this_bck_id, c_byte_w) & INCR_UVEC(RESIZE_UVEC(this_chip_id, c_byte_w), 1); -- +1 to avoid IP = *.*.*.0 - sst_udp_src_port <= c_sdp_sst_udp_src_port_15_8 & RESIZE_UVEC(gn_id, c_byte_w); - bst_udp_src_port <= c_sdp_bst_udp_src_port_15_8 & RESIZE_UVEC(gn_id, c_byte_w); - xst_udp_src_port <= c_sdp_xst_udp_src_port_15_8 & RESIZE_UVEC(gn_id, c_byte_w); + sst_udp_src_port <= c_sdp_sst_udp_src_port_15_8 & gn_id; + bst_udp_src_port <= c_sdp_bst_udp_src_port_15_8 & gn_id; + xst_udp_src_port <= c_sdp_xst_udp_src_port_15_8 & gn_id; u_sdp_info : ENTITY work.sdp_info PORT MAP( @@ -640,9 +640,6 @@ BEGIN -- Ring info ----------------------------------------------------------------------------- u_ring_info : ENTITY ring_lib.ring_info - GENERIC MAP ( - g_ring_info_O_rn_w => c_sdp_W_gn_id -- wrap O_rn to gn_index range - ) PORT MAP ( mm_rst => mm_rst, mm_clk => mm_clk, @@ -656,7 +653,7 @@ BEGIN ring_info => ring_info ); - this_rn <= TO_UVEC(gn_index - TO_UINT(ring_info.O_rn), c_byte_w) WHEN rising_edge(dp_clk); -- Using register to ease timing closure. + this_rn <= TO_UVEC(gn_index - TO_UINT(ring_info.O_rn), c_byte_w) WHEN rising_edge(dp_clk); -- Using register to ease timing closure. ----------------------------------------------------------------------------- -- node_adc_input_and_timing (AIT) 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 9fe378db64fd4e15b3d22ee2288e491cb2482a9d..ec879c77502115050594cea9f87d61b41b6ba61a 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd @@ -195,6 +195,8 @@ ARCHITECTURE str OF sdp_statistics_offload IS remote_gn : NATURAL; -- index of remote global node remote_pn : NATURAL; -- index of remote node in antenna band remote_si_offset : NATURAL; -- index of first signal input on remote node + base_dly : NATURAL; -- same base offload delay for nof_cycles_dly per node + nodes_dly : NATURAL; -- incremental offload delay for nof_cycles_dly per node nof_cycles_dly : NATURAL; -- trigger_offload delay for this node offset_rn : NATURAL; -- = ring_info.O_rn, GN index of first ring node nof_rn : NATURAL; -- = ring_info.N_rn, number of GN in the ring @@ -231,6 +233,8 @@ ARCHITECTURE str OF sdp_statistics_offload IS CONSTANT c_reg_rst : t_reg := (0, 0, '0', '0', (OTHERS => '0'), 0, 0, 0, 0, 0); SIGNAL p : t_parameters; + SIGNAL p_gn_id : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); + SIGNAL pp_gn_id : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); SIGNAL reg_input : t_input := c_input_rst; SIGNAL prev_input : t_input := c_input_rst; @@ -281,7 +285,7 @@ BEGIN -- Assemble offload header info ------------------------------------------------------------------------------- -- Whether the dp_offload_tx_hdr_fields value is actually used in the Tx header depends on c_sdp_stat_hdr_field_sel - -- c_sdp_stat_hdr_field_sel = "1"&"101"&"111011111001"&"0100"&"0100"&"000000010"&"1000000"&"0" + -- c_sdp_stat_hdr_field_sel = "1"&"101"&"111011111001"&"0100"&"0100"&"00000000"&"1000000"&"0" -- eth ip udp app -- where 0 = data path, 1 = MM controlled. The '0' fields are assigned here in dp_header_info -- in order: @@ -323,8 +327,7 @@ BEGIN -- DP sdp_source_info_payload_error -- DP sdp_source_info_beam_repositioning_flag -- DP sdp_source_info_weighted_subbands_flag - -- MM sdp_source_info_reserved - -- DP sdp_source_info_gn_id + -- MM DP sdp_source_info_gn_id -- -- MM sdp_reserved -- DP sdp_integration_interval @@ -353,7 +356,7 @@ BEGIN dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_payload_error" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_payload_error" )) <= SLV(hdr_input.payload_err); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_beam_repositioning_flag" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_beam_repositioning_flag" )) <= SLV(sdp_info.beam_repositioning_flag); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_weighted_subbands_flag" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_weighted_subbands_flag" )) <= SLV(weighted_subbands_flag); - dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id" )) <= TO_UVEC(p.gn_index, 5); + dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_gn_id" )) <= pp_gn_id; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_integration_interval" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_integration_interval" )) <= TO_UVEC(hdr_input.integration_interval, 24); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_data_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_data_id" )) <= data_id_slv; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_nof_signal_inputs" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_nof_signal_inputs" )) <= TO_UVEC(c_nof_signal_inputs, 8); @@ -373,23 +376,31 @@ BEGIN END PROCESS; -- Derive and pipeline dynamic parameters that depend on node id and MM, but are otherwise fixed - -- . gn_index and ring_info.O_rn are in 0:31 range defined by c_sdp_W_gn_id = 5 + -- . gn_index and ring_info.O_rn are in full GN = ID = 0:255 range defined by c_sdp_W_gn_id = 8 + -- . pn_index = gn_index MOD c_sdp_N_pn_max = gn_index[3:0] = 0:15, with c_sdp_N_pn_max = 16 -- . O_rn is first GN index in ring, so O_rn <= gn_index - -- . c_sdp_offload_time = 600000 * 5 ns = 3 ms, so for max gn_index = 31 the - -- offload starts after 93 ms, to just fit within XST T_int min is 100 ms. - -- . use +1 for nof_cycles_dly to ensure that hdr_input.integration_interval gets the correct - -- value also for node 0 with zero delay. Otherwise node 0 will read an integration_interval - -- value that depends on when the remaining sop_cnt of the last interval in case of a XST - -- processing restart. + -- . nof_cycles_dly for statistics offload start per node: + -- - c_sdp_N_band * c_sdp_N_pn_max = 32 nodes is maximum for a LOFAR2 Station. + -- - p.nodes_dly: g_offload_time = c_sdp_offload_time = 600000 * 5 ns = 3 ms, so for max + -- gn_index[4:0] = 31 the offload starts after 93 ms, to just fit within XST T_int min is 100 ms. + -- - p.base_dly: use gn_index[7:5] to add a small extra dly g_offload_time / 8 of per group of + -- 32 nodes, so 0:g_offload_time in 8 steps of g_offload_time/8, to remain within 32 * 3 = 96 ms + -- < 100 ms for any set of 32 nodes within full GN range. + -- - use +1 for nof_cycles_dly to ensure that hdr_input.integration_interval gets the correct + -- value also for node 0 with zero delay. Otherwise node 0 will read an integration_interval + -- value that depends on when the remaining sop_cnt of the last interval in case of a XST + -- processing restart. p_reg_parameters : PROCESS(dp_clk) BEGIN IF rising_edge(dp_clk) THEN - p.gn_index <= gn_index; - p.pn_index <= func_sdp_gn_index_to_pn_index(p.gn_index); + p.gn_index <= gn_index; -- gn_index[7:0] full GN range + p.pn_index <= func_sdp_gn_index_to_pn_index(p.gn_index); -- pn_index = 0:15 p.offset_rn <= TO_UINT(ring_info.O_rn); p.rn_index <= p.gn_index - p.offset_rn; p.local_si_offset <= p.pn_index * c_sdp_S_pn; - p.nof_cycles_dly <= p.gn_index * g_offload_time + 1; -- +1 to ensure proper hdr_input.integration_interval also on node 0 + p.base_dly <= TO_UINT(p_gn_id(7 DOWNTO 5)) * (g_offload_time / 8); + p.nodes_dly <= TO_UINT(p_gn_id(4 DOWNTO 0)) * g_offload_time; + p.nof_cycles_dly <= p.base_dly + p.nodes_dly + 1; -- + 1 to ensure proper hdr_input.integration_interval also on node 0 p.nof_rn <= TO_UINT(ring_info.N_rn); p.nof_used_P_sq <= smallest(p.nof_rn / 2 + 1, g_P_sq); p.remote_rn <= func_ring_nof_hops_to_source_rn(r.instance_count, p.rn_index, p.nof_rn, g_crosslets_direction); @@ -399,6 +410,9 @@ BEGIN END IF; END PROCESS; + p_gn_id <= TO_UVEC(p.pn_index, 8); -- in slv format to ease slicing bit ranges + pp_gn_id <= p_gn_id WHEN rising_edge(dp_clk); -- pipeline again to ease timing closure + -- Determine info from previous sync interval in which the statistics were -- measured. -- . hold nof_crosslets from MM (and related nof_packets) per sync interval 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 bf511814a9c200632d4ea89b76df891c9b2ccd86..32002ff7b0b78ce0e8dcd963669c65dc96d3f353 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd @@ -186,10 +186,9 @@ PACKAGE BODY tb_sdp_pkg IS v_hdr.app.sdp_source_info_payload_error := TO_UVEC(0, 1); v_hdr.app.sdp_source_info_beam_repositioning_flag := slv(sdp_info.beam_repositioning_flag); v_hdr.app.sdp_source_info_weighted_subbands_flag := slv(weighted_subbands_flag); - v_hdr.app.sdp_source_info_reserved := TO_UVEC(0, 3); - v_hdr.app.sdp_source_info_gn_id := TO_UVEC(gn_index, 5); + v_hdr.app.sdp_source_info_gn_id := TO_UVEC(gn_index, 8); - v_hdr.app.sdp_reserved := TO_UVEC( 0, 8); + v_hdr.app.sdp_reserved := TO_UVEC(0, 8); v_hdr.app.sdp_integration_interval := TO_UVEC(nof_block_per_sync, 24); IF g_statistics_type = "SST" OR g_statistics_type = "SST_OS" THEN v_hdr.app.sdp_data_id := TO_UVEC(sst_signal_input, 32); @@ -252,7 +251,6 @@ PACKAGE BODY tb_sdp_pkg IS ASSERT in_hdr.app.sdp_source_info_payload_error = exp_hdr.app.sdp_source_info_payload_error REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_payload_error" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_beam_repositioning_flag = exp_hdr.app.sdp_source_info_beam_repositioning_flag REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_beam_repositioning_flag" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_weighted_subbands_flag = exp_hdr.app.sdp_source_info_weighted_subbands_flag REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_weighted_subbands_flag" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_reserved = exp_hdr.app.sdp_source_info_reserved REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_reserved" SEVERITY ERROR; ASSERT in_hdr.app.sdp_source_info_gn_id = exp_hdr.app.sdp_source_info_gn_id REPORT "Wrong " & g_statistics_type & " app.sdp_source_info_gn_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_reserved = exp_hdr.app.sdp_reserved REPORT "Wrong " & g_statistics_type & " app.sdp_reserved" SEVERITY ERROR; @@ -323,16 +321,17 @@ PACKAGE BODY tb_sdp_pkg IS v_hdr.app.sdp_observation_id := sdp_info.observation_id; v_hdr.app.sdp_station_info := sdp_info.antenna_field_index & sdp_info.station_id; + v_hdr.app.sdp_source_info_reserved := TO_UVEC(0, 5); 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; v_hdr.app.sdp_source_info_f_adc := slv(sdp_info.f_adc); v_hdr.app.sdp_source_info_fsub_type := slv(sdp_info.fsub_type); v_hdr.app.sdp_source_info_payload_error := TO_UVEC(0, 1); - v_hdr.app.sdp_source_info_repositioning_flag := slv(sdp_info.beam_repositioning_flag); + v_hdr.app.sdp_source_info_beam_repositioning_flag := slv(sdp_info.beam_repositioning_flag); v_hdr.app.sdp_source_info_beamlet_width := TO_UVEC(c_sdp_W_beamlet, 4); - v_hdr.app.sdp_source_info_gn_id := TO_UVEC(gn_index, 5); + v_hdr.app.sdp_source_info_gn_id := TO_UVEC(gn_index, 8); - v_hdr.app.sdp_reserved := TO_UVEC(0, 40); + v_hdr.app.sdp_reserved := TO_UVEC(0, 32); v_hdr.app.sdp_beamlet_scale := TO_UVEC(beamlet_scale, 16); v_hdr.app.sdp_beamlet_index := TO_UVEC(beamlet_index, 16); v_hdr.app.sdp_nof_blocks_per_packet := TO_UVEC(c_sdp_cep_nof_blocks_per_packet, 8); @@ -396,14 +395,15 @@ PACKAGE BODY tb_sdp_pkg IS 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_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; - ASSERT in_hdr.app.sdp_source_info_f_adc = exp_hdr.app.sdp_source_info_f_adc REPORT "Wrong beamlet app.sdp_source_info_f_adc" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_fsub_type = exp_hdr.app.sdp_source_info_fsub_type REPORT "Wrong beamlet app.sdp_source_info_fsub_type" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_payload_error = exp_hdr.app.sdp_source_info_payload_error REPORT "Wrong beamlet app.sdp_source_info_payload_error" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_repositioning_flag = exp_hdr.app.sdp_source_info_repositioning_flag REPORT "Wrong beamlet app.sdp_source_info_repositioning_flag" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_beamlet_width = exp_hdr.app.sdp_source_info_beamlet_width REPORT "Wrong beamlet app.sdp_source_info_beamlet_width" SEVERITY ERROR; - ASSERT in_hdr.app.sdp_source_info_gn_id = exp_hdr.app.sdp_source_info_gn_id REPORT "Wrong beamlet app.sdp_source_info_gn_id" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_reserved = exp_hdr.app.sdp_source_info_reserved REPORT "Wrong beamlet app.sdp_source_info_reserved" 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; + ASSERT in_hdr.app.sdp_source_info_f_adc = exp_hdr.app.sdp_source_info_f_adc REPORT "Wrong beamlet app.sdp_source_info_f_adc" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_fsub_type = exp_hdr.app.sdp_source_info_fsub_type REPORT "Wrong beamlet app.sdp_source_info_fsub_type" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_payload_error = exp_hdr.app.sdp_source_info_payload_error REPORT "Wrong beamlet app.sdp_source_info_payload_error" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_beam_repositioning_flag = exp_hdr.app.sdp_source_info_beam_repositioning_flag REPORT "Wrong beamlet app.sdp_source_info_beam_repositioning_flag" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_beamlet_width = exp_hdr.app.sdp_source_info_beamlet_width REPORT "Wrong beamlet app.sdp_source_info_beamlet_width" SEVERITY ERROR; + ASSERT in_hdr.app.sdp_source_info_gn_id = exp_hdr.app.sdp_source_info_gn_id REPORT "Wrong beamlet app.sdp_source_info_gn_id" SEVERITY ERROR; ASSERT in_hdr.app.sdp_reserved = exp_hdr.app.sdp_reserved REPORT "Wrong beamlet app.sdp_reserved" SEVERITY ERROR; ASSERT in_hdr.app.sdp_beamlet_scale = exp_hdr.app.sdp_beamlet_scale REPORT "Wrong beamlet app.sdp_beamlet_scale" 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 6c49fb1c6ecd6ea92b0498db30238c663cd7dcab..3ecbe1e4c99adbab9bcf7a872c16baf28f801e93 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 @@ -336,10 +336,10 @@ BEGIN proc_common_wait_some_cycles(mm_clk, 10); -- Write statistics offload destination MAC/IP/UDP -- . obtain relative MM word addresses e.g. from lofar2_unb2c_sdp_station.mmap or from sdp.peripheral.yaml - proc_mem_mm_bus_wr(16#18#, TO_UINT(c_sdp_stat_udp_dst_port), mm_clk, hdr_dat_miso, hdr_dat_mosi); - proc_mem_mm_bus_wr(16#1A#, TO_SINT(c_sdp_stat_ip_dst_addr), mm_clk, hdr_dat_miso, hdr_dat_mosi); -- use signed to fit 32 b in INTEGER - proc_mem_mm_bus_wr(16#29#, TO_SINT(c_sdp_stat_eth_dst_mac(31 DOWNTO 0)), mm_clk, hdr_dat_miso, hdr_dat_mosi); -- use signed to fit 32 b in INTEGER - proc_mem_mm_bus_wr(16#2A#, TO_UINT(c_sdp_stat_eth_dst_mac(47 DOWNTO 32)), mm_clk, hdr_dat_miso, hdr_dat_mosi); + proc_mem_mm_bus_wr(16#17#, TO_UINT(c_sdp_stat_udp_dst_port), mm_clk, hdr_dat_miso, hdr_dat_mosi); + proc_mem_mm_bus_wr(16#19#, TO_SINT(c_sdp_stat_ip_dst_addr), mm_clk, hdr_dat_miso, hdr_dat_mosi); -- use signed to fit 32 b in INTEGER + proc_mem_mm_bus_wr(16#28#, TO_SINT(c_sdp_stat_eth_dst_mac(31 DOWNTO 0)), mm_clk, hdr_dat_miso, hdr_dat_mosi); -- use signed to fit 32 b in INTEGER + proc_mem_mm_bus_wr(16#29#, TO_UINT(c_sdp_stat_eth_dst_mac(47 DOWNTO 32)), mm_clk, hdr_dat_miso, hdr_dat_mosi); -- Enable common variable delay. proc_mem_mm_bus_wr(c_reg_enable_mm_addr_enable, 1, mm_clk, enable_miso, enable_mosi); diff --git a/libraries/base/ring/src/vhdl/ring_info.vhd b/libraries/base/ring/src/vhdl/ring_info.vhd index e1fbd16e32ca86c5a07df79654a30f34578ea79e..3b41d2034a5d6ba4b7dc7aa3464e8eba0dbc5d2c 100644 --- a/libraries/base/ring/src/vhdl/ring_info.vhd +++ b/libraries/base/ring/src/vhdl/ring_info.vhd @@ -38,10 +38,6 @@ USE common_lib.common_field_pkg.ALL; USE work.ring_pkg.ALL; ENTITY ring_info IS - GENERIC ( - -- Actual ring_info.O_rn field width can be less than a byte - g_ring_info_O_rn_w : NATURAL := c_byte_w - ); PORT ( -- Clocks and reset mm_rst : IN STD_LOGIC; -- reset synchronous with mm_clk @@ -62,8 +58,6 @@ ARCHITECTURE str OF ring_info IS SIGNAL mm_fields_out : STD_LOGIC_VECTOR(field_slv_out_len(c_ring_info_field_arr)-1 DOWNTO 0); - SIGNAL O_rn : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); - BEGIN u_mm_fields: ENTITY mm_lib.mm_fields @@ -87,9 +81,7 @@ BEGIN ); -- get "RW" fields from mm_fields - O_rn <= mm_fields_out(field_hi(c_ring_info_field_arr, "O_rn") DOWNTO field_lo(c_ring_info_field_arr, "O_rn")); - - ring_info.O_rn <= RESIZE_UVEC(O_rn(g_ring_info_O_rn_w-1 DOWNTO 0), c_byte_w); + ring_info.O_rn <= mm_fields_out(field_hi(c_ring_info_field_arr, "O_rn") DOWNTO field_lo(c_ring_info_field_arr, "O_rn")); ring_info.N_rn <= mm_fields_out(field_hi(c_ring_info_field_arr, "N_rn") DOWNTO field_lo(c_ring_info_field_arr, "N_rn")); ring_info.use_cable_to_previous_rn <= sl(mm_fields_out(field_hi(c_ring_info_field_arr, "use_cable_to_previous_rn") DOWNTO field_lo(c_ring_info_field_arr, "use_cable_to_previous_rn")));