Post Go back to editing

LinkPort signal integrity issues at max speed on ADSP-SC835 with EV-SOMCRR-EZLITE and high speed cable

Category: Hardware
Product Number: ADSP-SC835

Hello,

I am working with the following hardware, where the cable connects LinkPort_0 (Tx) to LinkPort_1 (Rx) of SOMCRR

In EV-SOMCRR-EZLITE the switches S1 and S2 are set in Local_JTAG mode (Table 3-5 of the manual, S1: ON OFF ON OFF ON OFF S2: ON OFF ON OFF OFF OFF) to not interfer with LinkPort at all.

On the software side I work with CCES 3.0.2, I have only initialized a few GPIO for debug purposes (PA_10, PA_11, PA_12), SOM LEDs through soft switches and SOM USB-UART logs through UART0. Then I have written a very simple loopback code for testing LinkPort communication, setting:

  • max possible speed with adi_linkport_ConfigClock( linkPortTxHandle, 0 )
  • 8 bit DDR data transfer (ADI_LINKPORT_DDR_8BIT_TRANSFER_MODE)
  • Tx and Rx data buffers located in section(".L1.data") aligned to 64 bit addresses - also tested 32 bit alignment
  • Tx working in ENUM_DMA_CFG_PERIPH_INT ISR mode, Rx working in ENUM_DMA_CFG_XCNT_INT ISR mode
  • ADSP-SC835 internal PullDown resistors for all LinkPort_0 and LinkPort_1 data lines
    • *pREG_PADS0_PORTB_PDE |= 0b1111111110000000;
    • *pREG_PADS0_PORTC_PDE |= 0b1111111;

As I test different clock frequencies for Tx linkport with adi_linkport_ConfigClock( linkPortTxHandle, DIV ), signal starts to deteriorate as follows:

  • DIV = 3, Fclk = 20.8 MHz: communication working perfectly
  • DIV = 2, Fclk = 31.3 MHz: very eventually some data gets corrupted in bit number 3 (LinkPort_x D3)
  • DIV = 1, Fclk = 62.5 MHz: more frequent failures in bit number 3
  • DIV = 0, Fclk = 125.0 MHz: almost 100% of the data gets corrupted in bit number 3

This behaviour is the same whether I run a debug session with ICE-1000 from CCES, or code is loaded from SOM flash memory with ICE-1000 disconnected from SOM.

Is it possible that I am missing to configure something on the SOMCRR side that could be interfering with that specific data line? Shouldn't the system be able to operate without any data loss given we are using all the recomended hardware?

Thanks

Parents
  • Update:

    • we extended the tests to random numbers instead of specific bits tests (initially we were alternating 0b01010101 with 0b10101010 to verify easier the signals with a scope) and signal integrity looks much worse. For DIV = 2, Fclk = 31.3 MHz, data bit 3 arrives almost always corrupted, leaving us with a maximum operating frequency of DIV = 3, Fclk = 20.8 MHz
    • configuring the Drive Strength parameter to 2 for LinkPort0_D3 and LinkPort1_D3 lines, the signal corruption in data line 3 was solved, allowing us to operate at DIV = 2, Fclk = 31.3 MHz without any signal corruption apparently
    • for any higher frequency, almost all data lines get totally corrupted, even if we set Drive Strength parameter to 2 for all of them, meaning we can definitely not arrive to work at 62.5 MHz nor 125 MHz
    • we tested working with Core blocking transactions instead of DMA non-blocking ones, and the results are the same

    Any suggestion would be appreciated, thank you.

  • Hi,

    We are checking internally on this and will get back to you as soon as possible.

    Regards,
    Santhakumari.V

  • Hi Leopoldo,

    Our sincere apologies for the delay in response.

    After changing the softconfig file, we are able to achieve 62.5MHz clock with 8bit DDR mode(TEST_LINKPORT_DDR_8BIT_TRANSFER_MODE DIV = 1, Fclk = 62.5 MHz) and 125MHz in 8bit SDR mode.

    Due to trace length challenges in the eval board we are not able to meet 8bit DDR mode at full speed.

    Can you please run the attached code and let us know how you are getting on.

    Best Regards,
    Santhakumari.V

    LP_DMA_21835.zip

  • Hi Santhakumari,

    I applied in our project the exact same soft_config from your example, and I can't see any improvements, I keep getting errors in 62.5 MHz.

    I tested your example code attached in the previous message, and in our hardware the maximum speed it can work without errors is 20.83 MHz. If we set DIV to 2, to operate at 31.25 MHz, we get corrupted data. Results attached:

    My hardware is the one described in the first message:

    In EV-SOMCRR-EZLITE the switches S1 and S2 are set in Local_JTAG mode (Table 3-5 of the manual, S1: ON OFF ON OFF ON OFF S2: ON OFF ON OFF OFF OFF) to not interfer with LinkPort at all.

    I built your project in both Debug/Release configuration, getting the same results. I am running the project from CCES 3.0.2, loading a debug session with ICE-1000 using the preload binary provided in CCES:
    C:\analog\cces\3.0.2\Xtensa\SHARC-FX\ldr\ADSPSC835W-EV-SOM_preload_core1.dxe

    Could it be possible that the preload binary or something hardware-related is making us get different results than the ones you get?

    Thanks

  • Hi,

    We are able to achieve 62.5MHz clock with 8bit DDR. Here is our board revision details.

    ADSPSC835W-EV-SOM REV: A
    EV-SOMCRR-EZLITE REV: B

    Can you please check whether you are using the same type of boards

    Waiting for your reply.

    Best Regards,
    Santhakumari.V

  • Hi Santhakumari, our boards are:


    ADSPSC835W-EV-SOM REV A Z
    EV-SOMCRR-EZLITE REV F Z

    Basically same boards, different revision for the SOMCRR.

    Regards

Reply Children