cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
tn45eng
Adventurer
Adventurer
7,839 Views
Registered: ‎01-28-2013

SGMII to ZynQ EMAC through EMIO

Jump to solution

Hello,

 

I'm testing out SGMII interface in a board with ZynQ 7045 and Marvel PHY. The idea is to connect the SGMII interface to EMAC through EMIO. "Ethernet 1000BASE-X PCS/PMA or SGMII" core is used as SGMII to GMII bridge. The SGMII signals are connected to device specific transceiver and SGMII is configured to be in MAC mode with autonegotiation. The shared logic is inside the core. 

 

Now, when I power up the board, the status_vector of the core is 0x0810

Link status - 0

Link synchronization - 0

RUDI(invalid) - 1

PHY link status - 0

Duplex - 0 (Half Duplex)

 

And when the Marvel PHY is switched to SGMII mode, the status_vector changes to 0x388b

Link status - 1 - OK

Link Synchronization - 1 - OK

RUDI(/I/) - 1 - OK

PHY link status - 1 - OK

Speed - 1000 Mbps - OK

Duplex Mode - 1 (Full duplex) - OK

Remote fault - 1 - NOT OK

Remote fault endoing - 00

 

What works?

PHY and SGMII core is configured to auto negotiate and Auto negotiation is successful(bits 0, 1, 3). PHY is able to communicate through SGMII to the SGMII core in ZynQ. The link partner status is getting reflected in the status_vector - like unplugging/ plugging the cable.

 

What doesn't work?

The remote fault bit is getting set and not able to transmit/ receive data. The remote fault encoding info is "00" which means the link is OK. So not sure why this bit is getting set?

 

Any suggestion/ pointers would help?

 

0 Kudos
1 Solution

Accepted Solutions
yenigal
Xilinx Employee
Xilinx Employee
13,281 Views
Registered: ‎02-06-2013

Hi

 

Are you disabling the isolate state at power on either using the configuration vector or MDIO?

Regards,

Satish

--------------------------------------------------​--------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful.
--------------------------------------------------​-------------------------------------------

View solution in original post

7 Replies
trenz-al
Scholar
Scholar
7,818 Views
Registered: ‎11-09-2013

what device is the link partner?

0 Kudos
tn45eng
Adventurer
Adventurer
7,810 Views
Registered: ‎01-28-2013

The copper link partner is a netgear based NIC in a PC. I tested the external loopback and it is fine.

 

The internal loopback doesn't work. I chipscope and see the data sent from gmii to the sgmii core. But it doesn't make it to the other end. Similarly I tried transmitting packet from PHY to the MAC through SGMII and I don't see any activity on the GMII RX lines.

 

The SGMII works because the control information is exchanged between PHY and the core during auto negotiation. So looks like I could be missing some setting? But I don't see any specific MDIO register setting in the SGMII core that I need to enable. 

 

 

0 Kudos
yenigal
Xilinx Employee
Xilinx Employee
7,801 Views
Registered: ‎02-06-2013

Hi

 

The Remote fault bit is a latching high status bit and you need to read the register 1 to clear it and show the current status.

 

Also the internal loopback using the configuration vector sends idles and doesn't loopback the original data being transmitter on the GMII TX interface.

Regards,

Satish

--------------------------------------------------​--------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful.
--------------------------------------------------​-------------------------------------------
0 Kudos
tn45eng
Adventurer
Adventurer
7,795 Views
Registered: ‎01-28-2013

Hi Satish,

 

OK, I read that in the pg047 but wasn't sure if that's the case. 

 

By internal loopback I meant internal loopback on the Marvel PHY. GMII TX -> SGMII TX -> PHY -> SGMII RX -> GMII RX

 

The real problem is I can't transmit/ receive. When I transmit I observe GMII TX but packet never gets to the link partner and when I transmit something from the link partner it nerver gets to the GMII RX. Ideally I would probe the signal lines but I cannot do it with SGMII.

 

Any pointers?

0 Kudos
yenigal
Xilinx Employee
Xilinx Employee
13,282 Views
Registered: ‎02-06-2013

Hi

 

Are you disabling the isolate state at power on either using the configuration vector or MDIO?

Regards,

Satish

--------------------------------------------------​--------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful.
--------------------------------------------------​-------------------------------------------

View solution in original post

tn45eng
Adventurer
Adventurer
7,779 Views
Registered: ‎01-28-2013

Yes isolate bit is driven low in the configuration_vector. and gmii_isolate stays low.

0 Kudos
tn45eng
Adventurer
Adventurer
7,767 Views
Registered: ‎01-28-2013

Hi Satish,

 

GMII isolate was the problem. Wasn't setting the configuration_valid properly. 

 

Thank you.

 

 

0 Kudos