We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Showing results for 
Search instead for 
Did you mean: 
Registered: ‎09-25-2007

Problem with Marvell M88E1111 PHY on ML505



I'm trying to figure out if my marvell PHY is busted or if I'm doing something wrong.  I am able to transmit ethernet packets *from* my ML505 to the PC with no problems.  It works perfectly.  However, when I attempt to send _any_ type of packet whatsoever *to* the ML505 from my PC I see absolutely no data coming from the PHY.  Here is the debug data I have collected so far:


- Both PC and ML505 are set to fixed (i.e. no auto-negotiate) 100Mbps full-duplex mode.


- When I transmit the packets from my PC I have wireshark running on the appropriate interface to ensure that the packet is actually being sent from the PC and being sent to the board.


- When I transmit a packet from my PC to the ML505 the ethernet "RX" LED on the ML505 board blinks for each packet as expected.


- When I chipscope the marvell RX interface pins (i.e. phy_data_valid, phy_rx_data, phy_rx_er) I can see the phy_data_valid signal asserting high for exactly the same number of clock cycles as there are nibbles in the entire ethernet frame.  The phy_rx_er signal never asserts. However, the phy_rx_data bits are _always_ all zeros no matter what packet or data payload I send (this is the problem).  I know the phy_rx_clk is clocking because chipscope is being clocked by phy_rx_clk.


- If I alter the size of the packet that I am sending to the ML505 board I see the phy_data_valid signal assert for that different number of clock cycles for the new number of nibbles.


- I ensured that I am connected to the appropriate phy_rx_data bits [3:0] and not [7:4] (as the upper bits are only used for the gigabit data rate).


- I have a very small verilog always block in my design (which is clocked synchronous to the phy_rx_clk) that I used to output the 4-bit phy_rx_data value to the GPIO LEDs on the board if the phy_rx_data bits are _ever_ non-zero and to keep that value stuck on the LEDs so that I can see it.  I have never seen any of the LEDs light up following a reset - meaning the phy_rx_data bus never has anything on it but zeros.


- I have checked all of the jumpers on the board and according to the ML505 user manual I have properly configured the marvell PHY interface for 100M, full-duplex MII mode.


- I believe that my design constraints are correct...but even if they weren't and data was being clocked in somewhat out of phase (or whatever) I would expect that I would at least see _something_ other than all-zeros at some point in my debug efforts.  But I cannot get anything other than all-zeros on the phy_rx_data bus no matter what I try. :(


Does anyone have any ideas what I might be doing wrong? The only thing I can conlude at this point is that the marvell chip is partially broken.  It's just odd that I can transmit packets with no problems whatsoever but I can't receive....it's weird that one direction would be broken and the other direction working fine. I would more expect that either both or none would work - but it's certainly possible.


If anyone can help I would really appreciate it.



-- Jonathon
Tags (1)
0 Kudos