diff --git a/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd b/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd index 067bddea16e727b6d440973c327844e6a50d065b..4bbde54b413729bf0abf82a7fd09971b244263fc 100644 --- a/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd +++ b/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd @@ -133,188 +133,191 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS -- dp_offload_tx -- . IP total length : 2948 (UDP total lenth) + 20 (Ip header length) = 2968 -- . UDP total length: 8 (UDP header) + 20 (usr header) + 2920 (payload bytes) = 2948 -- 1488 - CONSTANT c_ip_length : NATURAL := 2970; - CONSTANT c_udp_length : NATURAL := 2950; + CONSTANT c_ip_length : NATURAL := 2970; + CONSTANT c_udp_length : NATURAL := 2950; CONSTANT c_nof_hdr_fields : NATURAL := 3+12+4+9+1; -- Total header bits = 512 CONSTANT c_hdr_field_arr : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_dst_mac" ), " ", 48, field_default(0) ), - ( field_name_pad("eth_src_mac" ), " ", 48, field_default(0) ), - ( field_name_pad("eth_type" ), " ", 16, field_default(x"0800") ), - ( field_name_pad("ip_version" ), " ", 4, field_default(4) ), - ( field_name_pad("ip_header_length" ), " ", 4, field_default(5) ), - ( field_name_pad("ip_services" ), " ", 8, field_default(0) ), - ( field_name_pad("ip_total_length" ), " ", 16, field_default(c_ip_length) ), --1508) ), - ( field_name_pad("ip_identification" ), " ", 16, field_default(0) ), - ( field_name_pad("ip_flags" ), " ", 3, field_default(2) ), - ( field_name_pad("ip_fragment_offset" ), " ", 13, field_default(0) ), - ( field_name_pad("ip_time_to_live" ), " ", 8, field_default(127) ), - ( field_name_pad("ip_protocol" ), " ", 8, field_default(17) ), - ( field_name_pad("ip_header_checksum" ), " ", 16, field_default(0) ), - ( field_name_pad("ip_src_addr" ), " ", 32, field_default(0) ), - ( field_name_pad("ip_dst_addr" ), " ", 32, field_default(0) ), - ( field_name_pad("udp_src_port" ), " ", 16, field_default(0) ), - ( field_name_pad("udp_dst_port" ), " ", 16, field_default(0) ), - ( field_name_pad("udp_total_length" ), " ", 16, field_default(c_udp_length) ), --1488) ), - ( field_name_pad("udp_checksum" ), " ", 16, field_default(0) ), - ( field_name_pad("usr_sync" ), " ", 1, field_default(1) ), - ( field_name_pad("usr_bsn" ), " ", 60, field_default(0) ), - ( field_name_pad("usr_hdr_field_0" ), " ", 7, field_default(0) ), - ( field_name_pad("usr_hdr_field_1" ), " ", 9, field_default(0) ), - ( field_name_pad("usr_hdr_field_2" ), " ", 10, field_default(0) ), - ( field_name_pad("usr_hdr_field_3" ), " ", 33, field_default(0) ), - ( field_name_pad("usr_hdr_field_4" ), " ", 5, field_default(0) ), - ( field_name_pad("usr_hdr_field_5" ), " ", 8, field_default(0) ), - ( field_name_pad("usr_hdr_field_6" ), " ", 27, field_default(0) ), - ( field_name_pad("usr_hdr_word_align" ), " ", 16, field_default(0) ) ); + ( field_name_pad("eth_src_mac" ), " ", 48, field_default(0) ), + ( field_name_pad("eth_type" ), " ", 16, field_default(x"0800") ), + ( field_name_pad("ip_version" ), " ", 4, field_default(4) ), + ( field_name_pad("ip_header_length" ), " ", 4, field_default(5) ), + ( field_name_pad("ip_services" ), " ", 8, field_default(0) ), + ( field_name_pad("ip_total_length" ), " ", 16, field_default(c_ip_length) ), --1508) ), + ( field_name_pad("ip_identification" ), " ", 16, field_default(0) ), + ( field_name_pad("ip_flags" ), " ", 3, field_default(2) ), + ( field_name_pad("ip_fragment_offset" ), " ", 13, field_default(0) ), + ( field_name_pad("ip_time_to_live" ), " ", 8, field_default(127) ), + ( field_name_pad("ip_protocol" ), " ", 8, field_default(17) ), + ( field_name_pad("ip_header_checksum" ), " ", 16, field_default(0) ), + ( field_name_pad("ip_src_addr" ), " ", 32, field_default(0) ), + ( field_name_pad("ip_dst_addr" ), " ", 32, field_default(0) ), + ( field_name_pad("udp_src_port" ), " ", 16, field_default(0) ), + ( field_name_pad("udp_dst_port" ), " ", 16, field_default(0) ), + ( field_name_pad("udp_total_length" ), " ", 16, field_default(c_udp_length) ), --1488) ), + ( field_name_pad("udp_checksum" ), " ", 16, field_default(0) ), + ( field_name_pad("usr_sync" ), " ", 1, field_default(1) ), + ( field_name_pad("usr_bsn" ), " ", 60, field_default(0) ), + ( field_name_pad("usr_hdr_field_0" ), " ", 7, field_default(0) ), + ( field_name_pad("usr_hdr_field_1" ), " ", 9, field_default(0) ), + ( field_name_pad("usr_hdr_field_2" ), " ", 10, field_default(0) ), + ( field_name_pad("usr_hdr_field_3" ), " ", 33, field_default(0) ), + ( field_name_pad("usr_hdr_field_4" ), " ", 5, field_default(0) ), + ( field_name_pad("usr_hdr_field_5" ), " ", 8, field_default(0) ), + ( field_name_pad("usr_hdr_field_6" ), " ", 27, field_default(0) ), + ( field_name_pad("usr_hdr_word_align" ), " ", 16, field_default(0) ) ); - --CONSTANT c_hdr_field_arr : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := c_hdr_field_rx_offload_arr(c_nof_hdr_fields-1 DOWNTO 0); + CONSTANT c_bypass_rx_filter : BOOLEAN := FALSE; + + CONSTANT c_hdr_field_ovr_init : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"101111111"&"0"; + + CONSTANT c_fifo_size : NATURAL := 2*c_bg_block_size; + + CONSTANT c_use_jumbo_frames : BOOLEAN := FALSE; + CONSTANT c_def_1GbE_block_size : NATURAL := c_bg_block_size; + + CONSTANT c_max_frame_len : NATURAL := sel_a_b(c_use_jumbo_frames, 9018, c_ip_length); + CONSTANT c_max_frame_nof_words : NATURAL := (c_max_frame_len * c_byte_w ) / c_data_w; + CONSTANT c_nof_header_words : NATURAL := field_slv_len(c_hdr_field_arr) / c_data_w; + CONSTANT c_nof_header_bytes : NATURAL := field_slv_len(c_hdr_field_arr) / c_byte_w; + CONSTANT c_nof_crc_words : NATURAL := 0; + CONSTANT c_max_udp_payload_len : NATURAL := c_max_frame_len-c_nof_header_bytes-c_network_eth_crc_len; + CONSTANT c_max_udp_payload_nof_words : NATURAL := (c_max_udp_payload_len * c_byte_w) / c_data_w; + CONSTANT c_max_nof_words_per_block : NATURAL := c_bg_block_size; + CONSTANT c_min_nof_words_per_block : NATURAL := 1; + CONSTANT c_def_nof_words_per_block : NATURAL := sel_a_b(c_use_1GbE, c_def_1GbE_block_size, c_bg_block_size); + CONSTANT c_max_nof_blocks_per_packet : NATURAL := c_max_udp_payload_nof_words/c_min_nof_words_per_block; + CONSTANT c_def_nof_blocks_per_packet : NATURAL := 1; + + SIGNAL hdr_fields_in_arr : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL hdr_fields_in_rx_arr : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL hdr_fields_out_arr : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0); + + -- System + SIGNAL sa_rst : STD_LOGIC := '0'; + SIGNAL cs_sim : STD_LOGIC; + SIGNAL xo_clk : STD_LOGIC; + SIGNAL xo_rst : STD_LOGIC; + SIGNAL xo_rst_n : STD_LOGIC; + SIGNAL mm_clk : STD_LOGIC; + SIGNAL mm_locked : STD_LOGIC; + SIGNAL mm_rst : STD_LOGIC; + SIGNAL dp_rst : STD_LOGIC; + SIGNAL dp_clk : STD_LOGIC; + SIGNAL dp_pps : STD_LOGIC; + SIGNAL epcs_clk : STD_LOGIC; + -- PIOs + SIGNAL pout_wdi : STD_LOGIC; + + SIGNAL eth1g_tse_clk : STD_LOGIC; + SIGNAL eth1g_mm_rst : STD_LOGIC; + SIGNAL eth1g_tse_mosi : t_mem_mosi; + SIGNAL eth1g_tse_miso : t_mem_miso; + SIGNAL eth1g_reg_mosi : t_mem_mosi; + SIGNAL eth1g_reg_miso : t_mem_miso; + SIGNAL eth1g_reg_interrupt : STD_LOGIC; + SIGNAL eth1g_ram_mosi : t_mem_mosi; + SIGNAL eth1g_ram_miso : t_mem_miso; + + SIGNAL reg_wdi_mosi : t_mem_mosi; + SIGNAL reg_wdi_miso : t_mem_miso; + SIGNAL reg_unb_system_info_mosi : t_mem_mosi; + SIGNAL reg_unb_system_info_miso : t_mem_miso; + SIGNAL rom_unb_system_info_mosi : t_mem_mosi; + SIGNAL rom_unb_system_info_miso : t_mem_miso; + SIGNAL reg_unb_sens_mosi : t_mem_mosi; + SIGNAL reg_unb_sens_miso : t_mem_miso; + + SIGNAL reg_diag_bg_mosi : t_mem_mosi; + SIGNAL reg_diag_bg_miso : t_mem_miso; + SIGNAL ram_diag_bg_mosi : t_mem_mosi; + SIGNAL ram_diag_bg_miso : t_mem_miso; + + SIGNAL reg_dp_offload_tx_mosi : t_mem_mosi; + SIGNAL reg_dp_offload_tx_miso : t_mem_miso; + SIGNAL reg_dp_offload_tx_hdr_dat_mosi : t_mem_mosi; + SIGNAL reg_dp_offload_tx_hdr_dat_miso : t_mem_miso; + SIGNAL reg_dp_offload_tx_hdr_ovr_mosi : t_mem_mosi; + SIGNAL reg_dp_offload_tx_hdr_ovr_miso : t_mem_miso; + SIGNAL reg_dp_offload_rx_hdr_dat_mosi : t_mem_mosi; + SIGNAL reg_dp_offload_rx_hdr_dat_miso : t_mem_miso; + + --. 10G Receiver + SIGNAL reg_tr_10GbE_mosi : t_mem_mosi; + SIGNAL reg_tr_10GbE_miso : t_mem_miso; + SIGNAL reg_tr_xaui_mosi : t_mem_mosi; + SIGNAL reg_tr_xaui_miso : t_mem_miso; + SIGNAL reg_mdio_mosi_arr : t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); + SIGNAL reg_mdio_miso_arr : t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); + + SIGNAL reg_mdio_0_mosi : t_mem_mosi; + SIGNAL reg_mdio_0_miso : t_mem_miso; + SIGNAL reg_mdio_1_mosi : t_mem_mosi; + SIGNAL reg_mdio_1_miso : t_mem_miso; + SIGNAL reg_mdio_2_mosi : t_mem_mosi; + SIGNAL reg_mdio_2_miso : t_mem_miso; + + SIGNAL reg_bsn_monitor_mosi : t_mem_mosi; + SIGNAL reg_bsn_monitor_miso : t_mem_miso; + SIGNAL ram_diag_data_buffer_mosi : t_mem_mosi; + SIGNAL ram_diag_data_buffer_miso : t_mem_miso; + SIGNAL reg_diag_data_buffer_mosi : t_mem_mosi; + SIGNAL reg_diag_data_buffer_miso : t_mem_miso; + + SIGNAL reg_ppsh_mosi : t_mem_mosi; + SIGNAL reg_ppsh_miso : t_mem_miso; + + SIGNAL block_gen_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL block_gen_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + SIGNAL block_gen_src_in_arr_temp : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + + SIGNAL dp_offload_tx_snk_in_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL dp_offload_tx_snk_out_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); + + SIGNAL dp_offload_tx_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL dp_offload_tx_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); + + SIGNAL dp_offload_rx_snk_in_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL dp_offload_rx_snk_out_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); + + SIGNAL dp_offload_rx_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL dp_offload_rx_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - - CONSTANT c_hdr_field_ovr_init : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"101111111"&"0"; - - CONSTANT c_fifo_size : NATURAL := 2*c_bg_block_size; - - CONSTANT c_use_jumbo_frames : BOOLEAN := FALSE; - CONSTANT c_def_1GbE_block_size : NATURAL := c_bg_block_size; - - CONSTANT c_max_frame_len : NATURAL := sel_a_b(c_use_jumbo_frames, 9018, c_ip_length); - CONSTANT c_max_frame_nof_words : NATURAL := (c_max_frame_len * c_byte_w ) / c_data_w; - CONSTANT c_nof_header_words : NATURAL := field_slv_len(c_hdr_field_arr) / c_data_w; - CONSTANT c_nof_header_bytes : NATURAL := field_slv_len(c_hdr_field_arr) / c_byte_w; - CONSTANT c_nof_crc_words : NATURAL := 0; - CONSTANT c_max_udp_payload_len : NATURAL := c_max_frame_len-c_nof_header_bytes-c_network_eth_crc_len; - CONSTANT c_max_udp_payload_nof_words : NATURAL := (c_max_udp_payload_len * c_byte_w) / c_data_w; - CONSTANT c_max_nof_words_per_block : NATURAL := c_bg_block_size; - CONSTANT c_min_nof_words_per_block : NATURAL := 1; - CONSTANT c_def_nof_words_per_block : NATURAL := sel_a_b(c_use_1GbE, c_def_1GbE_block_size, c_bg_block_size); - CONSTANT c_max_nof_blocks_per_packet : NATURAL := c_max_udp_payload_nof_words/c_min_nof_words_per_block; - CONSTANT c_def_nof_blocks_per_packet : NATURAL := 1; - - SIGNAL hdr_fields_in_arr : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL hdr_fields_out_arr : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0); - - -- System - SIGNAL sa_rst : STD_LOGIC := '0'; - SIGNAL cs_sim : STD_LOGIC; - SIGNAL xo_clk : STD_LOGIC; - SIGNAL xo_rst : STD_LOGIC; - SIGNAL xo_rst_n : STD_LOGIC; - SIGNAL mm_clk : STD_LOGIC; - SIGNAL mm_locked : STD_LOGIC; - SIGNAL mm_rst : STD_LOGIC; - SIGNAL dp_rst : STD_LOGIC; - SIGNAL dp_clk : STD_LOGIC; - SIGNAL dp_pps : STD_LOGIC; - SIGNAL epcs_clk : STD_LOGIC; - -- PIOs - SIGNAL pout_wdi : STD_LOGIC; - - SIGNAL eth1g_tse_clk : STD_LOGIC; - SIGNAL eth1g_mm_rst : STD_LOGIC; - SIGNAL eth1g_tse_mosi : t_mem_mosi; - SIGNAL eth1g_tse_miso : t_mem_miso; - SIGNAL eth1g_reg_mosi : t_mem_mosi; - SIGNAL eth1g_reg_miso : t_mem_miso; - SIGNAL eth1g_reg_interrupt : STD_LOGIC; - SIGNAL eth1g_ram_mosi : t_mem_mosi; - SIGNAL eth1g_ram_miso : t_mem_miso; - - SIGNAL reg_wdi_mosi : t_mem_mosi; - SIGNAL reg_wdi_miso : t_mem_miso; - SIGNAL reg_unb_system_info_mosi : t_mem_mosi; - SIGNAL reg_unb_system_info_miso : t_mem_miso; - SIGNAL rom_unb_system_info_mosi : t_mem_mosi; - SIGNAL rom_unb_system_info_miso : t_mem_miso; - SIGNAL reg_unb_sens_mosi : t_mem_mosi; - SIGNAL reg_unb_sens_miso : t_mem_miso; - - SIGNAL reg_diag_bg_mosi : t_mem_mosi; - SIGNAL reg_diag_bg_miso : t_mem_miso; - SIGNAL ram_diag_bg_mosi : t_mem_mosi; - SIGNAL ram_diag_bg_miso : t_mem_miso; - - SIGNAL reg_dp_offload_tx_mosi : t_mem_mosi; - SIGNAL reg_dp_offload_tx_miso : t_mem_miso; - SIGNAL reg_dp_offload_tx_hdr_dat_mosi : t_mem_mosi; - SIGNAL reg_dp_offload_tx_hdr_dat_miso : t_mem_miso; - SIGNAL reg_dp_offload_tx_hdr_ovr_mosi : t_mem_mosi; - SIGNAL reg_dp_offload_tx_hdr_ovr_miso : t_mem_miso; - SIGNAL reg_dp_offload_rx_hdr_dat_mosi : t_mem_mosi; - SIGNAL reg_dp_offload_rx_hdr_dat_miso : t_mem_miso; - - --. 10G Receiver - SIGNAL reg_tr_10GbE_mosi : t_mem_mosi; - SIGNAL reg_tr_10GbE_miso : t_mem_miso; - SIGNAL reg_tr_xaui_mosi : t_mem_mosi; - SIGNAL reg_tr_xaui_miso : t_mem_miso; - SIGNAL reg_mdio_mosi_arr : t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); - SIGNAL reg_mdio_miso_arr : t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); - - SIGNAL reg_mdio_0_mosi : t_mem_mosi; - SIGNAL reg_mdio_0_miso : t_mem_miso; - SIGNAL reg_mdio_1_mosi : t_mem_mosi; - SIGNAL reg_mdio_1_miso : t_mem_miso; - SIGNAL reg_mdio_2_mosi : t_mem_mosi; - SIGNAL reg_mdio_2_miso : t_mem_miso; - - SIGNAL reg_bsn_monitor_mosi : t_mem_mosi; - SIGNAL reg_bsn_monitor_miso : t_mem_miso; - SIGNAL ram_diag_data_buffer_mosi : t_mem_mosi; - SIGNAL ram_diag_data_buffer_miso : t_mem_miso; - SIGNAL reg_diag_data_buffer_mosi : t_mem_mosi; - SIGNAL reg_diag_data_buffer_miso : t_mem_miso; - - SIGNAL reg_ppsh_mosi : t_mem_mosi; - SIGNAL reg_ppsh_miso : t_mem_miso; - - SIGNAL block_gen_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL block_gen_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - SIGNAL block_gen_src_in_arr_temp : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - - SIGNAL dp_offload_tx_snk_in_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL dp_offload_tx_snk_out_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); - - SIGNAL dp_offload_tx_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL dp_offload_tx_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); - - SIGNAL dp_offload_rx_snk_in_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL dp_offload_rx_snk_out_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0); - - SIGNAL dp_offload_rx_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); - SIGNAL dp_offload_rx_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - - SIGNAL bsn_monitor_snk_in_arr : t_dp_sosi_arr(c_nof_bsn_mon_streams-1 DOWNTO 0); - SIGNAL bsn_monitor_snk_out_arr : t_dp_siso_arr(c_nof_bsn_mon_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + SIGNAL dp_offload_rx_filter_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0); + SIGNAL dp_offload_rx_filter_src_in_arr : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + + SIGNAL bsn_monitor_snk_in_arr : t_dp_sosi_arr(c_nof_bsn_mon_streams-1 DOWNTO 0); + SIGNAL bsn_monitor_snk_out_arr : t_dp_siso_arr(c_nof_bsn_mon_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); -- Interface: 10GbE - SIGNAL xaui_tx_arr : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL xaui_rx_arr : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL unb_xaui_tx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL unb_xaui_rx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL mdio_mdc_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL mdio_mdat_in_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); - SIGNAL mdio_mdat_oen_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); - - SIGNAL TEST_STOP : std_logic_vector(2 downto 0 ); - SIGNAL TEST_ERROR : std_logic_vector(2 downto 0 ); - SIGNAL TEST_FIFO_FULL : std_logic_vector(1 downto 0 ); - SIGNAL TEST_BLOCK_RD : std_logic_vector(2 downto 0 ); - SIGNAL address : std_logic_vector(18 downto 0 ); - SIGNAL read_data : std_logic_vector(31 downto 0 ); - SIGNAL read_en : std_logic; - SIGNAL write_en : std_logic; - SIGNAL write_data : std_logic_vector(31 downto 0 ); - - SIGNAL fi_snk_out : t_dp_siso; - SIGNAL fi_snk_in : t_dp_sosi; - SIGNAL fi_src_in : t_dp_siso; - SIGNAL fi_src_out : t_dp_sosi; - SIGNAL fo_snk_out : t_dp_siso; - SIGNAL fo_snk_in : t_dp_sosi; - SIGNAL fo_src_in : t_dp_siso; - SIGNAL fo_src_out : t_dp_sosi; + SIGNAL xaui_tx_arr : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL xaui_rx_arr : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL unb_xaui_tx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL unb_xaui_rx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL mdio_mdc_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL mdio_mdat_in_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); + SIGNAL mdio_mdat_oen_arr : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0); + + SIGNAL TEST_STOP : std_logic_vector(2 downto 0 ); + SIGNAL TEST_ERROR : std_logic_vector(2 downto 0 ); + SIGNAL TEST_FIFO_FULL : std_logic_vector(1 downto 0 ); + SIGNAL TEST_BLOCK_RD : std_logic_vector(2 downto 0 ); + SIGNAL address : std_logic_vector(18 downto 0 ); + SIGNAL read_data : std_logic_vector(31 downto 0 ); + SIGNAL read_en : std_logic; + SIGNAL write_en : std_logic; + SIGNAL write_data : std_logic_vector(31 downto 0 ); + + SIGNAL fi_snk_out : t_dp_siso; + SIGNAL fi_snk_in : t_dp_sosi; + SIGNAL fi_src_in : t_dp_siso; + SIGNAL fi_src_out : t_dp_sosi; + SIGNAL fo_snk_out : t_dp_siso; + SIGNAL fo_snk_in : t_dp_sosi; + SIGNAL fo_src_in : t_dp_siso; + SIGNAL fo_src_out : t_dp_sosi; BEGIN @@ -517,6 +520,7 @@ BEGIN hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn" )) <= block_gen_src_out_arr(i).bsn(59 DOWNTO 0); hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_hdr_word_align") DOWNTO field_lo(c_hdr_field_arr, "usr_hdr_word_align" )) <= TO_UVEC(0, 16); + hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_total_length" ) DOWNTO field_lo(c_hdr_field_arr, "ip_total_length" )) <= TO_UVEC(c_ip_length, 16); END GENERATE; ----------------------------------------------------------------------------- @@ -548,7 +552,43 @@ BEGIN hdr_fields_out_arr => hdr_fields_out_arr ); + ------------------------- + --WORK IN PROGRESS + ------------------------- + + PROCESS(hdr_fields_in_arr) + BEGIN + hdr_fields_in_rx_arr <= hdr_fields_in_arr; + hdr_fields_in_rx_arr(0)(field_hi(c_hdr_field_arr, "eth_dst_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_dst_mac" )) <= x"00074306C700"; --jop63 + hdr_fields_in_rx_arr(0)(field_hi(c_hdr_field_arr, "ip_dst_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_dst_addr" )) <= x"c0a80102"; --jop63 + END PROCESS; + + u_header_check : ENTITY dp_lib.dp_offload_rx_filter + GENERIC MAP( + g_bypass => c_bypass_rx_filter, + g_nof_streams => c_nof_streams, --: POSITIVE; + g_data_w => c_data_w, --: NATURAL; + g_hdr_field_arr => c_hdr_field_arr, --: t_common_field_arr; + g_eth_dst_mac_ena => TRUE, --: BOOLEAN; + g_ip_dst_addr_ena => TRUE, --: BOOLEAN; + g_ip_total_length_ena => TRUE, --: BOOLEAN; + g_udp_dst_port_ena => TRUE --: BOOLEAN + ) + PORT MAP( + + dp_rst => dp_rst, + dp_clk => dp_clk, + + snk_in_arr => dp_offload_rx_src_out_arr, + snk_out_arr => dp_offload_rx_src_in_arr, + src_out_arr => dp_offload_rx_filter_src_out_arr, + src_in_arr => dp_offload_rx_filter_src_in_arr, + + hdr_fields_out_arr => hdr_fields_out_arr, + hdr_fields_in_arr => hdr_fields_in_rx_arr + ); + u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor GENERIC MAP ( g_nof_streams => c_nof_bsn_mon_streams, @@ -585,7 +625,8 @@ BEGIN bsn_monitor_snk_in_arr(4) <= block_gen_src_out_arr(0); bsn_monitor_snk_out_arr(4) <= block_gen_src_in_arr(0); - dp_offload_rx_src_in_arr <= (OTHERS=>c_dp_siso_rdy); + --dp_offload_rx_src_in_arr <= (OTHERS=>c_dp_siso_rdy); + dp_offload_rx_filter_src_in_arr <= (OTHERS=>c_dp_siso_rdy); u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer GENERIC MAP ( @@ -605,8 +646,8 @@ BEGIN reg_data_buf_mosi => reg_diag_data_buffer_mosi, reg_data_buf_miso => reg_diag_data_buffer_miso, - in_sync => dp_offload_rx_src_out_arr(0).sync, - in_sosi_arr => dp_offload_rx_src_out_arr + in_sync => dp_offload_rx_filter_src_out_arr(0).sync, --dp_offload_rx_src_out_arr(0).sync, + in_sosi_arr => dp_offload_rx_filter_src_out_arr --dp_offload_rx_src_out_arr ); -----------------------------------------------------------------------------