This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83867IR: no link while using the KCU116 devboard

Part Number: DP83867IR

I am having trouble getting a link established.
The board I am using is the Xilinx KCU116 and the schematics are on pg 46 of the following:
https://www.xilinx.com/support/documentation/boards_and_kits/kcu116/ug1239-kcu116-eval-bd.pdf

The 'link-partner' in this case is a 5-port GigE Cisco switch (SLM2005)

My hardware setup is known good as I can get a link light by simply loading a xilinx pre-built fpga:
https://www.xilinx.com/member/forms/download/design-license.html?cid=8c4791a3-0d7d-458c-bc14-a83c19a2dbd8&filename=xtp460-kcu116-ipi-c-2018-3.pdf
The only problem is, I don't know what the fpga is doing in order to get a link established.  And I also don't have access to the PHY registers when this FPGA is loaded.

After I load my own FPGA I then set the PWR and RESET_N pins high and am able to read/write the PHY registers:
I set 0x00 to 0x1140 to enable auto-negatiation
I set 0xD3 to 0x4000 to enable the 625 MHz reference clock.
If I set 0x16 to 0xD008 the FPGA is able to receive (via SGMII) the generated packets.
I have made no attempt to transmit packets yet.

What am I not doing in order to get a link established?

REGISTER READ VALUE
0x0000 0x1140
0x0001 0x7949
0x0002 0x2000
0x0003 0xa231
0x0004 0x01e1
0x0005 0x0000
0x0006 0x0064
0x0007 0x2001
0x0008 0x0000
0x0009 0x1300
0x000a 0x0000
0x000f 0x3000
0x0010 0x5c48
0x0011 0xab02
0x0012 0x0000
0x0013 0x0544
0x0014 0x29c7
0x0015 0xffff
0x0016 0x0000
0x0017 0x0440
0x0018 0x6150
0x0019 0x4444
0x001a 0x0002
0x001e 0x0002
0x001f 0x0000
0x0025 0x0400
0x002d 0x0000
0x0031 0x10b0
0x0032 0x10d3
0x0033 0x0000
0x0037 0x0003
0x0043 0x07a0
0x0055 0x0000
0x006e 0x0883
0x006f 0x0150
0x0071 0x0000
0x0072 0x0000
0x0086 0x00d7
0x00d3 0x4000
0x00e9 0x9f22
0x00fe 0xe721
0x0134 0x1000
0x0135 0x0000
0x0136 0x0000
0x0137 0x0000
0x0138 0x0000
0x0139 0x0000
0x013a 0x0000
0x013b 0x0000
0x013c 0x0000
0x013d 0x0000
0x013e 0x0000
0x013f 0x0000
0x0140 0x0000
0x0141 0x0000
0x0142 0x0000
0x0143 0x0000
0x0144 0x0000
0x0145 0x0000
0x0147 0x0000
0x0148 0x0000
0x0149 0x0000
0x014a 0x0000
0x014b 0x0000
0x014c 0x0000
0x014d 0x0000
0x014e 0x0000
0x014f 0x0000
0x0150 0x0000
0x0151 0x0000
0x0152 0x0000
0x0153 0x0000
0x0154 0x0000
0x0155 0x0000
0x0156 0x0000
0x0157 0x0000
0x0158 0x0000
0x0159 0x0000
0x015a 0x0000
0x015b 0x0000
0x015c 0x0000
0x015d 0x0000
0x015e 0x0000
0x015f 0x0000
0x0161 0x000c
0x016f 0x0095
0x0170 0x0c0d
0x0172 0x0000
0x0180 0x0752
0x01a7 0x0000
  • Hi Beau,

    For your implementation, do you know what mode RX_CTRL is getting into?
    What you could also try adding is clearing bit[7] in register 0x31.
    Additionally, after you enable auto-negotiation you should do a soft restart of the PHY to ensure that the digital is cleared (it will not clear register settings or bootstraps). Set register 0x1F to the value 0x4000 to initiate the soft restart.
  • I can't tell the state of the RX_CTRL pin.  I don't believe that pin has any connection on the KCU116 board, which makes sense to me because I understand that RX_CTRL is for RGMII only.
    I cleared bit[7] of register 0x31.  I'm not sure the purpose of that bit as the spec shows it as 'reserved r/w'
    and then issued a soft restart by writing 0x4000 to 0x1f but still did not get a link established.

  • Hi Beau,

    After you clear the bit and issue a soft restart, did you try to connect and reconnect the cable?
    Could you try connecting to an Ethernet port where you have EEE for that port purposely disabled?

    Also, please set register 0x9 to 0x300 as well.
  • After setting register 0x31 to 0x1030 I did issue a soft restart and reconnect the cable.  I don't think my switch supports EEE (energy efficient ethernet) but I did try a second switch (Cisco SG112-24)
    I did set register 0x9 to 0x300 but saw no difference, again doing soft resets and reconnecting cable.

  • Hi Beau,

    Can you try connecting 100Mbps and 10Mbps speeds to see if the issue is for all modes please?
    Also, please try with Auto-MDIX enabled and disabled. Are you implementing mirror mode?
  • You asked about setting MDI/MDIX manually which got me looking at register 0x10 much more closely.
    After clearing the force_link_good bit, the link was immediately established!

    Thanks for the help!