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.

ADC32RF80: Configuring for decimate by 16

Part Number: ADC32RF80

Hello

I would like to configure the ADC32RF80 for decimate by 16. I have been successfully using the ADC32RF80 for decimate by 4 and 8 in the following configuration:

Decimate by 4:

LMFS = 8422

PLL MODE = 20X

JESD MODE 0, 1, 2 = 1, 0, 0

RATIO = 2.5

Decimate by 8:

LMFS = 4421

PLL MODE = 20X

JESD MODE 0, 1, 2 = 1, 0, 0

RATIO = 2.5

I am trying to configure the ADC32RF80 for decimate by 16 so as to keep the RATIO = 2.5. This will simplify our firmware if the lane rate is the same for decimate by 4, 8 and 16. To do this, I am trying to configure the ADC32RF80 as follows:

Decimate by 16:

LMFS = 2441

PLL MODE = 40X

JESD MODE 0, 1, 2 = 2, 0, 0

RATIO = 2.5

The following is the register writes relating to the JESD configuration and the DDC configuration. The options for decimate by 4 and 8 are commented out. As far as I can tell, all other register writes remain the same when changing decimation rate:

#define ADC_DEC_CHAN_A_DDC_EN 0x5000
#define ADC_DEC_CHAN_A_DECIM_FACTOR 0x5001
#define ADC_DEC_CHAN_A_DUAL_BAND_EN 0x5002
#define ADC_DEC_CHAN_A_REAL_OUT_EN 0x5005
#define ADC_DEC_CHAN_A_DDC_MUX 0x5006
#define ADC_DEC_CHAN_A_DDC0_NCO1_LSB 0x5007
#define ADC_DEC_CHAN_A_DDC0_NCO1_MSB 0x5008
#define ADC_DEC_CHAN_A_DDC0_NCO2_LSB 0x5009
#define ADC_DEC_CHAN_A_DDC0_NCO2_MSB 0x500A
#define ADC_DEC_CHAN_A_DDCO_NCO3_LSB 0x500B
#define ADC_DEC_CHAN_A_DDC0_NCO3_MSB 0x500C
#define ADC_DEC_CHAN_A_DDC1_NCO4_LSB 0x500D
#define ADC_DEC_CHAN_A_DDC1_NCO4_MSB 0x500E
#define ADC_DEC_CHAN_A_NCO_SEL_PIN 0x500F
#define ADC_DEC_CHAN_A_NCO_SEL 0x5010
#define ADC_DEC_CHAN_A_LMFC_RESET_MODE 0x5011
#define ADC_DEC_CHAN_A_DDC0_6DB_GAIN 0x5014
#define ADC_DEC_CHAN_A_DDC1_6DB_GAIN 0x5016
#define ADC_DEC_CHAN_A_DDC_DET_LAT 0x501E
#define ADC_DEC_CHAN_A_WBF_6DB_GAIN 0x501F
#define ADC_DEC_CHAN_B_DDC_EN 0x5800
#define ADC_DEC_CHAN_B_DECIM_FACTOR 0x5801
#define ADC_DEC_CHAN_B_DUAL_BAND_EN 0x5802
#define ADC_DEC_CHAN_B_REAL_OUT_EN 0x5805
#define ADC_DEC_CHAN_B_DDC_MUX 0x5806
#define ADC_DEC_CHAN_B_DDC0_NCO1_LSB 0x5807
#define ADC_DEC_CHAN_B_DDC0_NCO1_MSB 0x5808
#define ADC_DEC_CHAN_B_DDC0_NCO2_LSB 0x5809
#define ADC_DEC_CHAN_B_DDC0_NCO2_MSB 0x580A
#define ADC_DEC_CHAN_B_DDCO_NCO3_LSB 0x580B
#define ADC_DEC_CHAN_B_DDC0_NCO3_MSB 0x580C
#define ADC_DEC_CHAN_B_DDC1_NCO4_LSB 0x580D
#define ADC_DEC_CHAN_B_DDC1_NCO4_MSB 0x580E
#define ADC_DEC_CHAN_B_NCO_SEL_PIN 0x580F
#define ADC_DEC_CHAN_B_NCO_SEL 0x5810
#define ADC_DEC_CHAN_B_LMFC_RESET_MODE 0x5811
#define ADC_DEC_CHAN_B_DDC0_6DB_GAIN 0x5814
#define ADC_DEC_CHAN_B_DDC1_6DB_GAIN 0x5816
#define ADC_DEC_CHAN_B_DDC_DET_LAT 0x581E
#define ADC_DEC_CHAN_B_WBF_6DB_GAIN 0x581F
#define ADC_DIGITAL_BANK_PAGE_SEL_MSB 0x4004
#define ADC_DIGITAL_BANK_PAGE_SEL_MID 0x4003
#define ADC_DIGITAL_BANK_PAGE_SEL_LSB 0x4002
#define ADC_MAIN_DIG_PAGE_NQ_ZONE_EN 0x60A2
#define ADC_MAIN_DIG_DIG_RESET 0x6000
#define ADC_JESD_CHAN_A_CTRL_K 0x7001
#define ADC_JESD_CHAN_A_SYNC_REG 0x7002
#define ADC_JESD_CHAN_A_LINK_LAYER_TESTMODE 0x7003
#define ADC_JESD_CHAN_A_REL_ILA_SEQ 0x7004
#define ADC_JESD_CHAN_A_SCRAMBLE_EN 0x7006
#define ADC_JESD_CHAN_A_FRAMES_PER_MULTIFRAME 0x7007
#define ADC_JESD_CHAN_A_40X_MODE 0x7016
#define ADC_JESD_CHAN_A_LANE0_POL 0x7017
#define ADC_JESD_CHAN_A_SEL_EMP_LANE_0 0x7032
#define ADC_JESD_CHAN_A_SEL_EMP_LANE_1 0x7033
#define ADC_JESD_CHAN_A_SEL_EMP_LANE_2 0x7034
#define ADC_JESD_CHAN_A_SEL_EMP_LANE_3 0x7035
#define ADC_JESD_CHAN_A_CMOS_SYNCB 0x7036
#define ADC_JESD_CHAN_A_PLL_MODE 0x7037
#define ADC_JESD_CHAN_A_EN_CMOS_SYNCB 0x703C
#define ADC_JESD_CHAN_B_CTRL_K 0x6001
#define ADC_JESD_CHAN_B_SYNC_REG 0x6002
#define ADC_JESD_CHAN_B_LINK_LAYER_TESTMODE 0x6003
#define ADC_JESD_CHAN_B_REL_ILA_SEQ 0x6004
#define ADC_JESD_CHAN_B_SCRAMBLE_EN 0x6006
#define ADC_JESD_CHAN_B_FRAMES_PER_MULTIFRAME 0x6007
#define ADC_JESD_CHAN_B_40X_MODE 0x6016
#define ADC_JESD_CHAN_B_LANE0_POL 0x6017
#define ADC_JESD_CHAN_B_SEL_EMP_LANE_0 0x6032
#define ADC_JESD_CHAN_B_SEL_EMP_LANE_1 0x6033
#define ADC_JESD_CHAN_B_SEL_EMP_LANE_2 0x6034
#define ADC_JESD_CHAN_B_SEL_EMP_LANE_3 0x6035
#define ADC_JESD_CHAN_B_CMOS_SYNCB 0x6036
#define ADC_JESD_CHAN_B_PLL_MODE 0x6037
#define ADC_JESD_CHAN_B_EN_CMOS_SYNCB 0x603C


// DIGITAL BANK
// MAIN JESD DIGITAL PAGE
ADC_DIGITAL_BANK_PAGE_SEL_LSB=0x00
ADC_DIGITAL_BANK_PAGE_SEL_MID=0x00
ADC_DIGITAL_BANK_PAGE_SEL_MSB=0x69

//ADC_JESD_CHAN_A_SYNC_REG=0x01 // DEC 4/8
ADC_JESD_CHAN_A_SYNC_REG=0x02 // DEC 16
//ADC_JESD_CHAN_B_SYNC_REG=0x01 // DEC 4/8
ADC_JESD_CHAN_B_SYNC_REG=0x02 // DEC 16
//ADC_JESD_CHAN_A_PLL_MODE=0x00 // DEC 4/8
//ADC_JESD_CHAN_B_PLL_MODE=0x00 // DEC 4/8
ADC_JESD_CHAN_A_PLL_MODE=0x02 // DEC 16
ADC_JESD_CHAN_B_PLL_MODE=0x02 // DEC 16
ADC_JESD_CHAN_A_40X_MODE=0x70 // DEC 16
ADC_JESD_CHAN_B_40X_MODE=0x70 // DEC 16
ADC_JESD_CHAN_A_CTRL_K=0x80
ADC_JESD_CHAN_B_CTRL_K=0x80
ADC_JESD_CHAN_A_FRAMES_PER_MULTIFRAME=0x1F
ADC_JESD_CHAN_B_FRAMES_PER_MULTIFRAME=0x1F

ADC_JESD_CHAN_A_LINK_LAYER_TESTMODE=0x00
ADC_JESD_CHAN_B_LINK_LAYER_TESTMODE=0x00
ADC_JESD_CHAN_A_SEL_EMP_LANE_0=0x3C
ADC_JESD_CHAN_B_SEL_EMP_LANE_0=0x3C
ADC_JESD_CHAN_A_SEL_EMP_LANE_1=0x3C
ADC_JESD_CHAN_B_SEL_EMP_LANE_1=0x3C
ADC_JESD_CHAN_A_SEL_EMP_LANE_2=0x3C
ADC_JESD_CHAN_B_SEL_EMP_LANE_2=0x3C
ADC_JESD_CHAN_A_SEL_EMP_LANE_3=0x3C
ADC_JESD_CHAN_B_SEL_EMP_LANE_3=0x3C

ADC_JESD_CHAN_A_CMOS_SYNCB=0x40 // SET FOR SINGLE ENDED SYNC
ADC_JESD_CHAN_A_EN_CMOS_SYNCB=0x01 // SET FOR SINGLE ENDED SYNC

// DIGITAL BANK
// DIRECT ADDRESSING
// DDC PAGES
ADC_DEC_CHAN_A_DDC_EN=0x01
//ADC_DEC_CHAN_A_DECIM_FACTOR=0x00 // DEC 4
//ADC_DEC_CHAN_A_DECIM_FACTOR=0x02 // DEC 8
ADC_DEC_CHAN_A_DECIM_FACTOR=0x07 // DEC 16
ADC_DEC_CHAN_A_DUAL_BAND_EN=0x00 // SINGLE BAND
ADC_DEC_CHAN_A_REAL_OUT_EN=0x00
ADC_DEC_CHAN_A_DDC_MUX=0x00
ADC_DEC_CHAN_A_DDC0_NCO1_LSB=0x55 // NCO1 = 21845 = 1GHz CF
ADC_DEC_CHAN_A_DDC0_NCO1_MSB=0x55
ADC_DEC_CHAN_A_DDC0_NCO2_LSB=0x00
ADC_DEC_CHAN_A_DDC0_NCO2_MSB=0x00
ADC_DEC_CHAN_A_DDCO_NCO3_LSB=0x00
ADC_DEC_CHAN_A_DDC0_NCO3_MSB=0x00
ADC_DEC_CHAN_A_DDC1_NCO4_LSB=0x00
ADC_DEC_CHAN_A_DDC1_NCO4_MSB=0x00
ADC_DEC_CHAN_A_WBF_6DB_GAIN=0x01 // USING WB DDC SO ADD 6DB GAIN
ADC_DEC_CHAN_A_DDC0_6DB_GAIN=0x01
ADC_DEC_CHAN_A_DDC1_6DB_GAIN=0x01
ADC_DEC_CHAN_A_NCO_SEL_PIN=0x00 // NCO SELECTED THROUGH SPI
ADC_DEC_CHAN_A_NCO_SEL=0x00 // NCO 1 SELECTED
ADC_DEC_CHAN_A_LMFC_RESET_MODE=0x00 // ALL DDCS AND NCOS RESET WITH EVERY LMFC
//ADC_DEC_CHAN_A_DDC_DET_LAT=0x50 // ENSURE DETERMINISTIC LATENCY FOR DEC BY 4, DEC BY 8
ADC_DEC_CHAN_A_DDC_DET_LAT=0x20 // ENSURE DETERMINISTIC LATENCY FOR DEC BY 16

ADC_DEC_CHAN_B_DDC_EN=0x01
//ADC_DEC_CHAN_B_DECIM_FACTOR=0x00 // DEC 4
//ADC_DEC_CHAN_B_DECIM_FACTOR=0x02 // DEC 8
ADC_DEC_CHAN_B_DECIM_FACTOR=0x07 // DEC 16
ADC_DEC_CHAN_B_DUAL_BAND_EN=0x00 // SINGLE BAND
ADC_DEC_CHAN_B_REAL_OUT_EN=0x00
ADC_DEC_CHAN_B_DDC_MUX=0x00
ADC_DEC_CHAN_B_DDC0_NCO1_LSB=0x55 // NCO1 = 21845 = 1GHZ CF
ADC_DEC_CHAN_B_DDC0_NCO1_MSB=0x55
ADC_DEC_CHAN_B_DDC0_NCO2_LSB=0x00
ADC_DEC_CHAN_B_DDC0_NCO2_MSB=0x00
ADC_DEC_CHAN_B_DDCO_NCO3_LSB=0x00
ADC_DEC_CHAN_B_DDC0_NCO3_MSB=0x00
ADC_DEC_CHAN_B_DDC1_NCO4_LSB=0x00
ADC_DEC_CHAN_B_DDC1_NCO4_MSB=0x00
ADC_DEC_CHAN_B_DDC0_6DB_GAIN=0x01
ADC_DEC_CHAN_B_DDC1_6DB_GAIN=0x01
ADC_DEC_CHAN_B_WBF_6DB_GAIN=0x01 // USING WB DDC SO ADD 6DB GAIN
ADC_DEC_CHAN_B_NCO_SEL_PIN=0x00 // NCO SELECTED THROUGH SPI
ADC_DEC_CHAN_B_NCO_SEL=0x00 // NCO 1 SELECTED
ADC_DEC_CHAN_B_LMFC_RESET_MODE=0x00 // ALL DDCS AND NCOS RESET WITH EVERY LMFC
//ADC_DEC_CHAN_B_DDC_DET_LAT=0x50 // ENSURE DETERMINISTIC LATENCY FOR DEC BY 4, DEC BY 8
ADC_DEC_CHAN_B_DDC_DET_LAT=0x20 // ENSURE DETERMINISTIC LATENCY FOR DEC BY 16

Is there something that I am not setting correctly for decimate by 16? Or is there something I am setting in the incorrect order for decimate by 16? Does the fact that the PLL MODE has changed to 40X have any other impact on the clocking, etc. that I need to take into account?

Thank you.

  • Hi Gavin,

    It is best to use the ADC32RFxx GUI to generate the proper configuration. Please refer to the following software link and user's guide. The auto configuration wizard should help guide you through the configuration process

    https://www.ti.com/tool/ADC32RF80EVM

    https://www.ti.com/lit/zip/sbac148

  • Hi Gavin,

    further recommendation:

    Config files used by GUI are available at this location: C:\Program Files (x86)\Texas Instruments\ADC32RFxx EVM GUI\Configuration Files\ADC32RFxx\DDC Mode\

    We compared config files for DDC-by-8 and DDC-by-16 modes and see that you did all the needed updates for DDC-by-16.

     

     

    Regarding clocking, you have to make sure SYSREF frequency is as required for decimation factor 16. (Refer to DS section, 8.3.3.2 Frequency of the SYSREF Signal).