signal make_link_reset_real_i : std_logic := '0';
signal make_link_reset_sys_i : std_logic := '0';
signal send_link_reset_real_i : std_logic := '0';
+signal send_link_reset_sys_i : std_logic := '0';
signal reset_i, rst_n, rst_n_tx : std_logic;
signal media_med2int_i : MED2INT;
begin
-rst_n_tx <= not (CLEAR or sd_los_i or make_link_reset_real_i) when (IS_SYNC_SLAVE = 1 and IS_TX_RESET = 1)
- else not (CLEAR or make_link_reset_real_i);
+rst_n_tx <= not (CLEAR or sd_los_i or make_link_reset_real_i or RESET) when (IS_SYNC_SLAVE = 1 and IS_TX_RESET = 1)
+ else not (CLEAR or make_link_reset_real_i or RESET);
-rst_n <= not (CLEAR or sd_los_i or make_link_reset_real_i);
+rst_n <= not (CLEAR or sd_los_i or make_link_reset_real_i or RESET);
reset_i <= (RESET or sd_los_i or make_link_reset_real_i);
STAT_RESET(15 downto 10) <= (others => '0');
STAT_RESET(16) <= RX_CDR_LOL;
STAT_RESET(17) <= RX_LOS;
-STAT_RESET(18) <= '0'; --RX_PCS_RST;
-STAT_RESET(19) <= '0';
-STAT_RESET(31 downto 20) <= start_timer(start_timer'left downto start_timer'left - 11);
+STAT_RESET(18) <= QUAD_RST; --RX_PCS_RST;
+STAT_RESET(19) <= TX_PCS_RST;
+STAT_RESET(20) <= TX_LOL;
+STAT_RESET(21) <= rst_n;
+STAT_RESET(22) <= rst_n_tx;
+STAT_RESET(31 downto 23) <= start_timer(start_timer'left downto start_timer'left - 8);
gen_link_reset : if IS_SYNC_SLAVE = 1 generate
PULSE_B_OUT => make_link_reset_sys_i);
link_reset_send : signal_sync port map(RESET => '0',CLK0 => CLK_RXI,CLK1 => CLK_SYS,
D_IN(0) => send_link_reset_i,
- D_OUT(0) => send_link_reset_real_i);
+ D_OUT(0) => send_link_reset_sys_i);
end generate;
-make_link_reset_real_i <= make_link_reset_sys_i when IS_SYNC_SLAVE = 0 else
- make_link_reset_sys_i or sd_los_i when IS_SYNC_SLAVE = 1;
+make_link_reset_real_i <= make_link_reset_sys_i or sd_los_i when IS_SYNC_SLAVE = 1
+ else '0';
+send_link_reset_real_i <= send_link_reset_sys_i when IS_SYNC_SLAVE = 1
+ else '0';
sd_los_i <= SFP_LOS when rising_edge(CLK_SYS);
send_link_reset_i <= '1';
make_reset_i <= '0';
got_link_ready_i <= '0';
- if reset_cnt < x"1ff" then
+ if reset_cnt <= x"3ff" then
reset_cnt <= reset_cnt + 1;
-- else
-- make_reset_i <= '1';
end if;
- elsif reset_cnt >= x"1ff" or reset_cnt < x"40" then
+ elsif reset_cnt > x"3ff" then -- or reset_cnt < x"40"
send_link_reset_i <= '0';
make_reset_i <= '1';
rx_state <= SLEEP;
else
- if reset_cnt < x"1ff" then
+ if reset_cnt <= x"3ff" then
reset_cnt <= reset_cnt + 1;
end if;
send_link_reset_i <= '1';