06-14-2018 07:25 AM - edited 06-14-2018 07:28 AM
I have implemented two Ethernet links using 1G Tri Mode Ethernet MAC and 1G Ethernet PCS/PMA cores on a Kintex-7 FPGA. The board on which I have implemented the design has two SFP cages on one quad.
The links work fine when I connect them to an Ethernet switch via electrical SFP modules (and copper cables). However, when I use optical SFP modules, the links of the switch does not come up. When I connect a port of the switch to its another port using the same optical SFP modules, the switch links come up. So, the problem is not due to the switch configurations and the SFP modules.
Could you please help me to resolve this strange problem? As far as I know, the type of SFP transceiver must not be important!
06-14-2018 11:07 AM
To get link up, you will need same setting on both sides of the link for SGMII vs 1000BASE-X and AN enabled/Disabled. Copper SFP has a PHY inside the SFP. This copper PHY may have different setting for interface between SFP and FPGA then the Switch.
06-14-2018 12:22 PM
Could you please explain more? What and where are the settings you mentioned?
Actually, when I use optical SFP modules, the LED of the switch that indicates an active link is turned on every 3 seconds for a very short time and then is turned off.
06-14-2018 01:39 PM
SGMII vs 1000BASE-X is selectable in the GUI (or can generate for both with toggle to switch modes).
Auto-Negotiation is also selectable in the GUI, but if core is configured with AN it can be disable in configuration vector/register.
I would think Switch would most likely be setup for 1000BASE-X interface with AN enabled.
06-14-2018 02:17 PM
I have selected 1000BASE-X since I wanted to use optical SFP modules. However, it worked for copper SFPs! Do I need to select SGMII for optical modules?! What's the difference is between SGMII and 1000BASE-X?
Thanks again for your help
06-14-2018 03:51 PM - edited 06-14-2018 03:52 PM
I hadn't enabled auto negotiation of the PCS/PMA core since I thought it isn't necessary.
So I enabled it and consequently three new ports were added to the core (Again, the core is implemented only for 1000BASE-X). I connected "an_adv_config_vector" and "an_restart_config" signals to a constant value of zero and I left "an_interrupt" signal unconnected. However, the link doesn't come up yet.
06-25-2018 07:59 PM
In addition to generating the core with Auto-Negotiation selected if you are using the configuration vector, you will also want to set bit 4 of the configuration vector to '1' to enable AN and bit 5 of the Auto-Negotiation vector to enable full duplex.