SD_PRSNT_N_IN : in std_logic; -- SFP Present ('0' = SFP in place, '1' = no SFP mounted)
SD_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal)
SD_TXDIS_OUT : out std_logic := '0'; -- SFP disable
+
--Control Interface
BUS_RX : in CTRLBUS_RX;
BUS_TX : out CTRLBUS_TX;
signal stat_med : std_logic_vector(31 downto 0);
+signal mii_tx_i : CTRLBUS_TX;
+signal mii_rx_i : CTRLBUS_RX;
+
+signal loc_bus_rx : CTRLBUS_RX;
+signal loc_bus_tx : CTRLBUS_TX;
+
+
begin
clk_200_ref <= CLK_REF_FULL;
DEBUG_TX_CONTROL => debug_tx_control_i,
DEBUG_RX_CONTROL => debug_rx_control_i,
STAT_RESET => stat_fsm_reset_i,
- DEBUG_OUT => debug_med_sync_control_i
+ DEBUG_OUT => debug_med_sync_control_i,
+
+ BUS_RX => mii_rx_i,
+ BUS_TX => mii_tx_i
);
THE_SCI_READER : entity work.sci_reader
--Slowcontrol
BUS_RX => BUS_RX,
BUS_TX => BUS_TX,
-
- MEDIA_STATUS_REG_IN(31 downto 0) => stat_rx_control_i,
- MEDIA_STATUS_REG_IN(63 downto 32) => stat_tx_control_i,
- MEDIA_STATUS_REG_IN(95 downto 64) => stat_fsm_reset_i,
- MEDIA_STATUS_REG_IN(127 downto 96) => stat_med,
- MEDIA_STATUS_REG_IN(255 downto 128) => (others => '0'),
+
+ LOC_BUS_RX => loc_BUS_RX,
+ LOC_BUS_TX => loc_BUS_TX,
+
+ --MEDIA_STATUS_REG_IN(31 downto 0) => stat_rx_control_i,
+ --MEDIA_STATUS_REG_IN(63 downto 32) => stat_tx_control_i,
+ --MEDIA_STATUS_REG_IN(95 downto 64) => stat_fsm_reset_i,
+ --MEDIA_STATUS_REG_IN(127 downto 96) => stat_med,
+ --MEDIA_STATUS_REG_IN(255 downto 128) => (others => '0'),
DEBUG_OUT => open
);
+BUS_WRITER : process
+ begin
+ wait until rising_edge(SYSCLK);
+ loc_BUS_TX.unknown <= '0';
+ loc_BUS_TX.rack <= '0';
+ loc_BUS_TX.wack <= '0';
+ loc_BUS_TX.data <= x"00000000";
+ loc_BUS_TX.ack <= '0';
+
+ mii_rx_i.data <= loc_BUS_RX.data;
+ mii_rx_i.addr <= loc_BUS_RX.addr;
+ mii_rx_i.read <= '0';
+ mii_rx_i.write <= '0';
+
+ if loc_BUS_RX.addr(2) = '0' then
+ if loc_BUS_RX.read = '1' then
+ loc_BUS_TX.ack <= '1';
+ case loc_BUS_RX.addr(4 downto 0) is
+ when "00000" => loc_BUS_TX.data <= stat_rx_control_i(31 downto 0);
+ when "00001" => loc_BUS_TX.data <= stat_tx_control_i(31 downto 0);
+ when "00010" => loc_BUS_TX.data <= stat_fsm_reset_i(31 downto 0);
+ end case;
+ end if;
+ else
+ if mii_tx_i.ack = '1' then
+ loc_BUS_TX.data <= mii_tx_i.data;
+ loc_BUS_TX.ack <= '1';
+ loc_BUS_TX.unknown <= mii_tx_i.unknown;
+ end if;
+ mii_rx_i.read <= loc_BUS_RX.read;
+ mii_rx_i.write <= loc_BUS_RX.write;
+ end if;
+end process;
+
+
-- STAT_DEBUG(4 downto 0) <= debug_rx_control_i(4 downto 0);
-- STAT_DEBUG(6 downto 5) <= stat_fsm_reset_i(9 downto 8);
-- STAT_DEBUG(7) <= '0';