Other Parts Discussed in Thread: DRA752
On our board, the RGMII0 interface is running with no errors on the receive side but there are errors on the transmit (this interface is on the 1.8V rail because the partner, FPGA, has only 1.8V capability).
AM572x RGMII timing is dependent on the CPU initialization. The datasheets states that a minimum setup and hold time is guaranteed as in the table below so I expect to see at least 1ns setup and 1 ns hold from clock edges. And this is what the FPGA needs to properly operate.
The PCB has matched the length of the TxD[0-3] with the TxC so there is no delay inserted by the PCB. The matching of lengths is as recommended by TI to be less than 50ps.The RGMII lines are 80mm long, 50 Ohms traces. The series resistors are 22 ohms on all lines and the edges are not great (1.6ns rising and 1.7ns falling edge).
With the scope I measured the relationship between TxD[0-3] and TxC and they transition at the same time (there is no setup and no hold time and this is not fine with the FPGA)
The function to initialize the timing is below and is probably a copy of the SDK. David can give you details on this. He also built uBoot built with 2 variants. One that uses the DRA752_ES1_1 and one that uses DRA752_ES2_0. Surprisingly there was no change in delay measurement between those builds selecting two different delays.
Using mem I also checked the transmit registers:
BIST:~# mem -d -s 0x4844a740 -u
0x4844a740:0x00000402
BIST:~# mem -d -s 0x4844a74c -u
0x4844a74c:0x00000402
BIST:~# mem -d -s 0x4844a758 -u
0x4844a758:0x00000404
BIST:~# mem -d -s 0x4844a764 -u
0x4844a764:0x00000401
BIST:~# mem -d -s 0x4844a770 -u
0x4844a770:0x00000400
BIST:~# mem -d -s 0x4844a77c -u
0x4844a77c:0x00000404
The RGMII0 pads configuration is
BIST:~# mem -d -s 0x4a003650 -u
0x4a003650:0x00010000
BIST:~# mem -d -s 0x4a003654 -u
0x4a003654:0x00010000
BIST:~# mem -d -s 0x4a003658 -u
0x4a003658:0x00010000
BIST:~# mem -d -s 0x4a00365C -u
0x4a00365c:0x00010000
BIST:~# mem -d -s 0x4a003660 -u
0x4a003660:0x00010000
BIST:~# mem -d -s 0x4a003664 -u
0x4a003664:0x00010000
It’s a bit strange, but bit RGMII_..._MODESELECT is “0” when I would expect it to be “1” in all pad registers.