]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
removed some generics plus underlaying functionality
authorMichael Boehmer <mboehmer@ph.tum.de>
Mon, 11 Jul 2022 10:35:22 +0000 (12:35 +0200)
committerMichael Boehmer <mboehmer@ph.tum.de>
Mon, 11 Jul 2022 10:35:22 +0000 (12:35 +0200)
gbe_trb/base/gbe_logic_wrapper.vhd
gbe_trb_ecp3/base/gbe_wrapper_fifo.vhd

index c91997f4075f21132fff20d891f2a5026b8bc621..dc73c2ac69340fc213f61deb9ec5c8225f42b47f 100644 (file)
@@ -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;
index f54630ee6b1f7a1a2955a942cbffa001160398c1..45eb39fba1a776d791853c156abf933ec53994cd 100644 (file)
@@ -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,