MY_IP_OUT : out std_logic_vector(31 downto 0);
MY_TRBNET_ADDRESS_IN : in std_logic_vector(15 downto 0);
ISSUE_REBOOT_OUT : out std_logic;
- -- connection to MAC
+ -- connection to MAC (link handling)
MAC_READY_CONF_IN : in std_logic;
MAC_RECONF_OUT : out std_logic;
MAC_AN_READY_IN : in std_logic;
- MAC_FIFOAVAIL_OUT : out std_logic;
- MAC_FIFOEOF_OUT : out std_logic;
- MAC_FIFOEMPTY_OUT : out std_logic;
- MAC_RX_FIFOFULL_OUT : out std_logic;
--- MAC_TX_DATA_OUT : out std_logic_vector(7 downto 0);
--- MAC_TX_READ_IN : in std_logic;
--- MAC_TX_DISCRFRM_IN : in std_logic;
--- MAC_TX_STAT_EN_IN : in std_logic;
--- MAC_TX_STATS_IN : in std_logic_vector(30 downto 0);
--- MAC_TX_DONE_IN : in std_logic;
--- MAC_RX_FIFO_ERR_IN : in std_logic;
--- MAC_RX_STATS_IN : in std_logic_vector(31 downto 0);
+ -- TSMAC RX stuff
MAC_RX_DATA_IN : in std_logic_vector(7 downto 0);
MAC_RX_WRITE_IN : in std_logic;
- MAC_RX_STAT_EN_IN : in std_logic;
MAC_RX_EOF_IN : in std_logic;
MAC_RX_ERROR_IN : in std_logic;
-- FIFO TX stuff
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 => '0', -- UNUSED
- MAC_RX_FIFO_FULL_OUT => MAC_RX_FIFOFULL_OUT,
- MAC_RX_STAT_EN_IN => MAC_RX_STAT_EN_IN,
- MAC_RX_STAT_VEC_IN => (others => '0'),
-- output signal to control logic
FR_Q_OUT => fr_q,
FR_RD_EN_IN => fr_rd_en,
RESET : in std_logic;
GSR_N : in std_logic;
-- we connect to FIFO interface directly
- -- FIFO interface RX
+ -- FIFO interface TX (send frames)
FIFO_DATA_OUT : out std_logic_vector(8 downto 0);
FIFO_FULL_IN : in std_logic;
FIFO_WR_OUT : out std_logic;
FRAME_ACK_OUT : out std_logic;
FRAME_AVAIL_OUT : out std_logic;
FRAME_START_OUT : out std_logic;
- -- FIFO interface TX
- FIFO_FULL_OUT : out std_logic;
- FIFO_WR_IN : in std_logic;
- FIFO_DATA_IN : in std_logic_vector(8 downto 0);
- FRAME_START_IN : in std_logic;
+ -- FIFO interface RX (receive frames)
+ MAC_RX_DATA_IN : in std_logic_vector(7 downto 0);
+ MAC_RX_WRITE_IN : in std_logic;
+ MAC_RX_EOF_IN : in std_logic;
+ MAC_RX_ERROR_IN : in std_logic;
--
PCS_AN_READY_IN : in std_logic;
LINK_ACTIVE_IN : in std_logic;
signal my_ip : std_logic_vector(127 downto 0);
signal debug : std_logic_vector(127 downto 0);
- signal frame_active : std_Logic;
- signal frame_written : std_logic;
- signal rx_fifo_wr : std_logic;
signal frame_requested : std_logic;
signal fifo_empty : std_logic;
signal fifo_data : std_logic_vector(8 downto 0);
begin
- -------------------------------------------------------------------------------------------------
- -- HACK: adopt the RX part for internal GbE hub
-
- -- FrameActice signal - used to inhibit acceptance of runt frames
- THE_FRAME_ACTIVE_PROC: process( CLK_125_IN )
- begin
- if( rising_edge(CLK_125_IN) ) then
- if ( RESET = '1' ) then
- frame_active <= '0';
- elsif( FRAME_START_IN = '1' ) then
- frame_active <= LINK_ACTIVE_IN;
- elsif( frame_written = '1' ) then
- frame_active <= '0';
- end if;
- end if;
- end process THE_FRAME_ACTIVE_PROC;
-
- -- one frame written to FIFO
- frame_written <= '1' when (FIFO_DATA_IN(8) = '1') and (FIFO_WR_IN = '1') and (frame_active = '1') else '0';
-
- rx_fifo_wr <= FIFO_WR_IN and frame_active;
-
-------------------------------------------------------------------------------------------------
-- HACK: replace the borken internal FIFO by a ring buffer
THE_FRAME_TX: entity rx_rb
MY_IP_OUT => my_ip(31 downto 0),
MY_TRBNET_ADDRESS_IN => MY_TRBNET_ADDRESS_IN,
ISSUE_REBOOT_OUT => issue_reboot,
- MAC_READY_CONF_IN => LINK_ACTIVE_IN, -- NEEDED
- MAC_RECONF_OUT => open, -- NEEDED
- MAC_AN_READY_IN => PCS_AN_READY_IN, -- NEEDED
- MAC_FIFOAVAIL_OUT => open, -- NEEDED
- MAC_FIFOEOF_OUT => open, -- NEEDED
- MAC_FIFOEMPTY_OUT => open, -- NEEDED
- MAC_RX_FIFOFULL_OUT => FIFO_FULL_OUT, -- NEEDED -- BUG: check level
--- MAC_TX_DATA_OUT => open, -- NEEDED
--- MAC_TX_READ_IN => '0', -- NEEDED
--- MAC_TX_DISCRFRM_IN => '0', -- NEEDED
--- MAC_TX_STAT_EN_IN => '0', -- NEEDED
--- MAC_TX_STATS_IN => (others => '0'), -- NEEDED
--- MAC_TX_DONE_IN => '0', -- NEEDED
--- MAC_RX_FIFO_ERR_IN => '0', -- NEEDED
--- MAC_RX_STATS_IN => (others => '0'), -- done
- MAC_RX_DATA_IN => FIFO_DATA_IN(7 downto 0), -- NEEDED
- MAC_RX_WRITE_IN => rx_fifo_wr, -- NEEDED
- MAC_RX_STAT_EN_IN => '0', -- NEEDED
- MAC_RX_EOF_IN => FIFO_DATA_IN(8), -- NEEDED
- MAC_RX_ERROR_IN => '0', -- NEEDED
+ MAC_READY_CONF_IN => LINK_ACTIVE_IN,
+ MAC_RECONF_OUT => open,
+ MAC_AN_READY_IN => PCS_AN_READY_IN,
+----
+ MAC_RX_DATA_IN => MAC_RX_DATA_IN, --FIFO_DATA_IN(7 downto 0),
+ MAC_RX_WRITE_IN => MAC_RX_WRITE_IN, --rx_fifo_wr,
+ MAC_RX_EOF_IN => MAC_RX_EOF_IN, --FIFO_DATA_IN(8),
+ MAC_RX_ERROR_IN => MAC_RX_ERROR_IN, --'0',
----
-- FIFO TX stuff
FT_TX_DATA_OUT => ft_tx_data,