Attention: For security reasons,please choose a user name *different* from your login name.
Also make sure to choose a secure password and change it regularly.

Main Menu

TEF0008 - FPGA to Mezzanine Card (FMC) - Rate select issue

Started by georgian.andrei, November 08, 2021, 09:24:57 AM

Previous topic - Next topic



I'm trying to use TEF0008-FMC in 1000BASE-SX mode using the Genesys 2 board from Digilent. As far as understand from TEF0008 MAX10 documentation, there are two signals for rate select (1000BASE-SX or 10GBASE-SR):
- Input Signal LA03_N sets all four SFP RX modes (LOW for 1000BASE-SX, HIGH for 10GBASE-SR)
- Input Signal LA04_P sets all four SFP TX modes (LOW for 1000BASE-SX, HIGH for 10GBASE-SR)

In my design I'm holding LA03_N and LA04_P LOW, but taking a look with an oscilloscope at "SFP+ Connector" pins SFPA_RS0 (Rx rate select) and SFPA_RS1 (Tx rate select) it appears that just SFPA_RS1 is LOW, and SFPA_RS0 is HIGH.
The design does not manage to establish a link trough the SFP connection, and I believe that it has something to do with LA03_N->SFPA_RS0 signal.
In TEF0008 MAX10 documentation there is a phrase that I don't understand:
   "SFP Control and I2C register writes of RX/TX modes are couppled with a logical or. If at least one of them indicates HIGH the 10GBASE-SR is activated."
What is " I2C register writes of RX/TX modes ". Do I need to perform some writes transaction on I2C at some specific address?
And there is available a design example? It will help me a lot to see if I'm doing something wrong or if my design is incomplete.

Best regards

Martin R.

As far as i see there are two problem in the documentation, at first it is not clear if LOW and HIGH is the state of the LA signals, or the  RS signals. The latter is the case, which can be seen from the port description table. The LA signals are inverted, so driving LA03_N and LA04_P high should result in the lower signalling rate. Following what is done in CPLD:

   RS0    <= "0000" when LA03_N = '1' else "1111";
   RS1    <= "0000" when LA04_P = '1' else "1111";

   A_RS0_o <= RS0(0);
   B_RS0_o <= RS0(1);
   C_RS0_o <= RS0(2);
   D_RS0_o <= RS0(3);
   A_RS1_o <= RS1(0);
   B_RS1_o <= RS1(1);
   C_RS1_o <= RS1(2);
   D_RS1_o <= RS1(3);

Furthermore weak pullup is on for  LA03_N and LA04_P.

The other sentence you mentioned is absolutely misleading or makes no sense at all.
We will improve the documentation!
From SFP standard: RS signals can optionally be used for rate selection.
There should be nothing else needed.
Sorry, we do not have a design example.