This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[SRIO] question about srioDevice_init() and few things to clarify

Hi,

I have an another question from srioDevice_init(). Of course, this function is defined by developer. But in the pdk, it is included in device_srio_loopback.c
(I don`t understand why pdk includes loopback configuration file. it is confused for me to configuration for board2board test) Anyway, in the code, there is serdes configuration during device_init():

srioDefSerdesSetup(hSrio,srioSerdesVAddr,srio_ref_clock_156p25Mhz,srio_lane_rate_5p000Gbps,1);

but under below, there is also code related on reference clock:

CSL_SRIO_SetLLMPortIPPrescalar (hSrio, 0x21);

And register description for PRESCALAR_SRV_CLK(defined in SetLLMPortIPPrescalar) is described like this,

The default value of 31 is for an ip_clk frequency of 312.5 MHz.
For different frequencies of ip_clk, use the formula:
ip_clk_frequency (in MHz) /10 rounded to the nearest integer.

 

So in my opinion, this example contains contradiction. Because serdes configuration is based on 156.25MHz, but LLM clock is based on 312.5MHz. In my case, I used 156.25MHz so I used like this:

CSL_SRIO_SetLLMPortIPPrescalar (hSrio, 0x10);

Am I misunderstand something? If yes, please clarify this.

And ss I metioned before, I`m trying to test SRIO path in board2board (K2H <-> Xilinx FPGA). If DSP sends NWRITE(or NREAD) packet to FPGA, it can check in FPGA side(using chip scope). But in views of DSP, How can I check the packet sending from FPGA to DSP? It can check the data sending from FPGA to DSP in FPGA side. But data write in specific address(or read) doesn`t happened in DSP side(even if memory browser is operated periodically)

 

Thanks in advance.

Best Regards,

Chanseok.

  • Hi Chanseok,

    Can you share which device & which SDK do you use?

    Best Regards,
    Yordan
  • Thanks for the reply.

    Sure, My development environment is like this:

    - c66 (I used 66k2h12 evm board)
    - CCS 6.2.0
    - pdk 4.0.2

    sorry for ambiguous description.

    Best regards,

    Chanseok.


  • The srv_clk is the internal bus frequency, which is CPU/3. The settings for the prescalar are not strict and overlap somewhat, so adjust to your preference.

    And register description for PRESCALAR_SRV_CLK(defined in SetLLMPortIPPrescalar) is described like this,

    The default value of 31 is for an ip_clk frequency of 312.5 MHz.
    For different frequencies of ip_clk, use the formula:
    ip_clk_frequency (in MHz) /10 rounded to the nearest integer.



    So in my opinion, this example contains contradiction. Because serdes configuration is based on 156.25MHz, but LLM clock is based on 312.5MHz. In my case, I used 156.25MHz so I used like this:

    ?
    1
    CSL_SRIO_SetLLMPortIPPrescalar (hSrio, 0x10);



    The srv_clk is the internal bus frequency, which is CPU/3. The settings for the prescalar are not strict and overlap somewhat, so adjust to your preference.
  • Dear Rajasekaran,

    Thanks for the reply. 

    Yes, I already set my prescalar in configuration. But I just want to know why the clock configuration is diffrent between serdes setting and LLM port setting. Is there any reason to define it differently in example code?

    Regards,

    Chanseok.