AFE7903: Question about SERDES Page Registers

Part Number: AFE7903
Other Parts Discussed in Thread: AFE7900EVM, AFE7900

Tool/software:

Hi,

We have recently designed a board of our own using the AFE7903. We are currently trying to verify whether the SERDES lines are working properly. To do this, we decided to test them by enabling the SERDES loopback. While searching through the forum, I came across a similar thread on this topic and found the following register writes:

SPI_Write 0x0016 0x60  
SPI_Write 0x7007 0x80  
SPI_Write 0x7006 0x00  
SPI_Write 0x0016 0x00

I checked these registers in our Latte dump and modified them as shown above to enable SERDES loopback. First, I tested this sequence on the AFE7900EVM to ensure it was working, and the result was successful — we were able to observe the transmitted values on the receiving lanes using the ILA.

However, when attempting to perform the same procedure with a similar LatteGUI output on our board, I noticed that I could not write to register addresses 0x7007 and 0x7006. Every read from these registers returns 0, regardless of what I attempt to write. I am aware that page access is required for the PLL pages, but I have not seen anything similar for the SERDES page. Is there a difference between the address spaces of the AFE7900 and AFE7903? If not, what might be the cause of this issue?

We are programming the board via SPI using Vitis. SPI reads and writes are working correctly (verified with an oscilloscope). The board is programmed according to the LatteGUI output, and all read checks and polls complete successfully. We do see some alarms at the end of the configuration, but I am assuming they don't affect this issue.

We would greatly appreciate your clarification on this matter.

  • Hi Ekin,

    The correct procedure for reading registers in the SerDes pages is to read each one twice and only use the value read back the second time.

    For example see below.

    SPI_Write 0x0016 0x60  

    SPI_Read 0x7007 # Ignore this read

    SPI_Read 0x7007

    SPI_Read 0x7006 # Ignore this read 

    SPI_Read 0x7006

    SPI_Write 0x0016 0x00

    In regard to the issue with the serdes loopback possibly not working, in some cases I have seen that the register writes did not take affect till a re-sync happens. Can you try performing an adcDacSync(1) and see if that helps?

    Regards,

    David Chaparro