From 756d4f0ecba2121b741a0cbf97eb344f2f528099 Mon Sep 17 00:00:00 2001 From: Michael Boehmer Date: Mon, 11 Jul 2022 12:35:22 +0200 Subject: [PATCH] removed some generics plus underlaying functionality --- gbe_trb/base/gbe_logic_wrapper.vhd | 837 ++++++++----------------- gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd | 207 +----- 2 files changed, 300 insertions(+), 744 deletions(-) diff --git a/gbe_trb/base/gbe_logic_wrapper.vhd b/gbe_trb/base/gbe_logic_wrapper.vhd index c91997f..dc73c2a 100644 --- a/gbe_trb/base/gbe_logic_wrapper.vhd +++ b/gbe_trb/base/gbe_logic_wrapper.vhd @@ -12,26 +12,14 @@ use work.trb_net_gbe_protocols.all; entity gbe_logic_wrapper is generic( - DO_SIMULATION : integer range 0 to 1; - INCLUDE_DEBUG : integer range 0 to 1; - USE_INTERNAL_TRBNET_DUMMY : integer range 0 to 1; - RX_PATH_ENABLE : integer range 0 to 1; INCLUDE_READOUT : std_logic := '0'; INCLUDE_SLOWCTRL : std_logic := '0'; INCLUDE_DHCP : std_logic := '0'; INCLUDE_ARP : std_logic := '0'; INCLUDE_PING : std_logic := '0'; INCLUDE_FWD : std_logic := '0'; - FRAME_BUFFER_SIZE : integer range 1 to 4 := 1; READOUT_BUFFER_SIZE : integer range 1 to 4 := 1; - SLOWCTRL_BUFFER_SIZE : integer range 1 to 4 := 1; - FIXED_SIZE_MODE : integer range 0 to 1 := 1; - INCREMENTAL_MODE : integer range 0 to 1 := 0; - FIXED_SIZE : integer range 0 to 65535 := 10; - FIXED_DELAY_MODE : integer range 0 to 1 := 1; - UP_DOWN_MODE : integer range 0 to 1 := 0; - UP_DOWN_LIMIT : integer range 0 to 16777215 := 0; - FIXED_DELAY : integer range 0 to 16777215 := 16777215 + SLOWCTRL_BUFFER_SIZE : integer range 1 to 4 := 1 ); port( CLK_SYS_IN : in std_logic; @@ -261,6 +249,7 @@ architecture RTL of gbe_logic_wrapper is signal frame_pause : std_logic_vector(31 downto 0); begin + reset_sync : process(GSR_N, CLK_SYS_IN) begin if (GSR_N = '0') then @@ -280,444 +269,196 @@ begin DHCP_DONE_OUT <= dhcp_done; - main_gen : if USE_INTERNAL_TRBNET_DUMMY = 0 generate - MAIN_CONTROL : entity work.trb_net16_gbe_main_control - generic map( - RX_PATH_ENABLE => RX_PATH_ENABLE, - DO_SIMULATION => DO_SIMULATION, - INCLUDE_READOUT => INCLUDE_READOUT, - INCLUDE_SLOWCTRL => INCLUDE_SLOWCTRL, - INCLUDE_DHCP => INCLUDE_DHCP, - INCLUDE_ARP => INCLUDE_ARP, - INCLUDE_PING => INCLUDE_PING, - INCLUDE_FWD => INCLUDE_FWD, - READOUT_BUFFER_SIZE => READOUT_BUFFER_SIZE, - SLOWCTRL_BUFFER_SIZE => SLOWCTRL_BUFFER_SIZE - ) - port map( - CLK => CLK_SYS_IN, - CLK_125 => CLK_125_IN, - RESET => RESET, - MC_LINK_OK_OUT => link_ok, - MC_RESET_LINK_IN => global_reset, - MC_IDLE_TOO_LONG_OUT => open, - MC_DHCP_DONE_OUT => dhcp_done, - MY_IP_OUT => MY_IP_OUT, - MC_MY_MAC_IN => MY_MAC_IN, - MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN, - ISSUE_REBOOT_OUT => open, --ISSUE_REBOOT_OUT, - - -- signals to/from receive controller - RC_FRAME_WAITING_IN => rc_frame_ready, - RC_LOADING_DONE_OUT => rc_loading_done, - RC_DATA_IN => rc_q, - RC_RD_EN_OUT => rc_rd_en, - RC_FRAME_SIZE_IN => rc_frame_size, - RC_FRAME_PROTO_IN => rc_frame_proto, - RC_SRC_MAC_ADDRESS_IN => rc_src_mac, - RC_DEST_MAC_ADDRESS_IN => rc_dest_mac, - RC_SRC_IP_ADDRESS_IN => rc_src_ip, - RC_DEST_IP_ADDRESS_IN => rc_dest_ip, - RC_SRC_UDP_PORT_IN => rc_src_udp, - RC_DEST_UDP_PORT_IN => rc_dest_udp, - - -- signals to/from transmit controller - TC_TRANSMIT_CTRL_OUT => mc_transmit_ctrl, - TC_DATA_OUT => mc_data, - TC_RD_EN_IN => mc_wr_en, - TC_FRAME_SIZE_OUT => mc_frame_size, - TC_FRAME_TYPE_OUT => mc_type, - TC_IP_PROTOCOL_OUT => mc_ip_proto, - TC_IDENT_OUT => mc_ident, - TC_DEST_MAC_OUT => mc_dest_mac, - TC_DEST_IP_OUT => mc_dest_ip, - TC_DEST_UDP_OUT => mc_dest_udp, - TC_SRC_MAC_OUT => mc_src_mac, - TC_SRC_IP_OUT => mc_src_ip, - TC_SRC_UDP_OUT => mc_src_udp, - TC_TRANSMIT_DONE_IN => mc_transmit_done, - - -- signals to/from sgmii/gbe pcs_an_complete - PCS_AN_COMPLETE_IN => MAC_AN_READY_IN, - - -- signals to/from hub - GSC_CLK_IN => GSC_CLK_IN, - GSC_INIT_DATAREADY_OUT => GSC_INIT_DATAREADY_OUT, - GSC_INIT_DATA_OUT => GSC_INIT_DATA_OUT, - GSC_INIT_PACKET_NUM_OUT => GSC_INIT_PACKET_NUM_OUT, - GSC_INIT_READ_IN => GSC_INIT_READ_IN, - GSC_REPLY_DATAREADY_IN => GSC_REPLY_DATAREADY_IN, - GSC_REPLY_DATA_IN => GSC_REPLY_DATA_IN, - GSC_REPLY_PACKET_NUM_IN => GSC_REPLY_PACKET_NUM_IN, - GSC_REPLY_READ_OUT => GSC_REPLY_READ_OUT, - GSC_BUSY_IN => GSC_BUSY_IN, - MAKE_RESET_OUT => make_reset, --MAKE_RESET_OUT, - - RESET_TRBNET_IN => '0', - RESET_SCTRL_IN => '0', - - -- CTS interface - CTS_NUMBER_IN => CTS_NUMBER_IN, - CTS_CODE_IN => CTS_CODE_IN, - CTS_INFORMATION_IN => CTS_INFORMATION_IN, - CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, - CTS_START_READOUT_IN => CTS_START_READOUT_IN, - CTS_DATA_OUT => CTS_DATA_OUT, - CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, - CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, - CTS_READ_IN => CTS_READ_IN, - CTS_LENGTH_OUT => CTS_LENGTH_OUT, - CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, - -- Data payload interface - FEE_DATA_IN => FEE_DATA_IN, - FEE_DATAREADY_IN => FEE_DATAREADY_IN, - FEE_READ_OUT => FEE_READ_OUT, - FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, - FEE_BUSY_IN => FEE_BUSY_IN, - -- ip configurator - SLV_ADDR_IN => SLV_ADDR_IN, - SLV_READ_IN => SLV_READ_IN, - SLV_WRITE_IN => SLV_WRITE_IN, - SLV_BUSY_OUT => SLV_BUSY_OUT, - SLV_ACK_OUT => SLV_ACK_OUT, - SLV_DATA_IN => SLV_DATA_IN, - SLV_DATA_OUT => SLV_DATA_OUT, - CFG_GBE_ENABLE_IN => CFG_GBE_ENABLE_IN, - CFG_IPU_ENABLE_IN => CFG_IPU_ENABLE_IN, - CFG_MULT_ENABLE_IN => CFG_MULT_ENABLE_IN, - CFG_SUBEVENT_ID_IN => CFG_SUBEVENT_ID_IN, - CFG_SUBEVENT_DEC_IN => CFG_SUBEVENT_DEC_IN, - CFG_QUEUE_DEC_IN => CFG_QUEUE_DEC_IN, - CFG_READOUT_CTR_IN => CFG_READOUT_CTR_IN, - CFG_READOUT_CTR_VALID_IN => CFG_READOUT_CTR_VALID_IN, - CFG_INSERT_TTYPE_IN => CFG_INSERT_TTYPE_IN, - CFG_MAX_SUB_IN => CFG_MAX_SUB_IN, - CFG_MAX_QUEUE_IN => CFG_MAX_QUEUE_IN, - CFG_MAX_SUBS_IN_QUEUE_IN => CFG_MAX_SUBS_IN_QUEUE_IN, - CFG_MAX_SINGLE_SUB_IN => CFG_MAX_SINGLE_SUB_IN, - CFG_ADDITIONAL_HDR_IN => CFG_ADDITIONAL_HDR_IN, - CFG_MAX_REPLY_SIZE_IN => CFG_MAX_REPLY_SIZE_IN, - CFG_AUTO_THROTTLE_IN => '0', --CFG_AUTO_THROTTLE_IN, - CFG_THROTTLE_PAUSE_IN => (others => '0'), --CFG_THROTTLE_PAUSE_IN, - - FWD_DST_MAC_IN => FWD_DST_MAC_IN, - FWD_DST_IP_IN => FWD_DST_IP_IN, - FWD_DST_UDP_IN => FWD_DST_UDP_IN, - FWD_DATA_IN => FWD_DATA_IN, - FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, - FWD_SOP_IN => FWD_SOP_IN, - FWD_EOP_IN => FWD_EOP_IN, - FWD_READY_OUT => FWD_READY_OUT, - FWD_FULL_OUT => FWD_FULL_OUT, - - TSM_HADDR_OUT => open, --mac_haddr, - TSM_HDATA_OUT => open, --mac_hdataout, - TSM_HCS_N_OUT => open, --mac_hcs, - TSM_HWRITE_N_OUT => open, --mac_hwrite, - TSM_HREAD_N_OUT => open, --mac_hread, - TSM_HREADY_N_IN => '0', --mac_hready, - TSM_HDATA_EN_N_IN => '1', --mac_hdata_en, - TSM_RX_STAT_VEC_IN => (others => '0'), --mac_rx_stat_vec, - TSM_RX_STAT_EN_IN => '0', --mac_rx_stat_en, - - MAC_READY_CONF_IN => MAC_READY_CONF_IN, - MAC_RECONF_OUT => MAC_RECONF_OUT, - MONITOR_SELECT_REC_OUT => dbg_select_rec, - MONITOR_SELECT_REC_BYTES_OUT => dbg_select_rec_bytes, - MONITOR_SELECT_SENT_BYTES_OUT => dbg_select_sent_bytes, - MONITOR_SELECT_SENT_OUT => dbg_select_sent, - MONITOR_SELECT_DROP_IN_OUT => dbg_select_drop_in, - MONITOR_SELECT_DROP_OUT_OUT => dbg_select_drop_out, - MONITOR_SELECT_GEN_DBG_OUT => dbg_select_gen, - DATA_HIST_OUT => dbg_hist, - SCTRL_HIST_OUT => dbg_hist2 - ); - end generate main_gen; - - main_with_dummy_gen : if USE_INTERNAL_TRBNET_DUMMY = 1 generate - MAIN_CONTROL : entity work.trb_net16_gbe_main_control - generic map( - RX_PATH_ENABLE => RX_PATH_ENABLE, - DO_SIMULATION => DO_SIMULATION, - INCLUDE_READOUT => INCLUDE_READOUT, - INCLUDE_SLOWCTRL => INCLUDE_SLOWCTRL, - INCLUDE_DHCP => INCLUDE_DHCP, - INCLUDE_ARP => INCLUDE_ARP, - INCLUDE_PING => INCLUDE_PING, - INCLUDE_FWD => INCLUDE_FWD, - READOUT_BUFFER_SIZE => READOUT_BUFFER_SIZE, - SLOWCTRL_BUFFER_SIZE => SLOWCTRL_BUFFER_SIZE - ) - port map( - CLK => CLK_SYS_IN, - CLK_125 => CLK_125_IN, - RESET => RESET, - MC_LINK_OK_OUT => link_ok, - MC_RESET_LINK_IN => global_reset, - MC_IDLE_TOO_LONG_OUT => open, - MC_DHCP_DONE_OUT => dhcp_done, - MC_MY_MAC_IN => MY_MAC_IN, - MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN, - - -- signals to/from receive controller - RC_FRAME_WAITING_IN => rc_frame_ready, - RC_LOADING_DONE_OUT => rc_loading_done, - RC_DATA_IN => rc_q, - RC_RD_EN_OUT => rc_rd_en, - RC_FRAME_SIZE_IN => rc_frame_size, - RC_FRAME_PROTO_IN => rc_frame_proto, - RC_SRC_MAC_ADDRESS_IN => rc_src_mac, - RC_DEST_MAC_ADDRESS_IN => rc_dest_mac, - RC_SRC_IP_ADDRESS_IN => rc_src_ip, - RC_DEST_IP_ADDRESS_IN => rc_dest_ip, - RC_SRC_UDP_PORT_IN => rc_src_udp, - RC_DEST_UDP_PORT_IN => rc_dest_udp, - - -- signals to/from transmit controller - TC_TRANSMIT_CTRL_OUT => mc_transmit_ctrl, - TC_DATA_OUT => mc_data, - TC_RD_EN_IN => mc_wr_en, - --TC_DATA_NOT_VALID_OUT => tc_data_not_valid, - TC_FRAME_SIZE_OUT => mc_frame_size, - TC_FRAME_TYPE_OUT => mc_type, - TC_IP_PROTOCOL_OUT => mc_ip_proto, - TC_IDENT_OUT => mc_ident, - TC_DEST_MAC_OUT => mc_dest_mac, - TC_DEST_IP_OUT => mc_dest_ip, - TC_DEST_UDP_OUT => mc_dest_udp, - TC_SRC_MAC_OUT => mc_src_mac, - TC_SRC_IP_OUT => mc_src_ip, - TC_SRC_UDP_OUT => mc_src_udp, - TC_TRANSMIT_DONE_IN => mc_transmit_done, - - -- signals to/from sgmii/gbe pcs_an_complete - PCS_AN_COMPLETE_IN => MAC_AN_READY_IN, - - -- signals to/from hub - GSC_CLK_IN => GSC_CLK_IN, - GSC_INIT_DATAREADY_OUT => GSC_INIT_DATAREADY_OUT, - GSC_INIT_DATA_OUT => GSC_INIT_DATA_OUT, - GSC_INIT_PACKET_NUM_OUT => GSC_INIT_PACKET_NUM_OUT, - GSC_INIT_READ_IN => '1', - GSC_REPLY_DATAREADY_IN => dum_dataready, - GSC_REPLY_DATA_IN => dum_data, - GSC_REPLY_PACKET_NUM_IN => GSC_REPLY_PACKET_NUM_IN, - GSC_REPLY_READ_OUT => dum_read, - GSC_BUSY_IN => dum_busy, - MAKE_RESET_OUT => make_reset, - RESET_TRBNET_IN => '0', - RESET_SCTRL_IN => '0', - -- CTS interface - CTS_NUMBER_IN => gbe_cts_number, - CTS_CODE_IN => gbe_cts_code, - CTS_INFORMATION_IN => gbe_cts_information, - CTS_READOUT_TYPE_IN => gbe_cts_readout_type, - CTS_START_READOUT_IN => gbe_cts_start_readout, - CTS_DATA_OUT => open, - CTS_DATAREADY_OUT => open, - CTS_READOUT_FINISHED_OUT => gbe_cts_readout_finished, - CTS_READ_IN => '1', - CTS_LENGTH_OUT => open, - CTS_ERROR_PATTERN_OUT => gbe_cts_status_bits, - --Data payload interface - FEE_DATA_IN => gbe_fee_data, - FEE_DATAREADY_IN => gbe_fee_dataready, - FEE_READ_OUT => gbe_fee_read, - FEE_STATUS_BITS_IN => gbe_fee_status_bits, - FEE_BUSY_IN => gbe_fee_busy, - -- ip configurator - SLV_ADDR_IN => SLV_ADDR_IN, - SLV_READ_IN => SLV_READ_IN, - SLV_WRITE_IN => SLV_WRITE_IN, - SLV_BUSY_OUT => SLV_BUSY_OUT, - SLV_ACK_OUT => SLV_ACK_OUT, - SLV_DATA_IN => SLV_DATA_IN, - SLV_DATA_OUT => SLV_DATA_OUT, - CFG_GBE_ENABLE_IN => '1', - CFG_IPU_ENABLE_IN => '0', - CFG_MULT_ENABLE_IN => '0', - CFG_SUBEVENT_ID_IN => x"0000_00cf", - CFG_SUBEVENT_DEC_IN => x"0002_0001", - CFG_QUEUE_DEC_IN => x"0003_0062", - CFG_READOUT_CTR_IN => x"00_0000", - CFG_READOUT_CTR_VALID_IN => '0', - CFG_INSERT_TTYPE_IN => '0', - CFG_MAX_SUB_IN => x"e998", -- 59800 - CFG_MAX_QUEUE_IN => x"ea60", -- 60000 - CFG_MAX_SUBS_IN_QUEUE_IN => x"00c8", -- 200 - CFG_MAX_SINGLE_SUB_IN => x"e998", --x"7d00", -- 32000 - - CFG_ADDITIONAL_HDR_IN => '0', - CFG_MAX_REPLY_SIZE_IN => x"0000_fa00", - CFG_AUTO_THROTTLE_IN => CFG_AUTO_THROTTLE_IN, - CFG_THROTTLE_PAUSE_IN => CFG_THROTTLE_PAUSE_IN, - - FWD_DST_MAC_IN => FWD_DST_MAC_IN, - FWD_DST_IP_IN => FWD_DST_IP_IN, - FWD_DST_UDP_IN => FWD_DST_UDP_IN, - FWD_DATA_IN => FWD_DATA_IN, - FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, - FWD_SOP_IN => FWD_SOP_IN, - FWD_EOP_IN => FWD_EOP_IN, - FWD_READY_OUT => FWD_READY_OUT, - FWD_FULL_OUT => FWD_FULL_OUT, - - -- signal to/from Host interface of TriSpeed MAC - TSM_HADDR_OUT => open, --mac_haddr, - TSM_HDATA_OUT => open, --mac_hdataout, - TSM_HCS_N_OUT => open, --mac_hcs, - TSM_HWRITE_N_OUT => open, --mac_hwrite, - TSM_HREAD_N_OUT => open, --mac_hread, - TSM_HREADY_N_IN => '0', --mac_hready, - TSM_HDATA_EN_N_IN => '1', --mac_hdata_en, - TSM_RX_STAT_VEC_IN => (others => '0'), --mac_rx_stat_vec, - TSM_RX_STAT_EN_IN => '0', --mac_rx_stat_en, - - MAC_READY_CONF_IN => MAC_READY_CONF_IN, - MAC_RECONF_OUT => MAC_RECONF_OUT, - MONITOR_SELECT_REC_OUT => dbg_select_rec, - MONITOR_SELECT_REC_BYTES_OUT => dbg_select_rec_bytes, - MONITOR_SELECT_SENT_BYTES_OUT => dbg_select_sent_bytes, - MONITOR_SELECT_SENT_OUT => dbg_select_sent, - MONITOR_SELECT_DROP_IN_OUT => dbg_select_drop_in, - MONITOR_SELECT_DROP_OUT_OUT => dbg_select_drop_out, - MONITOR_SELECT_GEN_DBG_OUT => dbg_select_gen, - DATA_HIST_OUT => dbg_hist, - SCTRL_HIST_OUT => dbg_hist2 - ); - - dummy : gbe_ipu_dummy - generic map( - DO_SIMULATION => DO_SIMULATION, - FIXED_SIZE_MODE => FIXED_SIZE_MODE, - INCREMENTAL_MODE => INCREMENTAL_MODE, - FIXED_SIZE => FIXED_SIZE, - UP_DOWN_MODE => UP_DOWN_MODE, - UP_DOWN_LIMIT => UP_DOWN_LIMIT, - FIXED_DELAY_MODE => FIXED_DELAY_MODE, - FIXED_DELAY => FIXED_DELAY - ) - port map( - clk => CLK_SYS_IN, - rst => RESET, - GBE_READY_IN => dhcp_done, - CFG_EVENT_SIZE_IN => (others => '0'), - CFG_TRIGGERED_MODE_IN => '0', - TRIGGER_IN => '0', - CTS_NUMBER_OUT => gbe_cts_number, - CTS_CODE_OUT => gbe_cts_code, - CTS_INFORMATION_OUT => gbe_cts_information, - CTS_READOUT_TYPE_OUT => gbe_cts_readout_type, - CTS_START_READOUT_OUT => gbe_cts_start_readout, - CTS_DATA_IN => (others => '0'), - CTS_DATAREADY_IN => '0', - CTS_READOUT_FINISHED_IN => gbe_cts_readout_finished, - CTS_READ_OUT => open, - CTS_LENGTH_IN => (others => '0'), - CTS_ERROR_PATTERN_IN => gbe_cts_status_bits, - -- Data payload interfac => - FEE_DATA_OUT => gbe_fee_data, - FEE_DATAREADY_OUT => gbe_fee_dataready, - FEE_READ_IN => gbe_fee_read, - FEE_STATUS_BITS_OUT => gbe_fee_status_bits, - FEE_BUSY_OUT => gbe_fee_busy - ); - end generate main_with_dummy_gen; - - MAKE_RESET_OUT <= make_reset; -- or idle_too_long; - - transmit_gen : if USE_INTERNAL_TRBNET_DUMMY = 0 generate - TRANSMIT_CONTROLLER : trb_net16_gbe_transmit_control2 - port map( - CLK => CLK_SYS_IN, - RESET => global_reset, --RESET, - - -- signal to/from main controller - TC_DATAREADY_IN => mc_transmit_ctrl, - TC_RD_EN_OUT => mc_wr_en, - TC_DATA_IN => mc_data(7 downto 0), - TC_FRAME_SIZE_IN => mc_frame_size, - TC_FRAME_TYPE_IN => mc_type, - TC_IP_PROTOCOL_IN => mc_ip_proto, - TC_DEST_MAC_IN => mc_dest_mac, - TC_DEST_IP_IN => mc_dest_ip, - TC_DEST_UDP_IN => mc_dest_udp, - TC_SRC_MAC_IN => mc_src_mac, - TC_SRC_IP_IN => mc_src_ip, - TC_SRC_UDP_IN => mc_src_udp, - TC_TRANSMISSION_DONE_OUT => mc_transmit_done, - TC_IDENT_IN => mc_ident, - TC_MAX_FRAME_IN => CFG_MAX_FRAME_IN, - - -- signal to/from frame constructor - FC_DATA_OUT => fc_data, - FC_WR_EN_OUT => fc_wr_en, - FC_READY_IN => fc_ready, - FC_H_READY_IN => fc_h_ready, - FC_FRAME_TYPE_OUT => fc_type, - FC_IP_SIZE_OUT => fc_ip_size, - FC_UDP_SIZE_OUT => fc_udp_size, - FC_IDENT_OUT => fc_ident, - FC_FLAGS_OFFSET_OUT => fc_flags_offset, - FC_SOD_OUT => fc_sod, - FC_EOD_OUT => fc_eod, - FC_IP_PROTOCOL_OUT => fc_protocol, - DEST_MAC_ADDRESS_OUT => fc_dest_mac, - DEST_IP_ADDRESS_OUT => fc_dest_ip, - DEST_UDP_PORT_OUT => fc_dest_udp, - SRC_MAC_ADDRESS_OUT => fc_src_mac, - SRC_IP_ADDRESS_OUT => fc_src_ip, - SRC_UDP_PORT_OUT => fc_src_udp, - MONITOR_TX_PACKETS_OUT => monitor_tx_packets - ); - end generate transmit_gen; - - transmit_with_dummy_gen : if USE_INTERNAL_TRBNET_DUMMY = 1 generate - TRANSMIT_CONTROLLER : trb_net16_gbe_transmit_control2 - port map( - CLK => CLK_SYS_IN, - RESET => global_reset, --RESET, - - -- signal to/from main controller - TC_DATAREADY_IN => mc_transmit_ctrl, - TC_RD_EN_OUT => mc_wr_en, - TC_DATA_IN => mc_data(7 downto 0), - TC_FRAME_SIZE_IN => mc_frame_size, - TC_FRAME_TYPE_IN => mc_type, - TC_IP_PROTOCOL_IN => mc_ip_proto, - TC_DEST_MAC_IN => mc_dest_mac, - TC_DEST_IP_IN => mc_dest_ip, - TC_DEST_UDP_IN => mc_dest_udp, - TC_SRC_MAC_IN => mc_src_mac, - TC_SRC_IP_IN => mc_src_ip, - TC_SRC_UDP_IN => mc_src_udp, - TC_TRANSMISSION_DONE_OUT => mc_transmit_done, - TC_IDENT_IN => mc_ident, - TC_MAX_FRAME_IN => CFG_MAX_FRAME_IN, - - -- signal to/from frame constructor - FC_DATA_OUT => fc_data, - FC_WR_EN_OUT => fc_wr_en, - FC_READY_IN => fc_ready, - FC_H_READY_IN => fc_h_ready, - FC_FRAME_TYPE_OUT => fc_type, - FC_IP_SIZE_OUT => fc_ip_size, - FC_UDP_SIZE_OUT => fc_udp_size, - FC_IDENT_OUT => fc_ident, - FC_FLAGS_OFFSET_OUT => fc_flags_offset, - - FC_SOD_OUT => fc_sod, - FC_EOD_OUT => fc_eod, - FC_IP_PROTOCOL_OUT => fc_protocol, - DEST_MAC_ADDRESS_OUT => fc_dest_mac, - DEST_IP_ADDRESS_OUT => fc_dest_ip, - DEST_UDP_PORT_OUT => fc_dest_udp, - SRC_MAC_ADDRESS_OUT => fc_src_mac, - SRC_IP_ADDRESS_OUT => fc_src_ip, - SRC_UDP_PORT_OUT => fc_src_udp, - MONITOR_TX_PACKETS_OUT => monitor_tx_packets - ); - end generate transmit_with_dummy_gen; + MAIN_CONTROL : entity work.trb_net16_gbe_main_control + generic map( + RX_PATH_ENABLE => 1, + DO_SIMULATION => 0, + INCLUDE_READOUT => INCLUDE_READOUT, + INCLUDE_SLOWCTRL => INCLUDE_SLOWCTRL, + INCLUDE_DHCP => INCLUDE_DHCP, + INCLUDE_ARP => INCLUDE_ARP, + INCLUDE_PING => INCLUDE_PING, + INCLUDE_FWD => INCLUDE_FWD, + READOUT_BUFFER_SIZE => READOUT_BUFFER_SIZE, + SLOWCTRL_BUFFER_SIZE => SLOWCTRL_BUFFER_SIZE + ) + port map( + CLK => CLK_125_IN, + CLK_125 => CLK_125_IN, + RESET => RESET, + MC_LINK_OK_OUT => link_ok, + MC_RESET_LINK_IN => global_reset, + MC_IDLE_TOO_LONG_OUT => open, + MC_DHCP_DONE_OUT => dhcp_done, + MY_IP_OUT => MY_IP_OUT, + MC_MY_MAC_IN => MY_MAC_IN, + MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN, + ISSUE_REBOOT_OUT => open, --ISSUE_REBOOT_OUT, + -- signals to/from receive controller + RC_FRAME_WAITING_IN => rc_frame_ready, + RC_LOADING_DONE_OUT => rc_loading_done, + RC_DATA_IN => rc_q, + RC_RD_EN_OUT => rc_rd_en, + RC_FRAME_SIZE_IN => rc_frame_size, + RC_FRAME_PROTO_IN => rc_frame_proto, + RC_SRC_MAC_ADDRESS_IN => rc_src_mac, + RC_DEST_MAC_ADDRESS_IN => rc_dest_mac, + RC_SRC_IP_ADDRESS_IN => rc_src_ip, + RC_DEST_IP_ADDRESS_IN => rc_dest_ip, + RC_SRC_UDP_PORT_IN => rc_src_udp, + RC_DEST_UDP_PORT_IN => rc_dest_udp, + -- signals to/from transmit controller + TC_TRANSMIT_CTRL_OUT => mc_transmit_ctrl, + TC_DATA_OUT => mc_data, + TC_RD_EN_IN => mc_wr_en, + TC_FRAME_SIZE_OUT => mc_frame_size, + TC_FRAME_TYPE_OUT => mc_type, + TC_IP_PROTOCOL_OUT => mc_ip_proto, + TC_IDENT_OUT => mc_ident, + TC_DEST_MAC_OUT => mc_dest_mac, + TC_DEST_IP_OUT => mc_dest_ip, + TC_DEST_UDP_OUT => mc_dest_udp, + TC_SRC_MAC_OUT => mc_src_mac, + TC_SRC_IP_OUT => mc_src_ip, + TC_SRC_UDP_OUT => mc_src_udp, + TC_TRANSMIT_DONE_IN => mc_transmit_done, + -- signals to/from sgmii/gbe pcs_an_complete + PCS_AN_COMPLETE_IN => MAC_AN_READY_IN, + -- signals to/from hub + GSC_CLK_IN => GSC_CLK_IN, + GSC_INIT_DATAREADY_OUT => GSC_INIT_DATAREADY_OUT, + GSC_INIT_DATA_OUT => GSC_INIT_DATA_OUT, + GSC_INIT_PACKET_NUM_OUT => GSC_INIT_PACKET_NUM_OUT, + GSC_INIT_READ_IN => GSC_INIT_READ_IN, + GSC_REPLY_DATAREADY_IN => GSC_REPLY_DATAREADY_IN, + GSC_REPLY_DATA_IN => GSC_REPLY_DATA_IN, + GSC_REPLY_PACKET_NUM_IN => GSC_REPLY_PACKET_NUM_IN, + GSC_REPLY_READ_OUT => GSC_REPLY_READ_OUT, + GSC_BUSY_IN => GSC_BUSY_IN, + MAKE_RESET_OUT => make_reset, + -- + RESET_TRBNET_IN => '0', + RESET_SCTRL_IN => '0', + -- CTS interface + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + CTS_DATA_OUT => CTS_DATA_OUT, + CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, + CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, + CTS_READ_IN => CTS_READ_IN, + CTS_LENGTH_OUT => CTS_LENGTH_OUT, + CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, + -- Data payload interface + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => FEE_READ_OUT, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + FEE_BUSY_IN => FEE_BUSY_IN, + -- ip configurator + SLV_ADDR_IN => SLV_ADDR_IN, + SLV_READ_IN => SLV_READ_IN, + SLV_WRITE_IN => SLV_WRITE_IN, + SLV_BUSY_OUT => SLV_BUSY_OUT, + SLV_ACK_OUT => SLV_ACK_OUT, + SLV_DATA_IN => SLV_DATA_IN, + SLV_DATA_OUT => SLV_DATA_OUT, + CFG_GBE_ENABLE_IN => CFG_GBE_ENABLE_IN, + CFG_IPU_ENABLE_IN => CFG_IPU_ENABLE_IN, + CFG_MULT_ENABLE_IN => CFG_MULT_ENABLE_IN, + CFG_SUBEVENT_ID_IN => CFG_SUBEVENT_ID_IN, + CFG_SUBEVENT_DEC_IN => CFG_SUBEVENT_DEC_IN, + CFG_QUEUE_DEC_IN => CFG_QUEUE_DEC_IN, + CFG_READOUT_CTR_IN => CFG_READOUT_CTR_IN, + CFG_READOUT_CTR_VALID_IN => CFG_READOUT_CTR_VALID_IN, + CFG_INSERT_TTYPE_IN => CFG_INSERT_TTYPE_IN, + CFG_MAX_SUB_IN => CFG_MAX_SUB_IN, + CFG_MAX_QUEUE_IN => CFG_MAX_QUEUE_IN, + CFG_MAX_SUBS_IN_QUEUE_IN => CFG_MAX_SUBS_IN_QUEUE_IN, + CFG_MAX_SINGLE_SUB_IN => CFG_MAX_SINGLE_SUB_IN, + CFG_ADDITIONAL_HDR_IN => CFG_ADDITIONAL_HDR_IN, + CFG_MAX_REPLY_SIZE_IN => CFG_MAX_REPLY_SIZE_IN, + CFG_AUTO_THROTTLE_IN => '0', --CFG_AUTO_THROTTLE_IN, + CFG_THROTTLE_PAUSE_IN => (others => '0'), --CFG_THROTTLE_PAUSE_IN, + + FWD_DST_MAC_IN => FWD_DST_MAC_IN, + FWD_DST_IP_IN => FWD_DST_IP_IN, + FWD_DST_UDP_IN => FWD_DST_UDP_IN, + FWD_DATA_IN => FWD_DATA_IN, + FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, + FWD_SOP_IN => FWD_SOP_IN, + FWD_EOP_IN => FWD_EOP_IN, + FWD_READY_OUT => FWD_READY_OUT, + FWD_FULL_OUT => FWD_FULL_OUT, + + TSM_HADDR_OUT => open, --mac_haddr, + TSM_HDATA_OUT => open, --mac_hdataout, + TSM_HCS_N_OUT => open, --mac_hcs, + TSM_HWRITE_N_OUT => open, --mac_hwrite, + TSM_HREAD_N_OUT => open, --mac_hread, + TSM_HREADY_N_IN => '0', --mac_hready, + TSM_HDATA_EN_N_IN => '1', --mac_hdata_en, + TSM_RX_STAT_VEC_IN => (others => '0'), --mac_rx_stat_vec, + TSM_RX_STAT_EN_IN => '0', --mac_rx_stat_en, + + MAC_READY_CONF_IN => MAC_READY_CONF_IN, + MAC_RECONF_OUT => MAC_RECONF_OUT, + MONITOR_SELECT_REC_OUT => dbg_select_rec, + MONITOR_SELECT_REC_BYTES_OUT => dbg_select_rec_bytes, + MONITOR_SELECT_SENT_BYTES_OUT => dbg_select_sent_bytes, + MONITOR_SELECT_SENT_OUT => dbg_select_sent, + MONITOR_SELECT_DROP_IN_OUT => dbg_select_drop_in, + MONITOR_SELECT_DROP_OUT_OUT => dbg_select_drop_out, + MONITOR_SELECT_GEN_DBG_OUT => dbg_select_gen, + DATA_HIST_OUT => dbg_hist, + SCTRL_HIST_OUT => dbg_hist2 + ); + + MAKE_RESET_OUT <= make_reset; + + TRANSMIT_CONTROLLER : trb_net16_gbe_transmit_control2 + port map( + CLK => CLK_125_IN, + RESET => global_reset, --RESET, + -- signal to/from main controller + TC_DATAREADY_IN => mc_transmit_ctrl, + TC_RD_EN_OUT => mc_wr_en, + TC_DATA_IN => mc_data(7 downto 0), + TC_FRAME_SIZE_IN => mc_frame_size, + TC_FRAME_TYPE_IN => mc_type, + TC_IP_PROTOCOL_IN => mc_ip_proto, + TC_DEST_MAC_IN => mc_dest_mac, + TC_DEST_IP_IN => mc_dest_ip, + TC_DEST_UDP_IN => mc_dest_udp, + TC_SRC_MAC_IN => mc_src_mac, + TC_SRC_IP_IN => mc_src_ip, + TC_SRC_UDP_IN => mc_src_udp, + TC_TRANSMISSION_DONE_OUT => mc_transmit_done, + TC_IDENT_IN => mc_ident, + TC_MAX_FRAME_IN => CFG_MAX_FRAME_IN, + -- signal to/from frame constructor + FC_DATA_OUT => fc_data, + FC_WR_EN_OUT => fc_wr_en, + FC_READY_IN => fc_ready, + FC_H_READY_IN => fc_h_ready, + FC_FRAME_TYPE_OUT => fc_type, + FC_IP_SIZE_OUT => fc_ip_size, + FC_UDP_SIZE_OUT => fc_udp_size, + FC_IDENT_OUT => fc_ident, + FC_FLAGS_OFFSET_OUT => fc_flags_offset, + FC_SOD_OUT => fc_sod, + FC_EOD_OUT => fc_eod, + FC_IP_PROTOCOL_OUT => fc_protocol, + DEST_MAC_ADDRESS_OUT => fc_dest_mac, + DEST_IP_ADDRESS_OUT => fc_dest_ip, + DEST_UDP_PORT_OUT => fc_dest_udp, + SRC_MAC_ADDRESS_OUT => fc_src_mac, + SRC_IP_ADDRESS_OUT => fc_src_ip, + SRC_UDP_PORT_OUT => fc_src_udp, + MONITOR_TX_PACKETS_OUT => monitor_tx_packets + ); FRAME_CONSTRUCTOR : trb_net16_gbe_frame_constr port map( @@ -755,111 +496,85 @@ begin frame_pause <= x"0000" & CFG_THROTTLE_PAUSE_IN; - rx_enable_gen : if (RX_PATH_ENABLE = 1) generate - RECEIVE_CONTROLLER : trb_net16_gbe_receive_control - port map( - CLK => CLK_SYS_IN, - RESET => global_reset, - -- signals to/from frame_receiver - RC_DATA_IN => fr_q, - FR_RD_EN_OUT => fr_rd_en, - FR_FRAME_VALID_IN => fr_frame_valid, - FR_GET_FRAME_OUT => fr_get_frame, - FR_FRAME_SIZE_IN => fr_frame_size, - FR_FRAME_PROTO_IN => fr_frame_proto, - FR_IP_PROTOCOL_IN => fr_ip_proto, - FR_SRC_MAC_ADDRESS_IN => fr_src_mac, - FR_DEST_MAC_ADDRESS_IN => fr_dest_mac, - FR_SRC_IP_ADDRESS_IN => fr_src_ip, - FR_DEST_IP_ADDRESS_IN => fr_dest_ip, - FR_SRC_UDP_PORT_IN => fr_src_udp, - FR_DEST_UDP_PORT_IN => fr_dest_udp, - -- signals to/from main controller - RC_RD_EN_IN => rc_rd_en, - RC_Q_OUT => rc_q, - RC_FRAME_WAITING_OUT => rc_frame_ready, - RC_LOADING_DONE_IN => rc_loading_done, - RC_FRAME_SIZE_OUT => rc_frame_size, - RC_FRAME_PROTO_OUT => rc_frame_proto, - RC_SRC_MAC_ADDRESS_OUT => rc_src_mac, - RC_DEST_MAC_ADDRESS_OUT => rc_dest_mac, - RC_SRC_IP_ADDRESS_OUT => rc_src_ip, - RC_DEST_IP_ADDRESS_OUT => rc_dest_ip, - RC_SRC_UDP_PORT_OUT => rc_src_udp, - RC_DEST_UDP_PORT_OUT => rc_dest_udp, - -- statistics - FRAMES_RECEIVED_OUT => rc_frames_rec_ctr, - BYTES_RECEIVED_OUT => rc_bytes_rec, - DEBUG_OUT => rc_debug - ); - - FRAME_RECEIVER : trb_net16_gbe_frame_receiver - port map( - CLK => CLK_125_IN, - RESET => global_reset, - LINK_OK_IN => link_ok, - ALLOW_RX_IN => CFG_ALLOW_RX_IN, - MY_MAC_IN => MY_MAC_IN, - -- - MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN, - ISSUE_REBOOT_OUT => ISSUE_REBOOT_OUT, - -- input signals from TS_MAC - MAC_RX_EOF_IN => MAC_RX_EOF_IN, - MAC_RX_ER_IN => MAC_RX_ERROR_IN, - MAC_RXD_IN => MAC_RX_DATA_IN, - MAC_RX_EN_IN => MAC_RX_WRITE_IN, - MAC_RX_FIFO_ERR_IN => MAC_RX_FIFO_ERR_IN, - MAC_RX_FIFO_FULL_OUT => MAC_RX_FIFOFULL_OUT, - MAC_RX_STAT_EN_IN => MAC_RX_STAT_EN_IN, - MAC_RX_STAT_VEC_IN => MAC_RX_STATS_IN, - -- output signal to control logic - FR_Q_OUT => fr_q, - FR_RD_EN_IN => fr_rd_en, - FR_FRAME_VALID_OUT => fr_frame_valid, - FR_GET_FRAME_IN => fr_get_frame, - FR_FRAME_SIZE_OUT => fr_frame_size, - FR_FRAME_PROTO_OUT => fr_frame_proto, - FR_IP_PROTOCOL_OUT => fr_ip_proto, - FR_ALLOWED_TYPES_IN => (others => '1'), --fr_allowed_types, - FR_ALLOWED_IP_IN => (others => '1'), --fr_allowed_ip, - FR_ALLOWED_UDP_IN => (others => '1'), --fr_allowed_udp, - FR_VLAN_ID_IN => (others => '0'), --vlan_id, - -- - FR_SRC_MAC_ADDRESS_OUT => fr_src_mac, - FR_DEST_MAC_ADDRESS_OUT => fr_dest_mac, - FR_SRC_IP_ADDRESS_OUT => fr_src_ip, - FR_DEST_IP_ADDRESS_OUT => fr_dest_ip, - FR_SRC_UDP_PORT_OUT => fr_src_udp, - FR_DEST_UDP_PORT_OUT => fr_dest_udp, - MONITOR_RX_BYTES_OUT => monitor_rx_bytes, - MONITOR_RX_FRAMES_OUT => monitor_rx_frames, - MONITOR_DROPPED_OUT => monitor_dropped - ); - - end generate rx_enable_gen; - - rx_disable_gen : if (RX_PATH_ENABLE = 0) generate - rc_q <= (others => '0'); - rc_frame_ready <= '0'; - rc_frame_size <= (others => '0'); - rc_frame_proto <= (others => '0'); - - rc_src_mac <= (others => '0'); - rc_dest_mac <= (others => '0'); - rc_src_ip <= (others => '0'); - rc_dest_ip <= (others => '0'); - rc_src_udp <= (others => '0'); - rc_dest_udp <= (others => '0'); - - rc_frames_rec_ctr <= (others => '0'); - rc_bytes_rec <= (others => '0'); - rc_debug <= (others => '0'); - - monitor_rx_bytes <= (others => '0'); - monitor_rx_frames <= (others => '0'); - monitor_dropped <= (others => '0'); - - end generate rx_disable_gen; + RECEIVE_CONTROLLER : trb_net16_gbe_receive_control + port map( + CLK => CLK_125_IN, + RESET => global_reset, + -- signals to/from frame_receiver + RC_DATA_IN => fr_q, + FR_RD_EN_OUT => fr_rd_en, + FR_FRAME_VALID_IN => fr_frame_valid, + FR_GET_FRAME_OUT => fr_get_frame, + FR_FRAME_SIZE_IN => fr_frame_size, + FR_FRAME_PROTO_IN => fr_frame_proto, + FR_IP_PROTOCOL_IN => fr_ip_proto, + FR_SRC_MAC_ADDRESS_IN => fr_src_mac, + FR_DEST_MAC_ADDRESS_IN => fr_dest_mac, + FR_SRC_IP_ADDRESS_IN => fr_src_ip, + FR_DEST_IP_ADDRESS_IN => fr_dest_ip, + FR_SRC_UDP_PORT_IN => fr_src_udp, + FR_DEST_UDP_PORT_IN => fr_dest_udp, + -- signals to/from main controller + RC_RD_EN_IN => rc_rd_en, + RC_Q_OUT => rc_q, + RC_FRAME_WAITING_OUT => rc_frame_ready, + RC_LOADING_DONE_IN => rc_loading_done, + RC_FRAME_SIZE_OUT => rc_frame_size, + RC_FRAME_PROTO_OUT => rc_frame_proto, + RC_SRC_MAC_ADDRESS_OUT => rc_src_mac, + RC_DEST_MAC_ADDRESS_OUT => rc_dest_mac, + RC_SRC_IP_ADDRESS_OUT => rc_src_ip, + RC_DEST_IP_ADDRESS_OUT => rc_dest_ip, + RC_SRC_UDP_PORT_OUT => rc_src_udp, + RC_DEST_UDP_PORT_OUT => rc_dest_udp, + -- statistics + FRAMES_RECEIVED_OUT => rc_frames_rec_ctr, + BYTES_RECEIVED_OUT => rc_bytes_rec, + DEBUG_OUT => rc_debug + ); + + FRAME_RECEIVER : trb_net16_gbe_frame_receiver + port map( + CLK => CLK_125_IN, + RESET => global_reset, + LINK_OK_IN => link_ok, + ALLOW_RX_IN => CFG_ALLOW_RX_IN, + MY_MAC_IN => MY_MAC_IN, + -- + MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN, + ISSUE_REBOOT_OUT => ISSUE_REBOOT_OUT, + -- input signals from TS_MAC + MAC_RX_EOF_IN => MAC_RX_EOF_IN, + MAC_RX_ER_IN => MAC_RX_ERROR_IN, + MAC_RXD_IN => MAC_RX_DATA_IN, + MAC_RX_EN_IN => MAC_RX_WRITE_IN, + MAC_RX_FIFO_ERR_IN => MAC_RX_FIFO_ERR_IN, + MAC_RX_FIFO_FULL_OUT => MAC_RX_FIFOFULL_OUT, + MAC_RX_STAT_EN_IN => MAC_RX_STAT_EN_IN, + MAC_RX_STAT_VEC_IN => MAC_RX_STATS_IN, + -- output signal to control logic + FR_Q_OUT => fr_q, + FR_RD_EN_IN => fr_rd_en, + FR_FRAME_VALID_OUT => fr_frame_valid, + FR_GET_FRAME_IN => fr_get_frame, + FR_FRAME_SIZE_OUT => fr_frame_size, + FR_FRAME_PROTO_OUT => fr_frame_proto, + FR_IP_PROTOCOL_OUT => fr_ip_proto, + FR_ALLOWED_TYPES_IN => (others => '1'), --fr_allowed_types, + FR_ALLOWED_IP_IN => (others => '1'), --fr_allowed_ip, + FR_ALLOWED_UDP_IN => (others => '1'), --fr_allowed_udp, + FR_VLAN_ID_IN => (others => '0'), --vlan_id, + -- + FR_SRC_MAC_ADDRESS_OUT => fr_src_mac, + FR_DEST_MAC_ADDRESS_OUT => fr_dest_mac, + FR_SRC_IP_ADDRESS_OUT => fr_src_ip, + FR_DEST_IP_ADDRESS_OUT => fr_dest_ip, + FR_SRC_UDP_PORT_OUT => fr_src_udp, + FR_DEST_UDP_PORT_OUT => fr_dest_udp, + MONITOR_RX_BYTES_OUT => monitor_rx_bytes, + MONITOR_RX_FRAMES_OUT => monitor_rx_frames, + MONITOR_DROPPED_OUT => monitor_dropped + ); MONITOR_RX_FRAMES_OUT <= monitor_rx_frames; MONITOR_RX_BYTES_OUT <= monitor_rx_bytes; @@ -868,14 +583,6 @@ begin MONITOR_TX_PACKETS_OUT <= monitor_tx_packets; MONITOR_DROPPED_OUT <= monitor_dropped; - MONITOR_GEN_DBG_OUT <= dbg_select_gen; - --- MONITOR_RX_BYTES_OUT <= monitor_rx_bytes(4 * 32 - 1 downto 3 * 32) + monitor_rx_bytes(3 * 32 - 1 downto 2 * 32) + monitor_rx_bytes(2 * 32 - 1 downto 1 * 32) + monitor_rx_bytes(1 * 32 - 1 downto 0 * 32); --- MONITOR_RX_FRAMES_OUT <= monitor_rx_frames(4 * 32 - 1 downto 3 * 32) + monitor_rx_frames(3 * 32 - 1 downto 2 * 32) + monitor_rx_frames(2 * 32 - 1 downto 1 * 32) + monitor_rx_frames(1 * 32 - 1 downto 0 * 32); --- MONITOR_TX_BYTES_OUT <= monitor_tx_bytes(4 * 32 - 1 downto 3 * 32) + monitor_tx_bytes(3 * 32 - 1 downto 2 * 32) + monitor_tx_bytes(2 * 32 - 1 downto 1 * 32) + monitor_tx_bytes(1 * 32 - 1 downto 0 * 32); --- MONITOR_TX_FRAMES_OUT <= monitor_tx_frames(4 * 32 - 1 downto 3 * 32) + monitor_tx_frames(3 * 32 - 1 downto 2 * 32) + monitor_tx_frames(2 * 32 - 1 downto 1 * 32) + monitor_tx_frames(1 * 32 - 1 downto 0 * 32); --- MONITOR_TX_PACKETS_OUT <= monitor_tx_packets(4 * 32 - 1 downto 3 * 32) + monitor_tx_packets(3 * 32 - 1 downto 2 * 32) + monitor_tx_packets(2 * 32 - 1 downto 1 * 32) + monitor_tx_packets(1 * 32 - 1 downto 0 * 32); --- MONITOR_DROPPED_OUT <= (others => '0'); - + MONITOR_GEN_DBG_OUT <= dbg_select_gen; end architecture RTL; diff --git a/gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd b/gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd index f54630e..45eb39f 100644 --- a/gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd +++ b/gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd @@ -289,26 +289,16 @@ begin STATUS_OUT(15 downto 9) <= (others => '0'); gbe_inst : entity work.gbe_logic_wrapper - generic map(DO_SIMULATION => DO_SIMULATION, - INCLUDE_DEBUG => INCLUDE_DEBUG, - USE_INTERNAL_TRBNET_DUMMY => USE_INTERNAL_TRBNET_DUMMY, - RX_PATH_ENABLE => RX_PATH_ENABLE, - INCLUDE_READOUT => LINK_HAS_READOUT, - INCLUDE_SLOWCTRL => LINK_HAS_SLOWCTRL, - INCLUDE_DHCP => LINK_HAS_DHCP, - INCLUDE_ARP => LINK_HAS_ARP, - INCLUDE_PING => LINK_HAS_PING, - INCLUDE_FWD => LINK_HAS_FWD, - FRAME_BUFFER_SIZE => 1, - READOUT_BUFFER_SIZE => 4, - SLOWCTRL_BUFFER_SIZE => 2, - FIXED_SIZE_MODE => FIXED_SIZE_MODE, - INCREMENTAL_MODE => INCREMENTAL_MODE, - FIXED_SIZE => FIXED_SIZE, - FIXED_DELAY_MODE => FIXED_DELAY_MODE, - UP_DOWN_MODE => UP_DOWN_MODE, - UP_DOWN_LIMIT => UP_DOWN_LIMIT, - FIXED_DELAY => FIXED_DELAY) + generic map( + INCLUDE_READOUT => LINK_HAS_READOUT, + INCLUDE_SLOWCTRL => LINK_HAS_SLOWCTRL, + INCLUDE_DHCP => LINK_HAS_DHCP, + INCLUDE_ARP => LINK_HAS_ARP, + INCLUDE_PING => LINK_HAS_PING, + INCLUDE_FWD => LINK_HAS_FWD, + READOUT_BUFFER_SIZE => 4, + SLOWCTRL_BUFFER_SIZE => 2 + ) port map( CLK_SYS_IN => CLK_SYS_IN, CLK_125_IN => CLK_125_IN, @@ -422,80 +412,32 @@ begin BUS_IP_TX.nack <= busip0.nack when rising_edge(CLK_SYS_IN); BUS_IP_TX.data <= busip0.data when rising_edge(CLK_SYS_IN); - real_ipu_gen : if USE_EXTERNAL_TRBNET_DUMMY = 0 generate - ipu_mult : entity work.gbe_ipu_multiplexer - generic map( - DO_SIMULATION => DO_SIMULATION, - INCLUDE_DEBUG => INCLUDE_DEBUG, - LINK_HAS_READOUT => "000" & LINK_HAS_READOUT, - NUMBER_OF_GBE_LINKS => 1 - ) - port map( - CLK_SYS_IN => CLK_SYS_IN, - RESET => RESET, - CTS_NUMBER_IN => CTS_NUMBER_IN, - CTS_CODE_IN => CTS_CODE_IN, - CTS_INFORMATION_IN => CTS_INFORMATION_IN, - CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, - CTS_START_READOUT_IN => CTS_START_READOUT_IN, - CTS_DATA_OUT => CTS_DATA_OUT, - CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, - CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, - CTS_READ_IN => CTS_READ_IN, - CTS_LENGTH_OUT => CTS_LENGTH_OUT, - CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, - FEE_DATA_IN => FEE_DATA_IN, - FEE_DATAREADY_IN => FEE_DATAREADY_IN, - FEE_READ_OUT => FEE_READ_OUT, - FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, - FEE_BUSY_IN => FEE_BUSY_IN, - MLT_CTS_NUMBER_OUT => mlt_cts_number, - MLT_CTS_CODE_OUT => mlt_cts_code, - MLT_CTS_INFORMATION_OUT => mlt_cts_information, - MLT_CTS_READOUT_TYPE_OUT => mlt_cts_readout_type, - MLT_CTS_START_READOUT_OUT => mlt_cts_start_readout, - MLT_CTS_DATA_IN => mlt_cts_data, - MLT_CTS_DATAREADY_IN => mlt_cts_dataready, - MLT_CTS_READOUT_FINISHED_IN => mlt_cts_readout_finished, - MLT_CTS_READ_OUT => mlt_cts_read, - MLT_CTS_LENGTH_IN => mlt_cts_length, - MLT_CTS_ERROR_PATTERN_IN => mlt_cts_error_pattern, - MLT_FEE_DATA_OUT => mlt_fee_data, - MLT_FEE_DATAREADY_OUT => mlt_fee_dataready, - MLT_FEE_READ_IN => mlt_fee_read, - MLT_FEE_STATUS_BITS_OUT => mlt_fee_status, - MLT_FEE_BUSY_OUT => mlt_fee_busy, - DEBUG_OUT => open - ); - end generate real_ipu_gen; - - dummy_ipu_gen : if (USE_EXTERNAL_TRBNET_DUMMY = 1) generate - ipu_mult : entity work.gbe_ipu_multiplexer + ipu_mult : entity work.gbe_ipu_multiplexer generic map( DO_SIMULATION => DO_SIMULATION, INCLUDE_DEBUG => INCLUDE_DEBUG, - LINK_HAS_READOUT => LINK_HAS_READOUT, + LINK_HAS_READOUT => "000" & LINK_HAS_READOUT, NUMBER_OF_GBE_LINKS => 1 ) port map( CLK_SYS_IN => CLK_SYS_IN, RESET => RESET, - CTS_NUMBER_IN => local_cts_number, - CTS_CODE_IN => local_cts_code, - CTS_INFORMATION_IN => local_cts_information, - CTS_READOUT_TYPE_IN => local_cts_readout_type, - CTS_START_READOUT_IN => local_cts_start_readout, - CTS_DATA_OUT => open, - CTS_DATAREADY_OUT => open, - CTS_READOUT_FINISHED_OUT => local_cts_readout_finished, - CTS_READ_IN => '1', - CTS_LENGTH_OUT => open, - CTS_ERROR_PATTERN_OUT => local_cts_status_bits, - FEE_DATA_IN => local_fee_data, - FEE_DATAREADY_IN => local_fee_dataready, - FEE_READ_OUT => local_fee_read, - FEE_STATUS_BITS_IN => local_fee_status_bits, - FEE_BUSY_IN => local_fee_busy, + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + CTS_DATA_OUT => CTS_DATA_OUT, + CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, + CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, + CTS_READ_IN => CTS_READ_IN, + CTS_LENGTH_OUT => CTS_LENGTH_OUT, + CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => FEE_READ_OUT, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + FEE_BUSY_IN => FEE_BUSY_IN, MLT_CTS_NUMBER_OUT => mlt_cts_number, MLT_CTS_CODE_OUT => mlt_cts_code, MLT_CTS_INFORMATION_OUT => mlt_cts_information, @@ -515,99 +457,6 @@ begin DEBUG_OUT => open ); - dummy : entity work.gbe_ipu_dummy - generic map( - DO_SIMULATION => DO_SIMULATION, - FIXED_SIZE_MODE => FIXED_SIZE_MODE, - INCREMENTAL_MODE => INCREMENTAL_MODE, - FIXED_SIZE => FIXED_SIZE, - UP_DOWN_MODE => UP_DOWN_MODE, - UP_DOWN_LIMIT => UP_DOWN_LIMIT, - FIXED_DELAY_MODE => FIXED_DELAY_MODE, - FIXED_DELAY => FIXED_DELAY - ) - port map( - clk => CLK_SYS_IN, - rst => RESET, - GBE_READY_IN => all_links_ready, - CFG_EVENT_SIZE_IN => dummy_event, - CFG_TRIGGERED_MODE_IN => '0', - TRIGGER_IN => TRIGGER_IN, - CTS_NUMBER_OUT => local_cts_number, - CTS_CODE_OUT => local_cts_code, - CTS_INFORMATION_OUT => local_cts_information, - CTS_READOUT_TYPE_OUT => local_cts_readout_type, - CTS_START_READOUT_OUT => local_cts_start_readout, - CTS_DATA_IN => (others => '0'), - CTS_DATAREADY_IN => '0', - CTS_READOUT_FINISHED_IN => local_cts_readout_finished, - CTS_READ_OUT => open, - CTS_LENGTH_IN => (others => '0'), - CTS_ERROR_PATTERN_IN => local_cts_status_bits, - -- Data payload interface - FEE_DATA_OUT => local_fee_data, - FEE_DATAREADY_OUT => local_fee_dataready, - FEE_READ_IN => local_fee_read, - FEE_STATUS_BITS_OUT => local_fee_status_bits, - FEE_BUSY_OUT => local_fee_busy - ); - - -- handler for triggers - DUMMY_HANDLER : entity work.trb_net16_gbe_ipu_interface - port map( - CLK_IPU => CLK_SYS_IN, - CLK_GBE => CLK_125_IN, - RESET => RESET, - --Event information coming from CTS - CTS_NUMBER_IN => CTS_NUMBER_IN, - CTS_CODE_IN => CTS_CODE_IN, - CTS_INFORMATION_IN => CTS_INFORMATION_IN, - CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, - CTS_START_READOUT_IN => CTS_START_READOUT_IN, - --Information sent to CTS - --status data, equipped with DHDR - CTS_DATA_OUT => CTS_DATA_OUT, - CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, - CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, - CTS_READ_IN => CTS_READ_IN, - CTS_LENGTH_OUT => CTS_LENGTH_OUT, - CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, - -- Data from Frontends - FEE_DATA_IN => FEE_DATA_IN, - FEE_DATAREADY_IN => FEE_DATAREADY_IN, - FEE_READ_OUT => FEE_READ_OUT, - FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, - FEE_BUSY_IN => FEE_BUSY_IN, - -- slow control interface - START_CONFIG_OUT => open, - BANK_SELECT_OUT => open, - CONFIG_DONE_IN => '1', - DATA_GBE_ENABLE_IN => '1', - DATA_IPU_ENABLE_IN => '1', - MULT_EVT_ENABLE_IN => '1', - MAX_SUBEVENT_SIZE_IN => (others => '0'), - MAX_QUEUE_SIZE_IN => (others => '0'), - MAX_SUBS_IN_QUEUE_IN => (others => '0'), - MAX_SINGLE_SUB_SIZE_IN => (others => '0'), - READOUT_CTR_IN => (others => '0'), - READOUT_CTR_VALID_IN => '0', - CFG_AUTO_THROTTLE_IN => '0', - CFG_THROTTLE_PAUSE_IN => (others => '0'), - -- PacketConstructor interface - PC_WR_EN_OUT => open, - PC_DATA_OUT => open, - PC_READY_IN => '1', - PC_SOS_OUT => open, - PC_EOS_OUT => open, - PC_EOQ_OUT => open, - PC_SUB_SIZE_OUT => open, - PC_TRIG_NR_OUT => open, - PC_TRIGGER_TYPE_OUT => open, - MONITOR_OUT => open, - DEBUG_OUT => open - ); - end generate dummy_ipu_gen; - SETUP : gbe_setup port map( CLK => CLK_SYS_IN, -- 2.43.0