I've been battling with the DM648 + Marvell 88E1111 PHY, as used on the Lyretech EVM, on our own board. I can't get reliable comms over the Ethernet port. Sometimes it will ping for 15 minutes (using an auto-ping program) then stop responding, sometimes coming back again after a few minutes. Using the TI supplied speed test package usually results in an instantaneous crash. Occasionally it will stagger along at a few tens of kb/s, compared the the EVM which runs at 80Mb/s or so with exactly the same software running in the DM648.
I've been all round the PHY cleaning up power supplies, even driving an external precision signal generator into the 25MHz clock input instead of the crystal. Nothing has made any difference to the Ethernet comms reliability. The system always crashes within seconds of starting the speed test program, usually before even indicating a speed result. The signals out to the RJ45 are short, differential, controlled impedance. The board always achieves a 1Gb/s link to a laptop which would seem to indicate that the RJ45 side of things is ok. The MDI is also ok since we can get status and ID back from the PHY. The problem seems to be when data is sent to the TCP/IP stack over the SGMII.
The SGMII connections to the DM648 are about 30mm, differential, controlled impedance. This is much shorter than on the Lyretech EVM which runs the SGMII across half the board, via SMA connectors and then into the PHY. We've disabled the unused SGMII1 as we 're only using one PHY on SGMII0.
The only area I've not been able to change is the SGMII since it's buried in an internal layer. There is a register in the PHY to set the loading impedance on the SGMII but the TI driver doesn't give access to this register.
Meantime I've had to abandon the Ethernet port and use the UART to connect the DM648 to the rest of the system, which is not ideal but seems to work, having changed the main clock crystal to generate an accurate baud rate.
Any ideas most welcome!
Bill