signal gsc_init_read, gsc_reply_read : std_logic;
signal gsc_init_dataready, gsc_reply_dataready : std_logic;
signal gsc_init_packet_num, gsc_reply_packet_num : std_logic_vector(2 downto 0);
- signal gsc_busy : std_logic;
- signal my_address : std_logic_vector(15 downto 0);
- signal mc_unique_id : std_logic_vector(63 downto 0);
- signal reset_via_gbe : std_logic := '0';
+ signal gsc_busy : std_logic;
+ signal my_address : std_logic_vector(15 downto 0);
+ signal mc_unique_id : std_logic_vector(63 downto 0);
+ signal reset_via_gbe : std_logic := '0';
signal med_dataready_out : std_logic_vector (11-1 downto 0);
signal med_data_out : std_logic_vector (11*c_DATA_WIDTH-1 downto 0);
signal med_ctrl_op : std_logic_vector (11*16-1 downto 0);
signal rdack, wrack : std_logic;
- signal trig_gen_out_i : std_logic_vector(3 downto 0);
- signal monitor_inputs_i : std_logic_vector(17 downto 0);
+ signal trig_gen_out_i : std_logic_vector(3 downto 0);
+ signal monitor_inputs_i : std_logic_vector(17 downto 0);
attribute syn_keep of GSR_N : signal is true;
attribute syn_preserve of GSR_N : signal is true;
signal tx_reset_state : std_logic_vector(3 downto 0);
signal debug_i : std_logic_vector(31 downto 0);
+ signal send_rst_i : std_logic;
+ signal send_rst_word_i : std_logic_vector(7 downto 0);
+ signal send_dlm_word_i : std_logic_vector(7 downto 0);
+
begin
---------------------------------------------------------------------------
-- Clock & Reset Handling
RX_DLM_OUT(1) => open,
RX_DLM_OUT(2) => open,
RX_DLM_OUT(3) => open,
- RX_DLM_WORD_OUT => open,
+-- RX_DLM_WORD_OUT => open,
+ RX_DLM_WORD_OUT(7 downto 0) => send_dlm_word_i,
+ RX_DLM_WORD_OUT(15 downto 8) => open,
+ RX_DLM_WORD_OUT(23 downto 16) => open,
+ RX_DLM_WORD_OUT(31 downto 24) => open,
TX_DLM_IN => rx_dlm_i,
- TX_DLM_WORD_IN => x"00",
- RX_RST_OUT => open,
- RX_RST_WORD_OUT => open,
- TX_RST_IN => '0',
- TX_RST_WORD_IN => x"00",
+ TX_DLM_WORD_IN => send_dlm_word_i, --x"00",
+ RX_RST_OUT => send_rst_i, --open,
+ RX_RST_WORD_OUT => send_rst_word_i, --open,
+ TX_RST_IN => send_rst_i, --'0',
+ TX_RST_WORD_IN => send_rst_word_i, --"00",
-- sync operation
WORD_SYNC_IN => word_sync_i,
WORD_SYNC_OUT => word_sync_i,
RX_DLM_OUT(3) => open,
RX_DLM_WORD_OUT => open,
TX_DLM_IN => rx_dlm_i,
- TX_DLM_WORD_IN => x"00",
+ TX_DLM_WORD_IN => send_dlm_word_i, --x"00",
RX_RST_OUT => open,
RX_RST_WORD_OUT => open,
- TX_RST_IN => '0',
- TX_RST_WORD_IN => x"00",
+ TX_RST_IN => send_rst_i, --'0',
+ TX_RST_WORD_IN => send_rst_word_i, --x"00",
-- sync operation
WORD_SYNC_IN => word_sync_i,
WORD_SYNC_OUT => open,
RX_DLM_OUT(1) => open,
RX_DLM_OUT(2) => open,
RX_DLM_OUT(3) => rx_dlm_i,
- RX_DLM_WORD_OUT => open,
+-- RX_DLM_WORD_OUT => open,
+ RX_DLM_WORD_OUT(7 downto 0) => open,
+ RX_DLM_WORD_OUT(15 downto 8) => open,
+ RX_DLM_WORD_OUT(23 downto 16) => open,
+ RX_DLM_WORD_OUT(31 downto 24) => send_dlm_word_i,
TX_DLM_IN => rx_dlm_i,
- TX_DLM_WORD_IN => x"00",
- RX_RST_OUT => open,
- RX_RST_WORD_OUT => open,
- TX_RST_IN => '0',
- TX_RST_WORD_IN => x"00",
+ TX_DLM_WORD_IN => send_dlm_word_i, --x"00",
+ RX_RST_OUT => send_rst_i, --open,
+ RX_RST_WORD_OUT => send_rst_word_i, --open,
+ TX_RST_IN => send_rst_i, --'0',
+ TX_RST_WORD_IN => send_rst_word_i, --x"00",
-- sync operation
WORD_SYNC_IN => word_sync_i,
WORD_SYNC_OUT => word_sync_i,
RX_DLM_OUT => open,
RX_DLM_WORD_OUT => open,
TX_DLM_IN => rx_dlm_i,
- TX_DLM_WORD_IN => x"00",
+ TX_DLM_WORD_IN => send_dlm_word_i, --x"00",
RX_RST_OUT => open,
RX_RST_WORD_OUT => open,
- TX_RST_IN => '0',
- TX_RST_WORD_IN => x"00",
+ TX_RST_IN => send_rst_i, --'0',
+ TX_RST_WORD_IN => send_rst_word_i, --x"00",
-- sync operation
WORD_SYNC_IN => word_sync_i,
WORD_SYNC_OUT => open,
RX_DLM_OUT => open,
RX_DLM_WORD_OUT => open,
TX_DLM_IN => rx_dlm_i,
- TX_DLM_WORD_IN => x"00",
+ TX_DLM_WORD_IN => send_dlm_word_i, --x"00",
RX_RST_OUT => open,
RX_RST_WORD_OUT => open,
- TX_RST_IN => '0',
- TX_RST_WORD_IN => x"00",
+ TX_RST_IN => send_rst_i, --'0',
+ TX_RST_WORD_IN => send_rst_word_i, --x"00",
-- sync operation
WORD_SYNC_IN => word_sync_i,
WORD_SYNC_OUT => open,
NUMBER_OF_GBE_LINKS => 4,
LINKS_ACTIVE => "0001",
- LINK_HAS_READOUT => "0001",
- LINK_HAS_SLOWCTRL => "0001",
- LINK_HAS_DHCP => "0001",
- LINK_HAS_ARP => "0001",
- LINK_HAS_PING => "0001"
- )
-
+ LINK_HAS_READOUT => "0001",
+ LINK_HAS_SLOWCTRL => "0001",
+ LINK_HAS_DHCP => "0001",
+ LINK_HAS_ARP => "0001",
+ LINK_HAS_PING => "0001"
+ )
port map(
- CLK_SYS_IN => clk_sys,
- CLK_125_IN => CLK_SUPPL_PCLK,
- RESET => reset_i,
- GSR_N => GSR_N,
+ CLK_SYS_IN => clk_sys,
+ CLK_125_IN => CLK_SUPPL_PCLK,
+ RESET => reset_i,
+ GSR_N => GSR_N,
- TRIGGER_IN => '0',
+ TRIGGER_IN => '0',
- SD_PRSNT_N_IN(0) => SFP_MOD0(0),
- SD_PRSNT_N_IN(3 downto 1)=> "111",
- SD_LOS_IN(0) => SFP_LOS(0),
- SD_LOS_IN(3 downto 1) => "111",
- SD_TXDIS_OUT(0) => SFP_TX_DIS(0),
-
- CTS_NUMBER_IN => cts_number,
- CTS_CODE_IN => cts_code,
- CTS_INFORMATION_IN => cts_information,
- CTS_READOUT_TYPE_IN => cts_readout_type,
- CTS_START_READOUT_IN => cts_start_readout,
- CTS_DATA_OUT => cts_data,
- CTS_DATAREADY_OUT => cts_dataready,
- CTS_READOUT_FINISHED_OUT => cts_readout_finished,
- CTS_READ_IN => cts_read,
- CTS_LENGTH_OUT => cts_length,
- CTS_ERROR_PATTERN_OUT => cts_status_bits,
+ SD_PRSNT_N_IN(0) => SFP_MOD0(0),
+ SD_PRSNT_N_IN(3 downto 1) => "111",
+ SD_LOS_IN(0) => SFP_LOS(0),
+ SD_LOS_IN(3 downto 1) => "111",
+ SD_TXDIS_OUT(0) => SFP_TX_DIS(0),
+
+ CTS_NUMBER_IN => cts_number,
+ CTS_CODE_IN => cts_code,
+ CTS_INFORMATION_IN => cts_information,
+ CTS_READOUT_TYPE_IN => cts_readout_type,
+ CTS_START_READOUT_IN => cts_start_readout,
+ CTS_DATA_OUT => cts_data,
+ CTS_DATAREADY_OUT => cts_dataready,
+ CTS_READOUT_FINISHED_OUT => cts_readout_finished,
+ CTS_READ_IN => cts_read,
+ CTS_LENGTH_OUT => cts_length,
+ CTS_ERROR_PATTERN_OUT => cts_status_bits,
+
+ FEE_DATA_IN => fee_data,
+ FEE_DATAREADY_IN => fee_dataready,
+ FEE_READ_OUT => fee_read,
+ FEE_STATUS_BITS_IN => fee_status_bits,
+ FEE_BUSY_IN => fee_busy,
+
+ MC_UNIQUE_ID_IN => mc_unique_id,
+ MY_TRBNET_ADDRESS_IN => my_address,
+ ISSUE_REBOOT_OUT => reboot_from_gbe,
- FEE_DATA_IN => fee_data,
- FEE_DATAREADY_IN => fee_dataready,
- FEE_READ_OUT => fee_read,
- FEE_STATUS_BITS_IN => fee_status_bits,
- FEE_BUSY_IN => fee_busy,
+ GSC_CLK_IN => clk_sys,
+ GSC_INIT_DATAREADY_OUT => gsc_init_dataready,
+ GSC_INIT_DATA_OUT => gsc_init_data,
+ GSC_INIT_PACKET_NUM_OUT => gsc_init_packet_num,
+ GSC_INIT_READ_IN => gsc_init_read,
+ GSC_REPLY_DATAREADY_IN => gsc_reply_dataready,
+ GSC_REPLY_DATA_IN => gsc_reply_data,
+ GSC_REPLY_PACKET_NUM_IN => gsc_reply_packet_num,
+ GSC_REPLY_READ_OUT => gsc_reply_read,
+ GSC_BUSY_IN => gsc_busy,
- MC_UNIQUE_ID_IN => mc_unique_id,
- MY_TRBNET_ADDRESS_IN => my_address,
- ISSUE_REBOOT_OUT => reboot_from_gbe,
-
- GSC_CLK_IN => clk_sys,
- GSC_INIT_DATAREADY_OUT => gsc_init_dataready,
- GSC_INIT_DATA_OUT => gsc_init_data,
- GSC_INIT_PACKET_NUM_OUT => gsc_init_packet_num,
- GSC_INIT_READ_IN => gsc_init_read,
- GSC_REPLY_DATAREADY_IN => gsc_reply_dataready,
- GSC_REPLY_DATA_IN => gsc_reply_data,
- GSC_REPLY_PACKET_NUM_IN => gsc_reply_packet_num,
- GSC_REPLY_READ_OUT => gsc_reply_read,
- GSC_BUSY_IN => gsc_busy,
-
- BUS_IP_RX => busgbeip_rx,
- BUS_IP_TX => busgbeip_tx,
- BUS_REG_RX => busgbereg_rx,
- BUS_REG_TX => busgbereg_tx,
+ BUS_IP_RX => busgbeip_rx,
+ BUS_IP_TX => busgbeip_tx,
+ BUS_REG_RX => busgbereg_rx,
+ BUS_REG_TX => busgbereg_tx,
- MAKE_RESET_OUT => reset_via_gbe,
+ MAKE_RESET_OUT => reset_via_gbe,
- DEBUG_OUT => open
- );
+ DEBUG_OUT => open
+ );
end generate;
---------------------------------------------------------------------------
gen_hub_with_gbe : if INCLUDE_GBE = c_YES generate
THE_HUB: entity work.trb_net16_hub_streaming_port_sctrl_record
generic map(
- HUB_USED_CHANNELS => (1,1,0,1),
- INIT_ADDRESS => INIT_ADDRESS,
- MII_NUMBER => INTERFACE_NUM,
- MII_IS_UPLINK => IS_UPLINK,
- MII_IS_DOWNLINK => IS_DOWNLINK,
- MII_IS_UPLINK_ONLY => IS_UPLINK_ONLY,
- USE_ONEWIRE => c_YES,
- HARDWARE_VERSION => HARDWARE_INFO,
- INCLUDED_FEATURES => INCLUDED_FEATURES,
- INIT_ENDPOINT_ID => x"0001",
- CLOCK_FREQUENCY => CLOCK_FREQUENCY,
- BROADCAST_SPECIAL_ADDR => BROADCAST_SPECIAL_ADDR
+ HUB_USED_CHANNELS => (1,1,0,1),
+ INIT_ADDRESS => INIT_ADDRESS,
+ MII_NUMBER => INTERFACE_NUM,
+ MII_IS_UPLINK => IS_UPLINK,
+ MII_IS_DOWNLINK => IS_DOWNLINK,
+ MII_IS_UPLINK_ONLY => IS_UPLINK_ONLY,
+ USE_ONEWIRE => c_YES,
+ HARDWARE_VERSION => HARDWARE_INFO,
+ INCLUDED_FEATURES => INCLUDED_FEATURES,
+ INIT_ENDPOINT_ID => x"0001",
+ CLOCK_FREQUENCY => CLOCK_FREQUENCY,
+ BROADCAST_SPECIAL_ADDR => BROADCAST_SPECIAL_ADDR
)
port map(
- CLK => clk_sys,
- RESET => reset_i,
- CLK_EN => '1',
-
+ CLK => clk_sys,
+ RESET => reset_i,
+ CLK_EN => '1',
--Media interfacces
- MEDIA_MED2INT => med2int(0 to INTERFACE_NUM-1),
- MEDIA_INT2MED => int2med(0 to INTERFACE_NUM-1),
-
+ MEDIA_MED2INT => med2int(0 to INTERFACE_NUM-1),
+ MEDIA_INT2MED => int2med(0 to INTERFACE_NUM-1),
--Event information coming from CTSCTS_READOUT_TYPE_OUT
- CTS_NUMBER_OUT => cts_number,
- CTS_CODE_OUT => cts_code,
- CTS_INFORMATION_OUT => cts_information,
- CTS_READOUT_TYPE_OUT => cts_readout_type,
- CTS_START_READOUT_OUT => cts_start_readout,
+ CTS_NUMBER_OUT => cts_number,
+ CTS_CODE_OUT => cts_code,
+ CTS_INFORMATION_OUT => cts_information,
+ CTS_READOUT_TYPE_OUT => cts_readout_type,
+ CTS_START_READOUT_OUT => cts_start_readout,
--Information sent to CTS
--status data, equipped with DHDR
- CTS_DATA_IN => cts_data,
- CTS_DATAREADY_IN => cts_dataready,
- CTS_READOUT_FINISHED_IN => cts_readout_finished,
- CTS_READ_OUT => cts_read,
- CTS_LENGTH_IN => cts_length,
- CTS_STATUS_BITS_IN => cts_status_bits,
+ CTS_DATA_IN => cts_data,
+ CTS_DATAREADY_IN => cts_dataready,
+ CTS_READOUT_FINISHED_IN => cts_readout_finished,
+ CTS_READ_OUT => cts_read,
+ CTS_LENGTH_IN => cts_length,
+ CTS_STATUS_BITS_IN => cts_status_bits,
-- Data from Frontends
- FEE_DATA_OUT => fee_data,
- FEE_DATAREADY_OUT => fee_dataready,
- FEE_READ_IN => fee_read,
- FEE_STATUS_BITS_OUT => fee_status_bits,
- FEE_BUSY_OUT => fee_busy,
- MY_ADDRESS_IN => my_address,
- COMMON_STAT_REGS => common_stat_reg, --open,
- COMMON_CTRL_REGS => common_ctrl_reg, --open,
- ONEWIRE => TEMPSENS,
- MY_ADDRESS_OUT => my_address,
- UNIQUE_ID_OUT => mc_unique_id,
- EXTERNAL_SEND_RESET => external_reset_i,
+ FEE_DATA_OUT => fee_data,
+ FEE_DATAREADY_OUT => fee_dataready,
+ FEE_READ_IN => fee_read,
+ FEE_STATUS_BITS_OUT => fee_status_bits,
+ FEE_BUSY_OUT => fee_busy,
+ MY_ADDRESS_IN => my_address,
+ COMMON_STAT_REGS => common_stat_reg, --open,
+ COMMON_CTRL_REGS => common_ctrl_reg, --open,
+ ONEWIRE => TEMPSENS,
+ MY_ADDRESS_OUT => my_address,
+ UNIQUE_ID_OUT => mc_unique_id,
+ EXTERNAL_SEND_RESET => external_reset_i,
- BUS_RX => ctrlbus_rx,
- BUS_TX => ctrlbus_tx,
- TIMER => timer,
+ BUS_RX => ctrlbus_rx,
+ BUS_TX => ctrlbus_tx,
+ TIMER => timer,
--Gbe Sctrl Input
- GSC_INIT_DATAREADY_IN => gsc_init_dataready,
- GSC_INIT_DATA_IN => gsc_init_data,
- GSC_INIT_PACKET_NUM_IN => gsc_init_packet_num,
- GSC_INIT_READ_OUT => gsc_init_read,
- GSC_REPLY_DATAREADY_OUT => gsc_reply_dataready,
- GSC_REPLY_DATA_OUT => gsc_reply_data,
- GSC_REPLY_PACKET_NUM_OUT => gsc_reply_packet_num,
- GSC_REPLY_READ_IN => gsc_reply_read,
- GSC_BUSY_OUT => gsc_busy,
+ GSC_INIT_DATAREADY_IN => gsc_init_dataready,
+ GSC_INIT_DATA_IN => gsc_init_data,
+ GSC_INIT_PACKET_NUM_IN => gsc_init_packet_num,
+ GSC_INIT_READ_OUT => gsc_init_read,
+ GSC_REPLY_DATAREADY_OUT => gsc_reply_dataready,
+ GSC_REPLY_DATA_OUT => gsc_reply_data,
+ GSC_REPLY_PACKET_NUM_OUT => gsc_reply_packet_num,
+ GSC_REPLY_READ_IN => gsc_reply_read,
+ GSC_BUSY_OUT => gsc_busy,
--status and control ports
- HUB_STAT_CHANNEL => open,
- HUB_STAT_GEN => open,
- MPLEX_CTRL => (others => '0'),
- MPLEX_STAT => open,
- STAT_REGS => open,
- STAT_CTRL_REGS => open,
+ HUB_STAT_CHANNEL => open,
+ HUB_STAT_GEN => open,
+ MPLEX_CTRL => (others => '0'),
+ MPLEX_STAT => open,
+ STAT_REGS => open,
+ STAT_CTRL_REGS => open,
--Fixed status and control ports
- STAT_DEBUG => open,
- CTRL_DEBUG => (others => '0')
+ STAT_DEBUG => open,
+ CTRL_DEBUG => (others => '0')
);
external_reset_i <= reset_via_gbe; -- or med2int(INTERFACE_NUM-1).stat_op(15);
end generate;
gen_hub_no_gbe : if INCLUDE_GBE = c_NO generate
THE_HUB : trb_net16_hub_base
generic map(
- HUB_USED_CHANNELS => (1,1,0,1),
- INIT_ADDRESS => INIT_ADDRESS,
- MII_NUMBER => INTERFACE_NUM,
- MII_IS_UPLINK => IS_UPLINK,
- MII_IS_DOWNLINK => IS_DOWNLINK,
- MII_IS_UPLINK_ONLY => IS_UPLINK_ONLY,
- USE_ONEWIRE => c_YES,
- HARDWARE_VERSION => HARDWARE_INFO,
- INCLUDED_FEATURES => INCLUDED_FEATURES,
- INIT_ENDPOINT_ID => x"0001",
- CLOCK_FREQUENCY => CLOCK_FREQUENCY,
+ HUB_USED_CHANNELS => (1,1,0,1),
+ INIT_ADDRESS => INIT_ADDRESS,
+ MII_NUMBER => INTERFACE_NUM,
+ MII_IS_UPLINK => IS_UPLINK,
+ MII_IS_DOWNLINK => IS_DOWNLINK,
+ MII_IS_UPLINK_ONLY => IS_UPLINK_ONLY,
+ USE_ONEWIRE => c_YES,
+ HARDWARE_VERSION => HARDWARE_INFO,
+ INCLUDED_FEATURES => INCLUDED_FEATURES,
+ INIT_ENDPOINT_ID => x"0001",
+ CLOCK_FREQUENCY => CLOCK_FREQUENCY,
BROADCAST_SPECIAL_ADDR => BROADCAST_SPECIAL_ADDR,
- COMPILE_TIME => std_logic_vector(to_unsigned(VERSION_NUMBER_TIME,32))
+ COMPILE_TIME => std_logic_vector(to_unsigned(VERSION_NUMBER_TIME,32))
)
port map (
CLK => clk_sys,
not med2int(7).stat_op(9);
LED_SFP_RED(1) <= not (med2int(9).stat_op(10) or med2int(9).stat_op(11) or not med2int(9).stat_op(9)) when INCLUDE_GBE = c_NO else
not (med2int(7).stat_op(10) or med2int(7).stat_op(11) or not med2int(7).stat_op(9));
-
- LED_WHITE(0) <= not med2int(10).stat_op(9) when INCLUDE_GBE = c_NO and USE_BACKPLANE = c_YES else
- not med2int(8).stat_op(9) when INCLUDE_GBE = c_YES and USE_BACKPLANE = c_YES else
- '1';
- LED_WHITE(1) <= not (med2int(10).stat_op(10) or med2int(10).stat_op(11) or not med2int(10).stat_op(9)) when INCLUDE_GBE = c_NO and USE_BACKPLANE = c_YES else
- not (med2int(8).stat_op(10) or med2int(8).stat_op(11) or not med2int(8).stat_op(9)) when INCLUDE_GBE = c_YES and USE_BACKPLANE = c_YES else
- '1';
+
+ LED_WHITE(0) <= not send_rst_word_i(0);
+ LED_WHITE(1) <= not send_rst_word_i(1);
+
+-- LED_WHITE(0) <= not med2int(10).stat_op(9) when INCLUDE_GBE = c_NO and USE_BACKPLANE = c_YES else
+-- not med2int(8).stat_op(9) when INCLUDE_GBE = c_YES and USE_BACKPLANE = c_YES else
+-- '1';
+-- LED_WHITE(1) <= not (med2int(10).stat_op(10) or med2int(10).stat_op(11) or not med2int(10).stat_op(9)) when INCLUDE_GBE = c_NO and USE_BACKPLANE = c_YES else
+-- not (med2int(8).stat_op(10) or med2int(8).stat_op(11) or not med2int(8).stat_op(9)) when INCLUDE_GBE = c_YES and USE_BACKPLANE = c_YES else
+-- '1';
end architecture;