[U-Boot] TSEC ethernet controller problems (crc errors/ corruption)
David Hawkins
dwh at ovro.caltech.edu
Tue Jun 9 23:46:39 CEST 2009
Hi all,
I modified the MPC8349E-MDS board and can create the
same problem we were experiencing on our boards;
CRC errors and data packets with received bytes
repeated within the receive packets.
So I am certain we have tracked the root cause of
the problem we were having with our boards.
The problem was related to the EC_GTX_CLK125MHZ
signal being sent from the PHY to the PowerPC
processor. The termination resistance on our board
was too large (33-Ohms). Reducing the termination
resistor value increased the signal swing, and
produced a better looking clock at the PowerPC
BGA pin; a 10-Ohm source resistor was required
in our case. Linux network stress tests now pass.
The modification to break the MDS board was simple;
I increased the CLK125MHz source termination to
50-Ohms (from its nominal 22-Ohms).
The MDS board had another error; there is a jumper
on the board for selecting the supply rail for
2.5V GETH (JS2 and JS3 on the MPC8349E-MDS-PB
schematic) as either 3.3V for GMII, or 2.5V for
RGMII. The jumper on our board was in the 2.5V
location, whereas it should be on 3.3V. Changing
this jumper made no real difference.
This testing revealed some interesting observations;
1) The Marvell 88E1111 PHY generates a 125MHz output
clock that is used as the PowerPC EC_GTX_CLK125MHZ
clock source on the MDS board.
The MDS board has to use the PHY output as the 125MHz
clock source to the PowerPC, as the PHY is clocked
using a 25MHz oscillator, so there is no alternative
source of 125MHz on the board.
However, the PHY 125MHz output has a *huge* amount
of duty cycle variation depending on whether the
PHY has negotiated as a *master* (clock looks good),
or as a *slave* (horrible looking clock).
When the PHY on the MDS board, or our board,
negotiates the 1Gbit link as a *slave*, observing
the 125MHz output clock with an oscilloscope
triggered on the rising edge of the clock, there
is about 1ns of variation in the timing of the
falling edge.
Yikes!!!
Has anyone else been disturbed by this???
I know its not just on our board, as I can see
it on the MDS board too.
2) The MPC8349EA hardware specification indicates
a 45% to 55% duty cycle requirement on the
EC_GTX_CLK125MHZ clock signal. The duty
cycle is measured at LVDD/2 = 1.65V for
GMII operating at LVDD = 3.3V.
With the PHY generating the 125MHz clock,
and the PHY operated at 2.5V, the duty
cycle specification is *not* met by the
MDS board - especially when the PHY has
negotiated slave mode and has a huge
amount of jitter on it.
This seems like a minor design error,
in that a 3.3V buffer could have been used
on the PHY output clock to ensure 3.3V levels
at the PowerPC.
Anyone out there care to comment how this has
been implemented on other boards?
Our board has a 3.3V 125MHz oscillator as the PHY source,
and clock source for other devices on the board. I need
to make some changes to our PCB, so I'll also route an
option for a 3.3V 125MHz clock to the PowerPC pin
(I'll put a 3.3V buffer on the board that can be
driven by the oscillator directly, or by the PHY
output).
I'd be interested in hearing anyone else's experience
with the 125MHz Gigabit PHY clock.
And for those finding this email in the archive,
I hope this helps you :)
Cheers,
Dave
More information about the U-Boot
mailing list