10-29-2018 06:46 AM
I am using a Kintex-7 and I am having issues receiving node specific messages from the Xilinx Tri Mode Ethernet MAC (TEMAC) core. Broadcast messages work perfectly. This is only an issue on hardware; when I try simulating both broadcast and node specific message work properly.
The way my design works is by taking the Xilinx example design for the TEMAC core and adding some higher level logic to support ARP, ping (ICMP), and UDP messages. I am monitoring the rgmii data lines going into the TEMAC core as well as statistics and data signal coming out of the core. More specifically I am monitoring: "rgmii_rxc" "rgmii_rx_ctl", and "rgmii_rxd" going into the core and "rx_axis_mac_tuser", "rx_axis_mac_tvalid", "rx_axis_mac_tlast", "rx_axis_mac_tdata", "rx_statistics_vector", and "rx_statistics_valid" coming out of the core.
On hardware, when a broadcast message comes i see the statistics_vector incrementing and the statistics_valid signal pulse high at the end on the message. I also see the rx_axis_mac_tdata updating with the new message and the rx_axis_mac_tvalid and rx_axis_mac_tlast signals pulsing after the statistic_valid signal. However, went a targeted message comes in I only see the statics_vector incrementing and the statistics_valid signal pulsing high at the end of the incoming message. I don't see any activity on the data lines coming out of the TEMAC core.
I have looked at the UDP messages going to the FPGA via Wireshark and I can confirm that the MAC and IP addresses are correct, the checksums are correct, and the message matches perfectly with the data on the rgmii data lines (with the exception of the data being nibble swapped which is normal).
Because I was getting these types of results, I decided to manually force promiscuous mode to be enabled despite it being a default value according to the documentation on the Xilinx TEMAC core. I did this by editing the “temac_rgmii_mdio_axi_lite_sm.vhd” file from the Xilinx example design; I added a state to the “axi_state” signal and I use the “axi_wr_data” signal to write x"80000000" at “addr” “CONFIG_ADDR_CTRL_ADD”. Despite this effort I am still seeing the same results when I run my code on hardware where node specific messages are vanishing inside of the TEMAC core.
If anyone can help me out I would greatly appreciate it. Thanks in advanced!
10-31-2018 12:14 AM
Seems that you are implementing on board, do you have ILA captures.
Kindly share them both broadcast and targeted message.