Skip to content
Snippets Groups Projects
Commit 70a06fd9 authored by Pieter Donker's avatar Pieter Donker
Browse files

L2SDP-200: backup

parent 3f9d0a67
No related branches found
No related tags found
2 merge requests!100Removed text for XSub that is now written in Confluence Subband correlator...,!67Resolve L2SDP-200
...@@ -199,6 +199,58 @@ PACKAGE sdp_pkg is ...@@ -199,6 +199,58 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_reg_nw_10GbE_mac_addr_w : NATURAL := 13; CONSTANT c_sdp_reg_nw_10GbE_mac_addr_w : NATURAL := 13;
CONSTANT c_sdp_reg_nw_10GbE_eth10g_addr_w : NATURAL := 1; CONSTANT c_sdp_reg_nw_10GbE_eth10g_addr_w : NATURAL := 1;
-- statistics SST offload
CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 3+12+4+20+1; -- 592b; 9.25 64b words
CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"11111111111111111110"&"1"; -- 0=data path, 1=MM controlled TODO
CONSTANT c_sdp_stat_hdr_field_arr : t_common_field_arr(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := (
( field_name_pad("eth_dst_mac" ), "RW", 48, field_default(x"00074306C700") ), -- 00074306C700=DOP36-eth0
( field_name_pad("eth_src_mac" ), "RW", 48, field_default(0) ),
( field_name_pad("eth_type" ), "RW", 16, field_default(x"0800") ),
( field_name_pad("ip_version" ), "RW", 4, field_default(4) ),
( field_name_pad("ip_header_length" ), "RW", 4, field_default(5) ),
( field_name_pad("ip_services" ), "RW", 8, field_default(0) ),
( field_name_pad("ip_total_length" ), "RW", 16, field_default(7868) ),
( field_name_pad("ip_identification" ), "RW", 16, field_default(0) ),
( field_name_pad("ip_flags" ), "RW", 3, field_default(2) ),
( field_name_pad("ip_fragment_offset" ), "RW", 13, field_default(0) ),
( field_name_pad("ip_time_to_live" ), "RW", 8, field_default(127) ),
( field_name_pad("ip_protocol" ), "RW", 8, field_default(17) ),
( field_name_pad("ip_header_checksum" ), "RW", 16, field_default(0) ),
( field_name_pad("ip_src_addr" ), "RW", 32, field_default(0) ),
( field_name_pad("ip_dst_addr" ), "RW", 32, field_default(x"C0A80001") ), -- C0A80001=DOP36-eth0 '192.168.0.1'
( field_name_pad("udp_src_port" ), "RW", 16, field_default(0) ),
( field_name_pad("udp_dst_port" ), "RW", 16, field_default(0) ),
( field_name_pad("udp_total_length" ), "RW", 16, field_default(7848) ),
( field_name_pad("udp_checksum" ), "RW", 16, field_default(0) ),
( field_name_pad("sdp_marker" ), "RW", 8, field_default(0) ),
( field_name_pad("sdp_version_id" ), "RW", 8, field_default(1) ),
( field_name_pad("sdp_observation_id" ), "RW", 32, field_default(0) ),
( field_name_pad("sdp_station_id" ), "RW", 16, field_default(0) ),
( field_name_pad("sdp_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_subband_calibrated_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_reserved" ), "RW", 8, field_default(0) ),
( field_name_pad("sdp_integration_interval" ), "RW", 24, field_default(0) ),
( field_name_pad("sdp_data_id" ), "RW", 32, field_default(0) ),
( field_name_pad("sdp_nof_signal_inputs" ), "RW", 8, field_default(0) ),
( field_name_pad("sdp_nof_bytes_per_statistics" ), "RW", 8, field_default(8) ),
( field_name_pad("sdp_nof_statistics_per_package" ), "RW", 16, field_default(0) ),
( field_name_pad("sdp_block_period" ), "RW", 16, field_default(5120) ),
( field_name_pad("dp_bsn" ), "RW", 64, field_default(0) )
);
END PACKAGE sdp_pkg; END PACKAGE sdp_pkg;
PACKAGE BODY sdp_pkg IS PACKAGE BODY sdp_pkg IS
......
...@@ -86,7 +86,9 @@ ENTITY sdp_statistics_offload IS ...@@ -86,7 +86,9 @@ ENTITY sdp_statistics_offload IS
reg_hdr_dat_miso : OUT t_mem_miso; reg_hdr_dat_miso : OUT t_mem_miso;
in_sosi : IN t_dp_sosi; -- from selector (sst_sosi_arr[0]) in_sosi : IN t_dp_sosi; -- from selector (sst_sosi_arr[0])
out_sosi : OUT t_dp_sosi; -- output from SST UDP offload (sst_udp_sosi) out_sosi : OUT t_dp_sosi; -- output from SST UDP offload (sst_udp_sosi)
out_siso : IN t_dp_siso; -- input from SST UDP offload (sst_udp_siso)
-- inputs from other blocks -- inputs from other blocks
eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
...@@ -129,6 +131,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS ...@@ -129,6 +131,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS
SIGNAL m_mosi : t_mem_mosi; SIGNAL m_mosi : t_mem_mosi;
SIGNAL m_miso : t_mem_miso; SIGNAL m_miso : t_mem_miso;
SIGNAL trigger : STD_LOGIC := '0'; SIGNAL trigger : STD_LOGIC := '0';
SIGNAL nof_cycles_dly : NATURAL := 0; SIGNAL nof_cycles_dly : NATURAL := 0;
SIGNAL mm_done : STD_LOGIC := '0'; SIGNAL mm_done : STD_LOGIC := '0';
...@@ -140,64 +143,10 @@ ARCHITECTURE str OF sdp_statistics_offload IS ...@@ -140,64 +143,10 @@ ARCHITECTURE str OF sdp_statistics_offload IS
SIGNAL dp_header_info : STD_LOGIC_VECTOR(1023 DOWNTO 0):= (OTHERS => '0'); SIGNAL dp_header_info : STD_LOGIC_VECTOR(1023 DOWNTO 0):= (OTHERS => '0');
SIGNAL payload_err : STD_LOGIC := '0'; SIGNAL payload_err : STD_LOGIC := '0';
SIGNAL integration_interval_cnt : NATURAL := 0; SIGNAL integration_interval_cnt : NATURAL := 0;
SIGNAL integration_interval : STD_LOGIC_VECTOR(24-1 DOWNTO 0) := (OTHERS => '0'); SIGNAL integration_interval : STD_LOGIC_VECTOR(23 DOWNTO 0) := (OTHERS => '0');
SIGNAL bsn_at_sync : STD_LOGIC_VECTOR(64-1 DOWNTO 0) := (OTHERS => '0'); SIGNAL bsn_at_sync : STD_LOGIC_VECTOR(63 DOWNTO 0) := x"f0f0f0f0f0f0f0f0"; -- (OTHERS => '0');
SIGNAL sdp_data_id : STD_LOGIC_VECTOR(32-1 DOWNTO 0);
------------------------------------------------------------------------------- SIGNAL sdp_data_id : STD_LOGIC_VECTOR(31 DOWNTO 0);
-- dp_offload_tx
-------------------------------------------------------------------------------
CONSTANT c_nof_hdr_fields : NATURAL := 3+12+4+20+1; -- 592b; 9.25 64b words
-- c_hdr_field_sel for each field: 0=data path, 1=MM controlled
CONSTANT c_hdr_field_sel : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"00000000000000000000"&"0"; -- TODO
CONSTANT c_hdr_field_arr : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_dst_mac" ), "RW", 48, field_default(x"00074306C700") ), -- 00074306C700=DOP36-eth0
( field_name_pad("eth_src_mac" ), "RW", 48, field_default(0) ),
( field_name_pad("eth_type" ), "RO", 16, field_default(x"0800") ),
( field_name_pad("ip_version" ), "RO", 4, field_default(4) ),
( field_name_pad("ip_header_length" ), "RO", 4, field_default(5) ),
( field_name_pad("ip_services" ), "RO", 8, field_default(0) ),
( field_name_pad("ip_total_length" ), "RO", 16, field_default(7868) ),
( field_name_pad("ip_identification" ), "RO", 16, field_default(0) ),
( field_name_pad("ip_flags" ), "RO", 3, field_default(2) ),
( field_name_pad("ip_fragment_offset" ), "RO", 13, field_default(0) ),
( field_name_pad("ip_time_to_live" ), "RO", 8, field_default(127) ),
( field_name_pad("ip_protocol" ), "RO", 8, field_default(17) ),
( field_name_pad("ip_header_checksum" ), "RW", 16, field_default(0) ),
( field_name_pad("ip_src_addr" ), "RW", 32, field_default(0) ),
( field_name_pad("ip_dst_addr" ), "RW", 32, field_default(x"C0A80001") ), -- C0A80001=DOP36-eth0 '192.168.0.1'
( field_name_pad("udp_src_port" ), "RW", 16, field_default(0) ),
( field_name_pad("udp_dst_port" ), "RW", 16, field_default(0) ),
( field_name_pad("udp_total_length" ), "RO", 16, field_default(7848) ),
( field_name_pad("udp_checksum" ), "RO", 16, field_default(0) ),
( field_name_pad("sdp_marker" ), "RO", 8, field_default(c_marker) ),
( field_name_pad("sdp_version_id" ), "RO", 8, field_default(c_version) ),
( field_name_pad("sdp_observation_id" ), "RW", 32, field_default(0) ),
( field_name_pad("sdp_station_id" ), "RW", 16, field_default(0) ),
( field_name_pad("sdp_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_subband_calibrated_flag" ), "RW", 1, field_default(0) ),
( field_name_pad("sdp_source_info_reserved" ), "RO", 3, field_default(0) ),
( field_name_pad("sdp_source_info_gn_id" ), "RW", 5, field_default(0) ),
( field_name_pad("sdp_reserved" ), "RO", 8, field_default(0) ),
( field_name_pad("sdp_integration_interval" ), "RW", 24, field_default(0) ),
( field_name_pad("sdp_data_id" ), "RW", 32, field_default(0) ),
( field_name_pad("sdp_nof_signal_inputs" ), "RO", 8, field_default(c_nof_signal_inputs) ),
( field_name_pad("sdp_nof_bytes_per_statistics" ), "RO", 8, field_default(8) ),
( field_name_pad("sdp_nof_statistics_per_package" ), "RO", 16, field_default(c_nof_statistics_per_package) ),
( field_name_pad("sdp_block_period" ), "RO", 16, field_default(5120) ),
( field_name_pad("dp_bsn" ), "RW", 64, field_default(0) ) );
BEGIN BEGIN
...@@ -208,7 +157,7 @@ BEGIN ...@@ -208,7 +157,7 @@ BEGIN
p_bsn_at_sync : PROCESS(in_sosi) p_bsn_at_sync : PROCESS(in_sosi)
BEGIN BEGIN
IF in_sosi.sync = '1' THEN IF in_sosi.sync = '1' THEN
bsn_at_sync <= in_sosi.bsn(63 DOWNTO 0); bsn_at_sync(63 DOWNTO 0) <= in_sosi.bsn(63 DOWNTO 0);
END IF; END IF;
END PROCESS; END PROCESS;
...@@ -243,27 +192,30 @@ BEGIN ...@@ -243,27 +192,30 @@ BEGIN
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Assemble offload info -- Assemble offload info
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
dp_header_info(field_hi(c_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac" )) <= eth_src_mac; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "eth_src_mac" )) <= eth_src_mac;
dp_header_info(field_hi(c_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_hdr_field_arr, "udp_src_port")) <= udp_src_port; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_src_port")) <= udp_src_port;
dp_header_info(field_hi(c_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_src_addr" )) <= ip_src_addr; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_src_addr" )) <= ip_src_addr;
dp_header_info(field_hi(c_hdr_field_arr, "sdp_observation_id" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_observation_id" )) <= sdp_info.observation_id; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_marker" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_marker" )) <= TO_UVEC(c_marker, 8);
dp_header_info(field_hi(c_hdr_field_arr, "sdp_station_id" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_station_id" )) <= sdp_info.station_id; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_observation_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_observation_id" )) <= sdp_info.observation_id;
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_antenna_band_id" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_source_info_antenna_band_id" )) <= SLV(sdp_info.antenna_band_index); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_station_id" )) <= sdp_info.station_id;
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_nyquist_zone_id" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_source_info_nyquist_zone_id" )) <= sdp_info.nyquist_zone_index; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_antenna_band_id" )) <= SLV(sdp_info.antenna_band_index);
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_f_adc" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_source_info_f_adc" )) <= SLV(sdp_info.f_adc); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_nyquist_zone_id" )) <= sdp_info.nyquist_zone_index;
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_fsub_type" ) DOWNTO field_lo(c_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_f_adc" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_f_adc" )) <= SLV(sdp_info.f_adc);
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_payload_error" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_source_info_payload_error" )) <= SLV(payload_err); 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_hdr_field_arr, "sdp_source_info_beam_repositioning_flag" ) DOWNTO field_lo(c_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_payload_error" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_payload_error" )) <= SLV(payload_err);
dp_header_info(field_hi(c_hdr_field_arr, "sdp_source_info_subband_calibrated_flag" ) DOWNTO field_lo(c_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_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_hdr_field_arr, "sdp_source_info_reserved" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_source_info_reserved" )) <= (OTHERS => '0'); 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_hdr_field_arr, "sdp_source_info_gn_id" ) DOWNTO field_lo(c_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_source_info_reserved" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_source_info_reserved" )) <= (OTHERS => '0');
dp_header_info(field_hi(c_hdr_field_arr, "sdp_reserved" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_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_hdr_field_arr, "sdp_integration_interval" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_integration_interval" )) <= integration_interval; 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');
dp_header_info(field_hi(c_hdr_field_arr, "sdp_data_id" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_data_id" )) <= sdp_data_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" )) <= integration_interval;
dp_header_info(field_hi(c_hdr_field_arr, "sdp_block_period" ) DOWNTO field_lo(c_hdr_field_arr, "sdp_block_period" )) <= sdp_info.block_period; 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" )) <= sdp_data_id;
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);
dp_header_info(field_hi(c_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "dp_bsn" )) <= bsn_at_sync; dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_nof_statistics_per_package" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_nof_statistics_per_package" )) <= TO_UVEC(c_nof_statistics_per_package, 16);
dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_block_period" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_block_period" )) <= sdp_info.block_period;
dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "dp_bsn" )) <= bsn_at_sync;
...@@ -319,7 +271,7 @@ BEGIN ...@@ -319,7 +271,7 @@ BEGIN
u_mms_common_variable_delay : ENTITY common_lib.mms_common_variable_delay u_mms_common_variable_delay : ENTITY common_lib.mms_common_variable_delay
GENERIC MAP ( GENERIC MAP (
g_max_delay => 1 g_max_delay => 4
) )
PORT MAP ( PORT MAP (
mm_rst => mm_rst, mm_rst => mm_rst,
...@@ -359,8 +311,8 @@ BEGIN ...@@ -359,8 +311,8 @@ BEGIN
g_nof_streams => c_nof_streams, g_nof_streams => c_nof_streams,
g_data_w => c_word_w, g_data_w => c_word_w,
g_symbol_w => c_byte_w, g_symbol_w => c_byte_w,
g_hdr_field_arr => c_hdr_field_arr, g_hdr_field_arr => c_sdp_stat_hdr_field_arr,
g_hdr_field_sel => c_hdr_field_sel g_hdr_field_sel => c_sdp_stat_hdr_field_sel
) )
PORT MAP( PORT MAP(
mm_rst => mm_rst, mm_rst => mm_rst,
...@@ -372,6 +324,7 @@ BEGIN ...@@ -372,6 +324,7 @@ BEGIN
snk_in_arr(0) => dp_block_from_mm_src_out, snk_in_arr(0) => dp_block_from_mm_src_out,
snk_out_arr(0) => dp_block_from_mm_src_in, snk_out_arr(0) => dp_block_from_mm_src_in,
src_out_arr(0) => out_sosi, src_out_arr(0) => out_sosi,
src_in_arr(0) => out_siso,
hdr_fields_in_arr(0) => r.dp_header_info -- hdr_fields_in_arr(i) is considered valid @ snk_in_arr(i).sop hdr_fields_in_arr(0) => r.dp_header_info -- hdr_fields_in_arr(i) is considered valid @ snk_in_arr(i).sop
); );
END str; END str;
...@@ -92,14 +92,17 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS ...@@ -92,14 +92,17 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
SIGNAL hdr_dat_miso : t_mem_miso; SIGNAL hdr_dat_miso : t_mem_miso;
SIGNAL in_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL in_sosi : t_dp_sosi := c_dp_sosi_rst;
SIGNAL out_sosi : t_dp_sosi; SIGNAL offload_sosi : t_dp_sosi;
SIGNAL offload_siso : t_dp_siso := c_dp_siso_rst;
SIGNAL test_offload_sosi : t_dp_sosi;
-- signals used to change settings of sdp_info -- signals used to change settings of sdp_info
SIGNAL gn_index : NATURAL := 15; SIGNAL gn_index : NATURAL := 15;
SIGNAL f_adc : STD_LOGIC := '0'; SIGNAL f_adc : STD_LOGIC := '0';
SIGNAL fsub_type : STD_LOGIC := '0'; SIGNAL fsub_type : STD_LOGIC := '0';
SIGNAL sdp_info : t_sdp_info; SIGNAL sdp_info : t_sdp_info := ( x"0001", '0', x"00000003", b"01", '0', '0', '0', '0', x"00", x"00", x"00", x"00", x"0000", x"0000");
-- signals used for response of mm bus -- signals used for response of mm bus
SIGNAL mm_natural_response : NATURAL; SIGNAL mm_natural_response : NATURAL;
...@@ -146,6 +149,8 @@ BEGIN ...@@ -146,6 +149,8 @@ BEGIN
-- enable common variabel delay -- enable common variabel delay
proc_mem_mm_bus_wr(c_mm_addr_enable, 1, mm_clk, enable_miso, enable_mosi); proc_mem_mm_bus_wr(c_mm_addr_enable, 1, mm_clk, enable_miso, enable_mosi);
proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency); proc_common_wait_some_cycles(mm_clk, c_cross_clock_domain_latency);
--offload_siso <= c_dp_siso_rdy;
proc_common_wait_some_cycles(mm_clk, 1);
FOR i IN 0 TO g_nof_signal_inputs_per_pn LOOP FOR i IN 0 TO g_nof_signal_inputs_per_pn LOOP
in_sosi.sync <= '1'; in_sosi.sync <= '1';
in_sosi.valid <= '1'; in_sosi.valid <= '1';
...@@ -172,9 +177,9 @@ BEGIN ...@@ -172,9 +177,9 @@ BEGIN
proc_common_wait_some_cycles(mm_clk, 100); proc_common_wait_some_cycles(mm_clk, 100);
-- station_id, antenna_band_index, observation_id, nyquist_zone_index, f_adc, fsub_type, beam_repositioning_flag, subband_calibrated_flag, O_si, N_si, O_rn, N_rn, block_period, beamlet_scale -- station_id, antenna_band_index, observation_id, nyquist_zone_index, f_adc, fsub_type, beam_repositioning_flag, subband_calibrated_flag, O_si, N_si, O_rn, N_rn, block_period, beamlet_scale
sdp_info <= ( x"0001", '0', x"00000003", b"01", '0', '0', '0', '0', x"00", x"00", x"00", x"00", x"0000", x"0000"); --sdp_info <= ( x"0001", '0', x"00000003", b"01", '0', '0', '0', '0', x"00", x"00", x"00", x"00", x"0000", x"0000");
proc_common_wait_some_cycles(mm_clk, 1); proc_common_wait_some_cycles(mm_clk, 1);
out_sosi.sync <= '1'; --in_sosi.sync <= '1';
proc_common_wait_some_cycles(mm_clk, 100); proc_common_wait_some_cycles(mm_clk, 100);
tb_end <= '1'; tb_end <= '1';
...@@ -209,6 +214,21 @@ BEGIN ...@@ -209,6 +214,21 @@ BEGIN
rd_val_b => OPEN rd_val_b => OPEN
); );
p_test_offload : PROCESS(offload_sosi, in_sosi)
BEGIN
offload_siso <= c_dp_siso_rst;
IF init_ram_done = '1' THEN
test_offload_sosi <= c_dp_sosi_rst;
test_offload_sosi.data <= offload_sosi.data;
test_offload_sosi.empty <= offload_sosi.empty;
test_offload_sosi.valid <= offload_sosi.valid;
test_offload_sosi.sop <= offload_sosi.sop;
test_offload_sosi.eop <= offload_sosi.eop;
offload_siso <= c_dp_siso_rdy;
END IF;
END PROCESS;
-- SDP info -- SDP info
u_dut: ENTITY work.sdp_statistics_offload u_dut: ENTITY work.sdp_statistics_offload
GENERIC MAP ( GENERIC MAP (
...@@ -236,7 +256,8 @@ BEGIN ...@@ -236,7 +256,8 @@ BEGIN
gn_index => gn_index, gn_index => gn_index,
in_sosi => in_sosi, in_sosi => in_sosi,
out_sosi => out_sosi, out_sosi => offload_sosi,
out_siso => offload_siso,
eth_src_mac => c_eth_src_mac, eth_src_mac => c_eth_src_mac,
udp_src_port => c_udp_src_port, udp_src_port => c_udp_src_port,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment