I ported the UDP/IP stack to a custom Virtex 6 board using an SFP 1000baseX GTX interface. The board would not respond to ARP requests. Via ChipScope, I saw that the ARP packets were being received, but the UDP/IP core's responses were not being transmitted. Further inspection showed that the V6EMAC was keeping tx_axis_mac_tready low, so the ARP module was never setting tx_axis_mac_tvalid high.
Reading UG800 for version 2.2 of the V6EMAC shows that the MAC was behaving as expected (figure 6-8)... tx_axis_mac_tready should go high in response to tx_axis_mac_tvalid going high, and not the other way around. I implemented the UDP/IP example on an ML605 for comparison, which worked. It appears that when using a GMII interface (ML605) instead of a GTX interface (my custom board) the V6EMAC core happens to holds tx_axis_mac_tready high in advance, so this bug doesn't show up in the ML605 example.
I can send you modified code that works (arp_tx.vhd and ipv4_tx.vhd needed corrections).
Thanks for contributing a valuable project!
-Greg
Hi Greg,
thanks for your post and comments. If you could email me your modifications that would be great. I will then review these and update the stack on OpenCores.
Regards, Peter
Hi Peter. You have done an excellent job. I also faced the same problem as Greg. I think the corrections have not been reflected in the updated files.
Hi Paritosh,
Thanks for your comments. I don't think that I ever received the mods from Greg.
If you are able to supply changes that you have made sucessfully, could you send them to me and I will check and update the project (will be some delay as I have relocated to Australia and my stuff incl FPGA hw is still being shipped).
Regards, Peter
Closing due to lack of feedback from originator after 2 years.