-------------------------------------------------
-- BUG: link_tx_ready(i) for master ports to be included
-- BUG: slave ports need also disable with link_tx_ready(i)
- SD_TXDIS_OUT(3) <= DESTROY_LINK_IN(3) when IS_MODE(3) = c_IS_MASTER else
- '1' when IS_MODE(3) = c_IS_UNUSED else
+ SD_TXDIS_OUT(3) <= DESTROY_LINK_IN(3) when IS_MODE(3) = c_IS_MASTER else
+ not link_rx_ready_i(3) when IS_MODE(3) = c_IS_SLAVE else
+ '1' when IS_MODE(3) = c_IS_UNUSED else
'0';
- SD_TXDIS_OUT(2) <= DESTROY_LINK_IN(2) when IS_MODE(2) = c_IS_MASTER else
- '1' when IS_MODE(2) = c_IS_UNUSED else
+ SD_TXDIS_OUT(2) <= DESTROY_LINK_IN(2) when IS_MODE(2) = c_IS_MASTER else
+ not link_rx_ready_i(2) when IS_MODE(2) = c_IS_SLAVE else
+ '1' when IS_MODE(2) = c_IS_UNUSED else
'0';
- SD_TXDIS_OUT(1) <= DESTROY_LINK_IN(1) when IS_MODE(1) = c_IS_MASTER else
- '1' when IS_MODE(1) = c_IS_UNUSED else
+ SD_TXDIS_OUT(1) <= DESTROY_LINK_IN(1) when IS_MODE(1) = c_IS_MASTER else
+ not link_rx_ready_i(1) when IS_MODE(1) = c_IS_SLAVE else
+ '1' when IS_MODE(1) = c_IS_UNUSED else
'0';
- SD_TXDIS_OUT(0) <= DESTROY_LINK_IN(0) when IS_MODE(0) = c_IS_MASTER else
- '1' when IS_MODE(0) = c_IS_UNUSED else
+ SD_TXDIS_OUT(0) <= DESTROY_LINK_IN(0) when IS_MODE(0) = c_IS_MASTER else
+ not link_rx_ready_i(0) when IS_MODE(0) = c_IS_SLAVE else
+ '1' when IS_MODE(0) = c_IS_UNUSED else
'0';
-------------------------------------------------
-------------------------------------------------
THE_RX_RST_FSM: rx_rsl
port map(
- CLEAR => GLOBAL_RESET_IN,
+ CLEAR => '0', --GLOBAL_RESET_IN,
CLK_REF => CLK_REF,
PLL_LOL_IN => TX_PLL_LOL_IN,
CDR_LOL_IN => RX_CDR_LOL_IN,
CV_IN => RX_CV_IN,
LSM_IN => RX_LSM_IN,
LOS_IN => RX_LOS_IN,
+ SD_LOS_IN => SFP_LOS_IN,
WAP_ZERO_IN => is_wap_zero_i,
-- outputs
RX_SERDES_RST_OUT => rx_serdes_rst_i,
CV_IN : in std_logic;\r
LSM_IN : in std_logic;\r
LOS_IN : in std_logic;\r
+ SD_LOS_IN : in std_logic;\r
WAP_ZERO_IN : in std_logic;\r
-- outputs\r
RX_SERDES_RST_OUT : out std_logic;\r
CV_IN : in std_logic;\r
LSM_IN : in std_logic;\r
LOS_IN : in std_logic;\r
+ SD_LOS_IN : in std_logic;\r
WAP_ZERO_IN : in std_logic;\r
-- outputs\r
RX_SERDES_RST_OUT : out std_logic;\r
signal cv_s : std_logic;\r
signal lsm_s : std_logic;\r
signal los_s : std_logic;\r
+ signal sd_los_s : std_logic;\r
\r
signal cnt : unsigned(31 downto 0);\r
\r
cv_s <= '1';\r
lsm_s <= '0';\r
los_s <= '1';\r
+ sd_los_s <= '1';\r
\r
RX_SERDES_RST_OUT <= '1';\r
RX_PCS_RST_OUT <= '1';\r
cdr_lol_s <= CDR_LOL_IN;\r
cv_s <= CV_IN; \r
lsm_s <= LSM_IN; \r
- los_s <= LOS_IN; \r
+ los_s <= LOS_IN; \r
+ sd_los_s <= SD_LOS_IN;\r
\r
case rx_sm is\r
when POWERUP =>\r
RX_SERDES_RST_OUT <= '0'; -- needed for RX_LOS to be active\r
RX_PCS_RST_OUT <= '1';\r
LINK_RX_READY_OUT <= '0';\r
- if( (pll_lol_s = '1') or (los_s = '1') ) then\r
+ if( (pll_lol_s = '1') or (los_s = '1') or (sd_los_s = '1') ) then\r
cnt <= (others => '0');\r
else\r
if( cnt = Tplol ) then\r
\r
------------------------------------------------\r
-- if (pll_lol_s = '1') or (los_s = '1') then\r
- if( pll_lol_s = '1' ) then\r
+-- if( pll_lol_s = '1' ) then\r
+ if( (pll_lol_s = '1') or (sd_los_s = '1') ) then\r
rx_sm <= POWERUP; \r
cnt <= (others => '0');\r
end if;\r