PCG service bug?

Hello all,

I have ported my application to the ADI API (drivers & services). During the initialization of the PCG component I have seen that function adi_pcg_FsPhaseShift() (SHARC\lib\src\services\Source\pcg\adi_pcg_v1.c) uses 5 bit maks to divide the phase shift value into a low and high part. Instead of using a 5 bit mask a 10 bit mask should be used due to the fact that the phase shift value is 20 bit wide.

    /* mask off the low 5 bits */
    HighValue = (FsPhase & 0x3E0u) >> 5u;
    /* mask off the upper 5 bits */
    LowValue = (FsPhase & 0x1Fu);

should be:

    /* mask off the low 10 bits */
    HighValue = (FsPhase & 0xFFC00u) >> 10u;
    /* mask off the upper 10 bits */
    LowValue = (FsPhase & 0x3FFu);

Am I right?

Best Regards,


Parents Reply Children