Hello,
we have developed a custom PCB based on the C6672 DSP. Both Ethernet channels are connected to an FPGA through SGMII. The SGMII signals are converted in the FPGA into GMII.
To validate the SGMII link between the DSP and the FPGA, we have modified the PA_simpleExample example code for our hardware. The test consists of using the LOOPBACK_EXTERNAL setting in the simpleExample code. The 'pktMatch' packet is then sent from the DSP over the SGMII link to the FPGA, where the data is looped back at the GMII side so the packet is sent back from the FPGA to the DSP over the SGMII link.
This seems to work, mostly. In the FPGA we can verify that the pktMatch packet is correctly received and sent back into the transceiver. However, on the DSP side bytes are missing when the packet is received again. The findPacket() function is returning the error '[C66xx_0] function findPacket: Byte 52 expected 0x3c, found 0x3f' or something similar, but always starting at byte 52. The received packet is generally 30 bytes shorter than the size of pktMatch. There's not a fixed pattern of which bytes are corrupted after offset 52, but the corruption always occurs after the 52nd byte.
The weird thing is that the same issue occurs when using LOOPBACK_INTERNAL, which should loop back the data before leaving the DSP on the SGMII. Using LOOPBACK_PA works correctly.
Any idea what could be causing the problem? Any help is greatly appreciated!
Best regards,
Oane