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.

Hyplerlink MPY value discrepancies (C6678)

I've seen an error in the SPRS691E (KeyStone Architecture:HyperLink) about the MPY  of the SERDES PLL

On page 24, Table 2-6 it's written that the value for a MPY of 16 is 16 01000000b

On page 72, Table 3-31 it's written that the value for a MPY of 16 is 00111100b. And it the same value specified for a MPY of 15

Furthermore, in the Hyperlink example project in MCSDK in the file hyplnkLLDIFace.c there is a define with a further different value (Line 324)

#define hyplnk_EXAMPLE_VUSR_PLL_MPY    80 /* MPY in 0.25 units = 16x */

80 = 1010000b

So, what value should i use if i want set a MPY of 16?

  • Hi Mark,

    The internal documentation that I have states that the value should be 01000000b as shown in table 2-6. Table 3-31 is wrong since that value shown for 16x is the same as the value shown for 15x. What version and package of MCSDK are you using? I'll see if I can get the software team to look into hyplnkLLDIFace.c. The value you've shown in that file is equivalent to 20x according to my documentation.

    Regards, Bill

  • Hi Mark,

    The PLL values of 6x, 16x and 16.5x are wrongly defined in UG document. It will be corrected in next release.

    PLL Multiply value calculation = PLL Multiply x 4; (example: 16x PLL multiply value = 16 x 4 = 64)

    In code, 16x PLL value is wrongly defined under #elif define (hyplnk_EXAMPLE_SERRATE_10p000) condition(Refer Code Block1), But the same 16x PLL value is correctly defined under #ifdefined(hyplnk_EXAMPLE_SERRATE_01p250) condition(Refer Code Block2).

    Code Block1:
    #elif defined(hyplnk_EXAMPLE_SERRATE_10p000)
      #define hyplnk_EXAMPLE_VUSR_TX_TWPST1   20 /* -10% */
      #define hyplnk_EXAMPLE_VUSR_TX_TWPRE    1  /* -10.0% */
      #define hyplnk_EXAMPLE_VUSR_TX_SWING    0x8
     
      /* full rate implies MPY*4 below, vrange is 0 since 10.0*0.25 > 2.17 */
      #define hyplnk_EXAMPLE_VUSR_PLL_VRANGE  0
      #define hyplnk_EXAMPLE_VUSR_RX_RATE     0  /* full rate */
      #define hyplnk_EXAMPLE_VUSR_TX_RATE     0  /* full */
     
      #if defined(hyplnk_EXAMPLE_REFCLK_156p25)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY    80 /* MPY in 0.25 units = 16x */
                                                  /* 16*4 * 156.25 = 10.0G */
      #elif defined(hyplnk_EXAMPLE_REFCLK_250p00)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY    40 /* MPY in 0.25 units = 10x */
                                                  /* 10*4 * 250 = 10.0G */
      #elif defined(hyplnk_EXAMPLE_REFCLK_312p50)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY    32 /* MPY in 0.25 units = 8x */
                                                  /* 8*4 * 312.5 = 10.0G */
      #endif
     
    Code Block2:
    #if defined(hyplnk_EXAMPLE_SERRATE_01p250)
      #define hyplnk_EXAMPLE_VUSR_TX_TWPST1   0
      #define hyplnk_EXAMPLE_VUSR_TX_TWPRE    0
      #define hyplnk_EXAMPLE_VUSR_TX_SWING    0xf
     
      /* 1/8th rate implies MPY/2 below, vrange is 0 since 1.25*2 > 2.17 */
      #define hyplnk_EXAMPLE_VUSR_PLL_VRANGE  0
     
      #define hyplnk_EXAMPLE_VUSR_RX_RATE     3 /* 1/8th rate */
      #define hyplnk_EXAMPLE_VUSR_TX_RATE     3 /* 1/8th */
     
      #if defined(hyplnk_EXAMPLE_REFCLK_156p25)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY   64  /* MPY in 0.25 units = 16x */
                                                  /* 16/2 * 156.25 = 1.25G */
      #elif defined(hyplnk_EXAMPLE_REFCLK_250p00)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY   40  /* MPY in 0.25 units = 10x */
                                                  /* 10/2 * 250 = 1.25G */
      #elif defined(hyplnk_EXAMPLE_REFCLK_312p50)
        #define hyplnk_EXAMPLE_VUSR_PLL_MPY   32  /* MPY in 0.25 units, = 8x */
                                                  /* 8/2 * 312.5 = 1.25G */
      #endif

    Thanks,

  • Perfect, so i'll use 01000000b.

     

    Thanks