I have implemented two TSE with SGMII PCS On a cyclone V FPGA. each SGMII is connected to a PHY (MARVEL 88E1512). And the PHY's are connected to each other through RJ45 cable.
I have a good link up and auto neg completed at all copper and SGMII Interfaces.
I am sending packets through the Avolon-st interface , using a very simple packet generator I have implemented for testing. currently haven't implemented anything on the receiving side.
It seems like all the packets are transmitted o.k from the TSE, and received on the other TSE. However the receiving MAC , counts all received packets as errored.
The transmit packets counter(address 0x1A and 0x28) and receive errored packets counter (address 0x22) match exactly. there is no packet loss.
My main problem is that except for the ifInErrors counter that is advancing, all the other error counters (aFrameCheckSequenceErrors,aAlignmentErrors,etherStatsJabbers,etherStatsFragments) remain 0.
The FrameReceivedOK Counter is also 0.
So I am wondering how to get any clue for the source of the errors.
I should also mention, that I am working without FIFO (internal or external) and I am transmitting unicast packets. The external FIFO status interface is implemented like :
rx_afull_channel <= (others => '0');
rx_afull_data <= (others => '0');
rx_afull_clk <= ck100Mhz;
rx_afull_valid <= '1';
Any help will be very appreciated.
Thanks in advance
It seems like I had an error building the frame resulting in payload length error.
That error is not indicated in the statistics counter so I found it after implementing monitor on the data_rx_error output from the mac.
Good to know. Yup, monitoring data_rx_erroris good idea to identify error type.
So, does it mean you issue is resolved now ?
Also, I found below TSE debug checklist guide that you can keep as reference as well.