signal readout_rx : READOUT_RX;\r
signal readout_tx : readout_tx_array_t(0 to 0);\r
\r
- signal ctrlbus_tx, bustdc_tx, bussci_tx, bustools_tx, bustc_tx, busthresh_tx, bus_master_in, busmimosis_tx, busi2c_tx : CTRLBUS_TX;\r
- signal ctrlbus_rx, bustdc_rx, bussci_rx, bustools_rx, bustc_rx, busthresh_rx, bus_master_out, busmimosis_rx, busi2c_rx : CTRLBUS_RX;\r
+ signal ctrlbus_tx, bustdc_tx, bussci_tx, bustools_tx, bustc_tx, busthresh_tx, bus_master_in, busmimosis_tx, busi2c_tx, busgbeip_tx, busgbereg_tx, busfwd_tx : CTRLBUS_TX;\r
+ signal ctrlbus_rx, bustdc_rx, bussci_rx, bustools_rx, bustc_rx, busthresh_rx, bus_master_out, busmimosis_rx, busi2c_rx, busgbeip_rx, busgbereg_rx, busfwd_rx : CTRLBUS_RX;\r
\r
signal common_stat_reg : std_logic_vector(std_COMSTATREG*32-1 downto 0) := (others => '0');\r
signal common_ctrl_reg : std_logic_vector(std_COMCTRLREG*32-1 downto 0);\r
signal out_data : std_logic_vector(15 downto 0);\r
signal out_i : std_logic_vector( 7 downto 0);\r
signal inp_i : std_logic_vector( 7 downto 0);\r
- signal dummy : std_logic_vector( 1 downto 0);\r
\r
\r
signal i2c_reg_0, i2c_reg_1 : std_logic_vector(31 downto 0);\r
signal mimosis_scl_drv, mimosis_sda_drv : std_logic;\r
signal i2c_go_100, i2c_go : std_logic;\r
signal i2c_reg_5_40 : std_logic_vector(31 downto 0);\r
+\r
+ --signal fwd_dst_mac : std_logic_vector(47 downto 0);\r
+ --signal fwd_dst_ip : std_logic_vector(31 downto 0);\r
+ --signal fwd_dst_port : std_logic_vector(15 downto 0);\r
+ --signal fwd_data : std_logic_vector(7 downto 0);\r
+ --signal fwd_datavalid : std_logic;\r
+ --signal fwd_sop : std_logic;\r
+ --signal fwd_eop : std_logic;\r
+ --signal fwd_ready : std_logic;\r
+ --signal fwd_full : std_logic; \r
+ --signal fwd_length : std_logic_vector(15 downto 0);\r
+ --signal fwd_do_send : std_logic; \r
\r
begin\r
\r
THE_ENDPOINT : entity work.trb_net16_endpoint_hades_full_handler_record\r
generic map (\r
ADDRESS_MASK => x"FFFF",\r
- BROADCAST_BITMASK => x"FF",\r
+ BROADCAST_BITMASK => BROADCAST_BITMASK,\r
REGIO_INIT_ENDPOINT_ID => x"0001",\r
REGIO_USE_1WIRE_INTERFACE => c_I2C,\r
TIMING_TRIGGER_RAW => c_YES,\r
DATA_BUFFER_FULL_THRESH => 2**EVENT_BUFFER_SIZE-EVENT_MAX_SIZE,\r
TRG_RELEASE_AFTER_DATA => c_YES,\r
HEADER_BUFFER_DEPTH => 9,\r
- HEADER_BUFFER_FULL_THRESH => 2**9-16\r
+ HEADER_BUFFER_FULL_THRESH => 2**9-16,\r
+ USE_GBE => USE_GBE\r
)\r
\r
port map(\r
-- Misc\r
- CLK => clk_sys,\r
- RESET => reset_i,\r
- CLK_EN => '1',\r
+ CLK => clk_sys,\r
+ RESET => reset_i,\r
+ CLK_125 => CLK_125,\r
+ CLEAR_N => GSR_N,\r
\r
-- Media direction port\r
MEDIA_MED2INT => med2int(0),\r
THE_BUS_HANDLER : entity work.trb_net16_regio_bus_handler_record\r
generic map(\r
PORT_NUMBER => 5,\r
- PORT_ADDRESSES => (0 => x"d000", 1 => x"b000", 2 => x"d300", 3 => x"a000", 4 => x"de00", others => x"0000"),\r
- PORT_ADDR_MASK => (0 => 12, 1 => 9, 2 => 1, 3 => 12, 4 => 5, others => 0),\r
+ PORT_ADDRESSES => (0 => x"d000", 1 => x"b000", 2 => x"d300", 3 => x"a000", 4 => x"de00", 5 => x"8100", 6 => x"8300", 7 => x"8400", others => x"0000"),\r
+ PORT_ADDR_MASK => (0 => 12, 1 => 9, 2 => 1, 3 => 12, 4 => 5, 5 => 8, 6 => 8, 7 => 8, others => 0),\r
PORT_MASK_ENABLE => 1\r
)\r
port map(\r
BUS_RX(2) => bustc_rx, --Clock switch\r
BUS_RX(3) => busmimosis_rx,\r
BUS_RX(4) => busi2c_rx,\r
+ --BUS_RX(5) => busgbeip_rx,\r
+ --BUS_RX(6) => busgbereg_rx, \r
+ --BUS_RX(7) => busfwd_rx,\r
BUS_TX(0) => bustools_tx,\r
BUS_TX(1) => bussci_tx,\r
BUS_TX(2) => bustc_tx,\r
BUS_TX(3) => busmimosis_tx,\r
BUS_TX(4) => busi2c_tx,\r
+ --BUS_TX(5) => busgbeip_tx,\r
+ --BUS_TX(6) => busgbereg_tx,\r
+ --BUS_TX(7) => busfwd_tx,\r
STAT_DEBUG => open\r
);\r
\r
TEST(14) <= flash_ncs_i;\r
FLASH_NCS <= flash_ncs_i; \r
\r
+ \r
+-----------------------------------------------------------------------------\r
+---- GbE\r
+-----------------------------------------------------------------------------\r
+ --GBE : entity work.gbe_wrapper\r
+ --generic map(\r
+ --DO_SIMULATION => 0,\r
+ --INCLUDE_DEBUG => 0,\r
+ --USE_INTERNAL_TRBNET_DUMMY => 0,\r
+ --USE_EXTERNAL_TRBNET_DUMMY => 0,\r
+ --RX_PATH_ENABLE => 1,\r
+ --FIXED_SIZE_MODE => 1,\r
+ --INCREMENTAL_MODE => 1,\r
+ --FIXED_SIZE => 100,\r
+ --FIXED_DELAY_MODE => 1,\r
+ --UP_DOWN_MODE => 0,\r
+ --UP_DOWN_LIMIT => 100,\r
+ --FIXED_DELAY => 100,\r
+\r
+ --NUMBER_OF_GBE_LINKS => 1,\r
+ --LINKS_ACTIVE => "0001",\r
+\r
+ --LINK_HAS_READOUT => "0000",\r
+ --LINK_HAS_SLOWCTRL => "0000",\r
+ --LINK_HAS_DHCP => "0001",\r
+ --LINK_HAS_ARP => "0001",\r
+ --LINK_HAS_PING => "0001",\r
+ --LINK_HAS_FWD => "0001"\r
+ --)\r
+ --port map(\r
+ --CLK_SYS_IN => clk_sys,\r
+ --CLK_125_IN => CLK_125,\r
+ --RESET => reset_i,\r
+ --GSR_N => GSR_N,\r
+ ---- Trigger\r
+ --TRIGGER_IN => '0', \r
+ ---- SFP\r
+ --SD_PRSNT_N_IN(0) => SFP_MOD_0,\r
+ --SD_LOS_IN(0) => SFP_LOS,\r
+ --SD_TXDIS_OUT(0) => SFP_TX_DIS,\r
+ ---- trigger channel\r
+ ---- only for LINK_HAS_READOUT\r
+ --CTS_NUMBER_IN => (others => '0'),\r
+ --CTS_CODE_IN => (others => '0'),\r
+ --CTS_INFORMATION_IN => (others => '0'),\r
+ --CTS_READOUT_TYPE_IN => (others => '0'),\r
+ --CTS_START_READOUT_IN => '0',\r
+ --CTS_DATA_OUT => open, \r
+ --CTS_DATAREADY_OUT => open, \r
+ --CTS_READOUT_FINISHED_OUT => open,\r
+ --CTS_READ_IN => '1', \r
+ --CTS_LENGTH_OUT => open, \r
+ --CTS_ERROR_PATTERN_OUT => open,\r
+ ---- data channel \r
+ ---- only for LINK_HAS_READOUT\r
+ --FEE_DATA_IN => (others => '0'),\r
+ --FEE_DATAREADY_IN => '0',\r
+ --FEE_READ_OUT => open,\r
+ --FEE_STATUS_BITS_IN => (others => '0'),\r
+ --FEE_BUSY_IN => '0',\r
+ ---- unique adresses\r
+ --MC_UNIQUE_ID_IN => timer.uid,\r
+ --MY_TRBNET_ADDRESS_IN => timer.network_address,\r
+ --ISSUE_REBOOT_OUT => open, --BUG: needs to be connected\r
+ ---- slow control by GbE\r
+ --GSC_CLK_IN => open, \r
+ --GSC_INIT_DATAREADY_OUT => open, \r
+ --GSC_INIT_DATA_OUT => open, \r
+ --GSC_INIT_PACKET_NUM_OUT => open, \r
+ --GSC_INIT_READ_IN => '1', \r
+ --GSC_REPLY_DATAREADY_IN => '0', \r
+ --GSC_REPLY_DATA_IN => (others => '0'), \r
+ --GSC_REPLY_PACKET_NUM_IN => (others => '0'), \r
+ --GSC_REPLY_READ_OUT => open, \r
+ --GSC_BUSY_IN => '0',\r
+ ---- readout\r
+ --BUS_IP_RX => busgbeip_rx, -- registers inside GbE\r
+ --BUS_IP_TX => busgbeip_tx, -- registers inside GbE\r
+ --BUS_REG_RX => busgbereg_rx, -- registers inside GbE\r
+ --BUS_REG_TX => busgbereg_tx, -- registers inside GbE\r
+ ---- Forwarder\r
+ --FWD_DST_MAC_IN(47 downto 0) => fwd_dst_mac,\r
+ --FWD_DST_IP_IN(31 downto 0) => fwd_dst_ip,\r
+ --FWD_DST_UDP_IN(15 downto 0) => fwd_dst_port,\r
+ --FWD_DATA_IN(7 downto 0) => fwd_data,\r
+ --FWD_DATA_VALID_IN(0) => fwd_datavalid,\r
+ --FWD_SOP_IN(0) => fwd_sop,\r
+ --FWD_EOP_IN(0) => fwd_eop,\r
+ --FWD_READY_OUT(0) => fwd_ready,\r
+ --FWD_FULL_OUT(0) => fwd_full,\r
+ ---- reset\r
+ --MAKE_RESET_OUT => open, -- reset by GbE --BUG: needs to be connected\r
+ ---- debug and status\r
+ --STATUS_OUT => open,\r
+ --DEBUG_OUT => open\r
+ --);\r
+ \r
+\r
+\r
+-----------------------------------------------------------------------------\r
+---- Test registers\r
+----------------------------------------------------------------------------- \r
+--THE_REGS : process begin\r
+ --wait until rising_edge(clk_sys);\r
+ --busfwd_tx.ack <= '0';\r
+ --busfwd_tx.nack <= '0';\r
+ --busfwd_tx.unknown <= '0';\r
+ \r
+ --if busfwd_rx.write = '1' then\r
+ --busfwd_tx.ack <= '1';\r
+ --case busfwd_rx.addr(7 downto 0) is\r
+ --when x"00" => fwd_dst_ip <= busfwd_rx.data;\r
+ --when x"01" => fwd_dst_port <= busfwd_rx.data(15 downto 0);\r
+ --when x"02" => fwd_dst_mac(31 downto 0) <= busfwd_rx.data;\r
+ --when x"03" => fwd_dst_mac(47 downto 32) <= busfwd_rx.data(15 downto 0);\r
+ --when x"04" => fwd_length <= busfwd_rx.data(15 downto 0);\r
+ --when x"05" => fwd_do_send <= busfwd_rx.data(0);\r
+ --when others => busfwd_tx.ack <= '0'; busfwd_tx.unknown <= '1';\r
+ --end case;\r
+ --elsif busfwd_rx.read = '1' then\r
+ --busfwd_tx.ack <= '1';\r
+ --case busfwd_rx.addr(7 downto 0) is\r
+ --when x"00" => busfwd_tx.data <= fwd_dst_ip;\r
+ --when x"01" => busfwd_tx.data <= x"0000" & fwd_dst_port;\r
+ --when x"02" => busfwd_tx.data <= fwd_dst_mac(31 downto 0);\r
+ --when x"03" => busfwd_tx.data <= x"0000" & fwd_dst_mac(47 downto 32);\r
+ --when x"04" => busfwd_tx.data <= x"0000" & fwd_length;\r
+ --when x"05" => busfwd_tx.data <= x"0000000" & fwd_full & fwd_ready & "0" & fwd_do_send;\r
+ --when others => busfwd_tx.ack <= '0'; busfwd_tx.unknown <= '1';\r
+ --end case; \r
+ --end if;\r
+ --if reset_i = '1' then\r
+ --fwd_do_send <= '0';\r
+ --end if;\r
+--end process; \r
+ \r
+ \r
---------------------------------------------------------------------------\r
-- Output stage\r
--------------------------------------------------------------------------- \r
when 3 => out_data <= x"0000";\r
when 4 => out_data <= x"5555";\r
when 5 => out_data <= x"5555";\r
- when 6 => out_data <= x"5555";--dummy & dummy & dummy & dummy & dummy & dummy & dummy & dummy;\r
- when 7 => out_data <= x"5555";--dummy & dummy & dummy & dummy & dummy & dummy & dummy & dummy;\r
+ when 6 => out_data <= x"5555";\r
+ when 7 => out_data <= x"5555";\r
end case;\r
end process; \r
\r
H4(3 downto 0) <= out_i(7 downto 4);\r
\r
\r
- process begin\r
- wait until rising_edge(clk_160);\r
- if add_reg(31) = '0' then\r
- dummy <= "01";\r
- else\r
- dummy <= not dummy;\r
- end if;\r
- end process;\r
- \r
---------------------------------------------------------------------------\r
-- Input stage\r
---------------------------------------------------------------------------\r
-- readout_tx(0).data_write <= '0';\r
-- readout_tx(0).busy_release <= '1'; \r
\r
- \r
+SFP_ADDON_TX_DIS <= (others => '0'); \r
end architecture;\r
\r
\r