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 4d2b9cb35470134beed6892c611ec36e1ee59e6b..0b1cf79bcdf78a9c2d1a00407bad000069b48014 100644 --- a/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd +++ b/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd @@ -78,9 +78,9 @@ ARCHITECTURE rtl of nw_arp_request IS SIGNAL pps_cnt : NATURAL := 0; SIGNAL trigger : BOOLEAN := FALSE; - SIGNAL dp_field_blk_snk_in : t_dp_sosi := c_dp_sosi_rst; - SIGNAL dp_field_blk_snk_out : t_dp_siso := c_dp_siso_rdy; - + SIGNAL dp_field_blk_snk_in : t_dp_sosi := c_dp_sosi_rst; + SIGNAL nxt_dp_field_blk_snk_in : t_dp_sosi := c_dp_sosi_rst; + SIGNAL dp_field_blk_snk_out : t_dp_siso := c_dp_siso_rdy; BEGIN @@ -88,13 +88,13 @@ BEGIN BEGIN -- Set defaults loop_field_wires: FOR i IN c_hdr_field_arr'RANGE LOOP - dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, i) DOWNTO field_lo(c_hdr_field_arr, i)) <= c_hdr_field_arr(i).default(c_hdr_field_arr(i).size-1 DOWNTO 0); + nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, i) DOWNTO field_lo(c_hdr_field_arr, i)) <= c_hdr_field_arr(i).default(c_hdr_field_arr(i).size-1 DOWNTO 0); END LOOP; -- Overwrite fields comming from inputs - dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "eth_src_mac") DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= arp_sha; - dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_sha") DOWNTO field_lo(c_hdr_field_arr, "arp_sha")) <= arp_sha; - dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_spa") DOWNTO field_lo(c_hdr_field_arr, "arp_spa")) <= arp_spa; - dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_tpa") DOWNTO field_lo(c_hdr_field_arr, "arp_tpa")) <= arp_tpa; + nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "eth_src_mac") DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= arp_sha; + nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_sha") DOWNTO field_lo(c_hdr_field_arr, "arp_sha")) <= arp_sha; + nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_spa") DOWNTO field_lo(c_hdr_field_arr, "arp_spa")) <= arp_spa; + nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_tpa") DOWNTO field_lo(c_hdr_field_arr, "arp_tpa")) <= arp_tpa; END PROCESS; -- pps counter process setting sop, eop and valid @@ -104,17 +104,14 @@ BEGIN trigger <= FALSE; pps_cnt <= 0; dp_field_blk_snk_in <= c_dp_sosi_rst; - ELSIF RISING_EDGE(dp_clk) 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 trigger <= FALSE; dp_field_blk_snk_in.sop <= '1'; dp_field_blk_snk_in.eop <= '1'; dp_field_blk_snk_in.valid <= '1'; - ELSE - dp_field_blk_snk_in.sop <= '0'; - dp_field_blk_snk_in.eop <= '0'; - dp_field_blk_snk_in.valid <= '0'; END IF; IF dp_pps = '1' THEN @@ -125,6 +122,7 @@ BEGIN trigger <= TRUE; END IF; END IF; + END IF; END PROCESS;