OpenCores

1G eth UDP / IP Stack

Issue List
arp_sync #11
Open pwb1118 opened this issue about 11 years ago
pwb1118 commented about 11 years ago

I have a few questions about synchronization between tx_clk and rx_clk:

  1. arp_req_req.lookup_req is launched by tx_clk in IPv4_tx.vhd, and it only keeps for one tx_clk cycle. arp_req_req.lookup_req is latched by rx_clk in arp_req.vhd, i'm not sure if this signal can be correctly latched since tx_clk and rx_clk are asynchronous.

  2. This is a part of arp_sync.vhd:
    case ip_entry_state is when IDLE => if arp_nwk_req.req = '1' then ip_entry_reg <= arp_nwk_req.ip; ip_entry_state <= HOLD1; else ip_entry_reg <= ip_entry_reg; ip_entry_state <= IDLE; end if;

    Similarly, arp_nwk_req is launched by rx_clk, and latched by tx_clk. when arp_nwk_req.req = '1', arp_nwk_req.ip may not be valid for rx_clk.

pwb1118 commented about 11 years ago

I think rx_sequential : process(tx_clk) in arp_sync.vhd begin if rising_edge(tx_clk) should be rx_sequential ? process(rx_clk) begin if rising_edge(rx_clk)

pjf was assigned about 11 years ago
pjf commented about 11 years ago

I am on vacation at the moment, will take a look at this in April.


Assignee
pjf
Labels
Bug