diff --git a/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd b/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd index 143c0251e93b7fa37865920447d97d63739ac15d..1aeeb57d843fad84551b8e868d140a2b48a327aa 100644 --- a/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd +++ b/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd @@ -75,6 +75,9 @@ ARCHITECTURE rtl of nw_arp_request IS CONSTANT c_dp_field_blk_snk_data_w : NATURAL := field_slv_len(c_hdr_field_arr); CONSTANT c_dp_field_blk_src_data_w : NATURAL := c_data_w; + SIGNAL valid_sha : STD_LOGIC := '0'; + SIGNAL valid_spa : STD_LOGIC := '0'; + SIGNAL valid_tpa : STD_LOGIC := '0'; SIGNAL valid_arp : STD_LOGIC := '0'; SIGNAL pps_cnt : NATURAL := 0; SIGNAL trigger : BOOLEAN := FALSE; @@ -102,13 +105,19 @@ BEGIN p_dp_pps : PROCESS (dp_clk, dp_rst) BEGIN IF dp_rst = '1' THEN + valid_sha <= '0'; + valid_spa <= '0'; + valid_tpa <= '0'; valid_arp <= '0'; trigger <= FALSE; pps_cnt <= 0; dp_field_blk_snk_in <= c_dp_sosi_rst; ELSIF RISING_EDGE(dp_clk) THEN -- Use signal to indicate if ARP can be enabled. - valid_arp <= vector_or(arp_sha) AND vector_or(arp_spa) AND vector_or(arp_tpa); + valid_sha <= vector_or(arp_sha); + valid_spa <= vector_or(arp_spa); + valid_tpa <= vector_or(arp_tpa); + valid_arp <= valid_sha AND valid_spa AND valid_tpa; IF valid_arp = '1' THEN dp_field_blk_snk_in <= nxt_dp_field_blk_snk_in; IF trigger AND dp_field_blk_snk_out.ready = '1' AND dp_field_blk_snk_out.xon = '1' THEN