AFE7921: Can AFE7921 config NCO dynamically ?

Part Number: AFE7921

Tool/software:

Hi

    In our application, the NCO needs to be dynamically configured AFE7921.

Limited by our FPGA resources, our maximum bandwidth can only be 100M, but the frequency of our application spans 3.7G-4G, so we want to quickly and dynamically configure NCO, can AFE7921 have this function?

How do I use this feature through the API?

  • Hello,

    Yes, changing NCO dynamically is possible through API. Please try the following function:

  • Hello Hsia,

    We had try changing NCO with API, and we try to change RX NCO is OK,but when we try to change TX NCO,there are something error.

    We want to change NCO to 3930MHz,our Fdac is 8847.36MHz

    We had try TX NCO with API below

    The error log is below

  • Hello Hsia,

    We had try changing NCO with API,we also try another NCO, we want to change TX NCO and RX NCO to 3840000KHz.

    We had change centerFreqRd to 3840000KHz

    we calculated according to the formula is 0x1C71C7,Convert to decimal system is1864135.

    we let's substitute the mixer value into the api function updateTxNco()

    This time the log did not report an error, but the FPGA could not pick up the noise floor of AD.

    Can you give some tips to us to debug this problem?

  • Hi Mr. Chen,

    Sorry for the delay on this. Can you please share your latest configuration file with me? I have only a configuration file from 2 months ago, but I suspect this is different from the one you are using now. Please share your latest .py configuration file, we will try to reproduce/debug on our side and get back to you.

    Thanks,

    Aman

  • Hi Aman,

    Our config is below, Our default NCO is 3840MHz,we want to config our NCO to 2700,3400,3750,3930 dynamically

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    '''
    Validation : AFE79xx Library Version
    v1.67, v1.74
    Case RX TX FB CLK Notes
    ---- ----------------- ----------------- ----------------- ----------- ------------
    1 245.76Msps, 24410 491.52Msps, 44210 491.52Msps, 22210 FADC=2949.12M DAC in interleaved mode
    SerDes=9830.4Mbps SerDes=9830.4Mbps SerDes=9830.4Mbps FDAC=8847.36M
    PLL0, NCO=3500M PLL0, NCO=3500M NCO=3500M REF=491.52M
    2 245.76Msps, 24410 491.52Msps, 44210 491.52Msps, 22210 FADC=2949.12M DAC in straight mode
    SerDes=9830.4Mbps SerDes=9830.4Mbps SerDes=9830.4Mbps FDAC=8847.36M
    PLL0, NCO=3500M PLL0, NCO=3500M NCO=3500M REF=491.52M
    '''
    setupParams.skipFpga = 1
    sysParams = AFE.systemParams
    setupParams.fpgaRefClk = 245.76
    AFE.systemStatus.loadTrims = 1
    sysParams.FRef = 245.76
    sysParams.FadcRx = 2949.12
    sysParams.FadcFb = 2949.12
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi Mr. Chen,

    Thanks! We will take a look using your specific configuration.

    One thing I notice from first glance - you are using sysParams.ncoFreqMode = "1KHz" - I believe this means that the mixer parameter below should be in kHz (3840000) rather than in this "frequency word" (0x1C71C7). 

    I see that in your code, you are calculating the mixerFreq according to the formula 2^32 * mixerFreq/Fdac

    (just as a note here, your FadcRx = 8847.36 is actually the Fdac rather than FadcRx. Your FadcRx is 2949.12, as in your configuration file. Just mentioning in case the variable names cause some other bug later)

    Since you are using 1KHz mode rather than FCW mode, please try the call like this:

    Fullscreen
    1
    updateTxNco(afeId,chNo,3800000,0)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Please let me know if using the function like this works for you.

    Thanks!

    Aman

  • Hi Mr. Chen,

    We tested this on our end, and using the following code to set TX1 NCO to 3800MHz, this worked for us:

    Fullscreen
    1
    updateTxNco(0,1,3800000,0)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Please try this on your end and see if it works for you.

    Thanks!
    Aman