Hey everyone,
I am a beginner with the ethernet protocol and I am doing a Internship where I use the PHY KSZ9031RNX to communicate with a PC. I currently have a 100Mps full duplex communication (RGMII). This communication is done without auto-negotiation. When I try to switch to Gigabit the auto-negotiation process is never completed. I don't know what the problem is. To begin with, I am not entirely sure that I am configuring the registers well for the 1Giga. (sorry for asking maybe obvious questions, but I can't find the configuration of the registers anywhere).
As I understand it from the IEEE 802.3 standard (clauses 28 and 40), I am using this configuration:
############################# Registre 0h ################################
0.15: reset phy =0
0.14 Loopback = 0
0.13 Speed Select (LSB)= 0
0.12 Autonegotiation Enable = 1
0.11 Power down =0
0.10 Isolate = 0
0.9 Restart autonegotiation =1
0.8 Duplex Mode = 1
0.7 Reseverd =0
0.6 Speed Select (MSB) = 0
0.5:0 Reseverd = 00_0000
I put a 1000 speed and full duplex mode but I understand that if auto-negotiation is enabled, it has priority and the goal is to find a compatible speed and mode between the local and remote devices.
############################# Registre 4h ################################
4.15 Next page = 1
4.14 Reserved
4.13 Remote Fault= 1
4.12 Reserved
4.11:10 = 0.0 (No pause) -----> I use a MAC IP. The IP has no treatment for the pause mode. So I chose the option no pause
4.9 100BASE-T4 =0
4.8 100BASE-TX (full duplex) =1
4.7 1000BASE-TX (half duplex)=0 ------> The IP has no tretment for the half duplex mode
4.6 10BASE-T (full duplex)=1
4.5 10BASE-T (half duplex)=0
4.4:0 Selector Field = 00001 IEEE 802.3
Question 1: Is there a problem with auto-negotiation because I don't enable mode pause?
############################# Registre 7h ################################
7.15 Next Page = 1 (Additional next pages will follow)
7.14 Reserved
7.13 Message page = 1
7.12 Ack2=0
7.11 Toggle=0
7. 10:0 Message Field = 00000001000 -------> Clause 40 (40.5.1.2 1000BASE-T Auto-negotiation page use)
Question 2: I will use only the three pages provided for in clause 40 (page 0 -Message next page, page -1 Unformatted next page and page 2 (unformatted next page). Even if I put in the message field M10: M0 = 8, do I still need to add other following pages, that is, next page = 1 or would this option be valid only if I were to use extra pages in addition to the three necessary pages?
############################# Registre 9h ################################
9.15:13 Test mode = 000 (Nomal operation)
9.12 Master-Slave manual configuration = 0 (disable)
9.11 Master-Slave configuration value =0
9.10 Port type = 0
9.9 1000Base-T Full duplex = 1
9.8 1000Base-T Half duplex = 0
9.7:0 Reserverd
Question 3: When I disable the manual master-slave configuration option, should the seed value be developed by me or is PHY KSZ9031rnx responsible for doing this?
I have already centralized the FLP time to 16 ms to avoid link failures and still it was not possible to obtain a complete autonegotiation process. Can anyone see any errors I am making in this configuration? or any other ideas that I can try? I thank you immensely for your patience and attention.