diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml index 5bb941d05775856b5417be5bc07050ff9ee45607..d8b383280724a55beace100934ee5e93420c0380 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml @@ -244,22 +244,22 @@ peripherals: - RAM_ST_BST - peripheral_name: common/common_variable_delay - peripheral_group: bst + peripheral_group: bst0 mm_port_names: - REG_STAT_ENABLE_BST_0 - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_bst - peripheral_group: bst + peripheral_group: bst0 mm_port_names: - REG_STAT_HDR_DAT_BST_0 - peripheral_name: common/common_variable_delay - peripheral_group: bst + peripheral_group: bst1 mm_port_names: - REG_STAT_ENABLE_BST_1 - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_bst - peripheral_group: bst + peripheral_group: bst1 mm_port_names: - REG_STAT_HDR_DAT_BST_1 diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml index 2542eff1d91997df3074d65cd3546b415a56bfc5..0b5da7eda85b1ce312f2720313fa315772f28c7b 100644 --- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml +++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml @@ -24,14 +24,12 @@ peripherals: - - { field_name: f_adc, mm_width: 1, access_mode: RO, address_offset: 0x10 } - - { field_name: fsub_type, mm_width: 1, access_mode: RO, address_offset: 0x14 } - - { field_name: beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x18 } - - - { field_name: subband_calibrated_flag, mm_width: 1, access_mode: RW, address_offset: 0x1C } - - - { field_name: O_si, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: N_si, mm_width: 8, access_mode: RW, address_offset: 0x24 } - - - { field_name: O_rn, mm_width: 8, access_mode: RW, address_offset: 0x28 } - - - { field_name: N_rn, mm_width: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: block_period, mm_width: 16, access_mode: RO, address_offset: 0x30 } - - - { field_name: beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x34 } - + - - { field_name: O_si, mm_width: 8, access_mode: RW, address_offset: 0x1C } + - - { field_name: N_si, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: O_rn, mm_width: 8, access_mode: RW, address_offset: 0x24 } + - - { field_name: N_rn, mm_width: 8, access_mode: RW, address_offset: 0x28 } + - - { field_name: block_period, mm_width: 16, access_mode: RO, address_offset: 0x2C } + - - { field_name: beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x30 } - peripheral_name: sdp_subband_equalizer # pi_sdp_subband_equalizer.py peripheral_description: "SDP Subband equalizer coefficients." diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd index cea8db61daf21b5f74863ceeddee8085124c7e26..51de3371d0576e1947962dd91cc07a744f23160a 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd @@ -118,7 +118,9 @@ ARCHITECTURE str OF node_sdp_filterbank IS SIGNAL subband_equalizer_out_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL dp_selector_out_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL scope_sosi_arr : t_dp_sosi_integer_arr(c_sdp_S_pn-1 DOWNTO 0); - + + SIGNAL selector_en : STD_LOGIC; + SIGNAL subband_calibrated_flag : STD_LOGIC; BEGIN --------------------------------------------------------------- -- SPECTRAL INVERSION @@ -224,7 +226,9 @@ BEGIN pipe_sosi_arr => wpfb_unit_out_sosi_arr, ref_sosi_arr => subband_equalizer_out_sosi_arr, - out_sosi_arr => dp_selector_out_sosi_arr + out_sosi_arr => dp_selector_out_sosi_arr, + + selector_en => selector_en ); --------------------------------------------------------------- @@ -307,6 +311,8 @@ BEGIN --------------------------------------------------------------- -- STATISTICS OFFLOAD --------------------------------------------------------------- + subband_calibrated_flag <= NOT selector_en; + u_sdp_sst_udp_offload: ENTITY work.sdp_statistics_offload GENERIC MAP ( g_statistics_type => "SST", @@ -330,6 +336,7 @@ BEGIN sdp_info => sdp_info, gn_index => TO_UINT(gn_id), + subband_calibrated_flag => subband_calibrated_flag, in_sosi => dp_selector_out_sosi_arr(0), out_sosi => sst_udp_sosi, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd index bcd6e5a201e0665eca382bc41940a8684bfe3273..e3497967e850d654ab0c24440e158f6a6442e680 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_info_reg.vhd @@ -60,7 +60,7 @@ END sdp_info_reg; ARCHITECTURE str OF sdp_info_reg IS - CONSTANT c_field_arr : t_common_field_arr(13 DOWNTO 0) := + CONSTANT c_field_arr : t_common_field_arr(12 DOWNTO 0) := ( (field_name_pad("station_id"), "RW", 16, field_default(0)), (field_name_pad("antenna_band_index"), "RO", 1, field_default(0)), (field_name_pad("observation_id"), "RW", 32, field_default(0)), @@ -68,7 +68,6 @@ ARCHITECTURE str OF sdp_info_reg IS (field_name_pad("f_adc"), "RO", 1, field_default(0)), (field_name_pad("fsub_type"), "RO", 1, field_default(0)), (field_name_pad("beam_repositioning_flag"), "RW", 1, field_default(0)), - (field_name_pad("subband_calibrated_flag"), "RW", 1, field_default(0)), (field_name_pad("O_si"), "RW", 8, field_default(0)), (field_name_pad("N_si"), "RW", 8, field_default(0)), (field_name_pad("O_rn"), "RW", 8, field_default(0)), @@ -131,7 +130,6 @@ BEGIN sdp_info_wr.observation_id <= mm_fields_out(field_hi(c_field_arr, "observation_id") DOWNTO field_lo(c_field_arr, "observation_id")); sdp_info_wr.nyquist_zone_index <= mm_fields_out(field_hi(c_field_arr, "nyquist_zone_index") DOWNTO field_lo(c_field_arr, "nyquist_zone_index")); sdp_info_wr.beam_repositioning_flag <= sl(mm_fields_out(field_hi(c_field_arr, "beam_repositioning_flag") DOWNTO field_lo(c_field_arr, "beam_repositioning_flag"))); - sdp_info_wr.subband_calibrated_flag <= sl(mm_fields_out(field_hi(c_field_arr, "subband_calibrated_flag") DOWNTO field_lo(c_field_arr, "subband_calibrated_flag"))); sdp_info_wr.O_si <= mm_fields_out(field_hi(c_field_arr, "O_si") DOWNTO field_lo(c_field_arr, "O_si")); sdp_info_wr.N_si <= mm_fields_out(field_hi(c_field_arr, "N_si") DOWNTO field_lo(c_field_arr, "N_si")); sdp_info_wr.O_rn <= mm_fields_out(field_hi(c_field_arr, "O_rn") DOWNTO field_lo(c_field_arr, "O_rn")); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 00b4b5ed89099bea08523565cf334bf162088f70..c9f6d40418bc44bc504ec0f783e02c24a4dd3206 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -51,7 +51,6 @@ PACKAGE sdp_pkg is f_adc : STD_LOGIC; fsub_type : STD_LOGIC; beam_repositioning_flag : STD_LOGIC; - subband_calibrated_flag : STD_LOGIC; O_si : STD_LOGIC_VECTOR(7 DOWNTO 0); N_si : STD_LOGIC_VECTOR(7 DOWNTO 0); O_rn : STD_LOGIC_VECTOR(7 DOWNTO 0); @@ -62,7 +61,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_info_rst : t_sdp_info := ( (OTHERS => '0'), '0', (OTHERS => '0'), (OTHERS => '0'), - '0', '0', '0', '0', + '0', '0', '0', (OTHERS => '0'), (OTHERS => '0'), (OTHERS => '0'), (OTHERS => '0'), (OTHERS => '0'), (OTHERS => '0') ); 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 8a5953606a796ee0ac203c5265b200167b5ace99..dce30f2147dcd9cf534c73e145618a69d9fc2f59 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd @@ -74,10 +74,11 @@ ENTITY sdp_statistics_offload IS out_siso : IN t_dp_siso; -- inputs from other blocks - eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); - udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); - ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0); - sdp_info : IN t_sdp_info; + eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); + udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); + ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0); + sdp_info : IN t_sdp_info; + subband_calibrated_flag : IN STD_LOGIC := '0'; gn_index : IN NATURAL ); @@ -168,7 +169,7 @@ BEGIN dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_fsub_type" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_fsub_type" )) <= SLV(sdp_info.fsub_type); 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(r.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_subband_calibrated_flag" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_subband_calibrated_flag" )) <= SLV(sdp_info.subband_calibrated_flag); + dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_subband_calibrated_flag" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_subband_calibrated_flag" )) <= SLV(subband_calibrated_flag); dp_header_info(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" )) <= (OTHERS => '0'); 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(gn_index, 5); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_reserved" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_reserved" )) <= (OTHERS => '0'); diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd index 2f691bdbcdd74a93cb43dd6db278bf85d1fcab60..e5dd58d4268f8d3efbd19229577b823a42c17d19 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_info.vhd @@ -58,14 +58,13 @@ ARCHITECTURE tb OF tb_sdp_info IS CONSTANT c_mm_addr_O_rn : NATURAL := 3; CONSTANT c_mm_addr_N_si : NATURAL := 4; CONSTANT c_mm_addr_O_si : NATURAL := 5; - CONSTANT c_mm_addr_subband_calibrated_flag : NATURAL := 6; - CONSTANT c_mm_addr_beam_repositioning_flag : NATURAL := 7; - CONSTANT c_mm_addr_fsub_type : NATURAL := 8; - CONSTANT c_mm_addr_f_adc : NATURAL := 9; - CONSTANT c_mm_addr_nyquist_zone_index : NATURAL := 10; - CONSTANT c_mm_addr_observation_id : NATURAL := 11; - CONSTANT c_mm_addr_antenna_band_index : NATURAL := 12; - CONSTANT c_mm_addr_station_id : NATURAL := 13; + CONSTANT c_mm_addr_beam_repositioning_flag : NATURAL := 6; + CONSTANT c_mm_addr_fsub_type : NATURAL := 7; + CONSTANT c_mm_addr_f_adc : NATURAL := 8; + CONSTANT c_mm_addr_nyquist_zone_index : NATURAL := 9; + CONSTANT c_mm_addr_observation_id : NATURAL := 10; + CONSTANT c_mm_addr_antenna_band_index : NATURAL := 11; + CONSTANT c_mm_addr_station_id : NATURAL := 12; SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL tb_mm_reg_end : STD_LOGIC := '0'; @@ -110,7 +109,6 @@ BEGIN proc_mem_mm_bus_wr(c_mm_addr_O_rn ,13 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_N_si ,14 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_O_si ,15 ,mm_clk, reg_miso, reg_mosi); - proc_mem_mm_bus_wr(c_mm_addr_subband_calibrated_flag,1 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_beam_repositioning_flag,1 ,mm_clk, reg_miso, reg_mosi); proc_mem_mm_bus_wr(c_mm_addr_fsub_type ,1 ,mm_clk, reg_miso, reg_mosi); -- RO proc_mem_mm_bus_wr(c_mm_addr_f_adc ,1 ,mm_clk, reg_miso, reg_mosi); -- RO @@ -144,10 +142,6 @@ BEGIN mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 15 REPORT "wrong O_si" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_subband_calibrated_flag, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); - mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); - ASSERT mm_natural_response = 1 REPORT "wrong subband_calibrated_flag" SEVERITY ERROR; - proc_mem_mm_bus_rd(c_mm_addr_beam_repositioning_flag, mm_clk, reg_mosi); proc_mem_mm_bus_rd_latency(c_mem_reg_rd_latency, mm_clk); mm_natural_response <= TO_UINT(reg_miso.rddata); proc_common_wait_some_cycles(mm_clk, 1); ASSERT mm_natural_response = 1 REPORT "wrong beam_repositioning_flag" SEVERITY ERROR; @@ -235,7 +229,6 @@ BEGIN ASSERT TO_UINT(sdp_info.O_rn) = 13 REPORT "wrong sdp_info.O_rn value" SEVERITY ERROR; ASSERT TO_UINT(sdp_info.N_si) = 14 REPORT "wrong sdp_info.N_si value" SEVERITY ERROR; ASSERT TO_UINT(sdp_info.O_si) = 15 REPORT "wrong sdp_info.O_si value" SEVERITY ERROR; - ASSERT sdp_info.subband_calibrated_flag = '1' REPORT "wrong sdp_info.subband_calibrated_flag value" SEVERITY ERROR; ASSERT sdp_info.beam_repositioning_flag = '1' REPORT "wrong sdp_info.beam_repositioning_flag value" SEVERITY ERROR; ASSERT sdp_info.fsub_type = '1' REPORT "wrong sdp_info.fsub_type value" SEVERITY ERROR; ASSERT sdp_info.f_adc = '1' REPORT "wrong sdp_info.f_adc value" 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 751119c7d17c5a81dc1d7a0544e5f43001d2cf3c..ad26814881b3aa41ff5e9114e3f3128ca294f5d8 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 @@ -145,7 +145,6 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS '0', -- f_adc '1', -- fsub_type '0', -- beam_repositioning_flag - '1', -- subband_calibrated_flag x"01", -- O_si x"02", -- N_si x"04", -- O_rn diff --git a/libraries/base/dp/src/vhdl/dp_selector.vhd b/libraries/base/dp/src/vhdl/dp_selector.vhd index f3eb8790bb103007e06e439bc044b668aaebe37e..682bbb15d1afe3dd8035d1c1bcb7abcf6a297455 100644 --- a/libraries/base/dp/src/vhdl/dp_selector.vhd +++ b/libraries/base/dp/src/vhdl/dp_selector.vhd @@ -52,7 +52,9 @@ ENTITY dp_selector IS pipe_sosi : IN t_dp_sosi; ref_sosi : IN t_dp_sosi; - out_sosi : OUT t_dp_sosi + out_sosi : OUT t_dp_sosi; + + selector_en : OUT STD_LOGIC ); END dp_selector; @@ -76,7 +78,9 @@ BEGIN pipe_sosi_arr(0) => pipe_sosi, ref_sosi_arr(0) => ref_sosi, - out_sosi_arr(0) => out_sosi + out_sosi_arr(0) => out_sosi, + + selector_en => selector_en ); END str; diff --git a/libraries/base/dp/src/vhdl/dp_selector_arr.vhd b/libraries/base/dp/src/vhdl/dp_selector_arr.vhd index 5b5f2c8d6c5a5f9eaffb6a545f281e3d6760d036..38c352179337af02be8c7791da4914c78f35f814 100644 --- a/libraries/base/dp/src/vhdl/dp_selector_arr.vhd +++ b/libraries/base/dp/src/vhdl/dp_selector_arr.vhd @@ -56,7 +56,9 @@ ENTITY dp_selector_arr IS pipe_sosi_arr : IN t_dp_sosi_arr(g_nof_arr-1 DOWNTO 0); ref_sosi_arr : IN t_dp_sosi_arr(g_nof_arr-1 DOWNTO 0); - out_sosi_arr : OUT t_dp_sosi_arr(g_nof_arr-1 DOWNTO 0) + out_sosi_arr : OUT t_dp_sosi_arr(g_nof_arr-1 DOWNTO 0); + + selector_en : OUT STD_LOGIC ); END dp_selector_arr; @@ -72,6 +74,8 @@ ARCHITECTURE str OF dp_selector_arr IS BEGIN + selector_en <= reg_selector_en(0); + u_mms_common_reg : ENTITY common_lib.mms_common_reg GENERIC MAP ( g_mm_reg => c_selector_mem_reg