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.

AFE7769: AFE7769&SN18064 JESD204B Sync drop issue

Part Number: AFE7769


Hi Team,

The shared international repeater project currently uses an AFE7769 (4T4R2FB) and an SN18064 (4T4R1FB). There are problems with the channel 3/4 of SN18064

 

  1. SN18064’s problems: it’s under the 4TR, dual sync mode (channel 1/2 transmits and receives 2 SYNCs; channel 3/4 transmits and receives 2 SYNCs). Channel 1/2 is normal. The SYNC of the transmitting channel of channel 3/4 can be pulled high, but there’s no signal output. The sync received by channel 3/4 is always low.

1) For the receiving channel of channel 3/4, the K code of lane3 cannot be seen in the FPGA data capture.

2) The FPGA sends the PRBS code and uses the algorithm in TI's K C function to check the errors of each lane. It is found that there are many errors in lane 3 listed as follows:     

           

3) On the FPGA side, the GTY performs loopback, and the sync pin is looped back at the same time. The 4 lanes can send and receive smoothly, the data is normal, and the sync can be pulled high.

4) The jump wire outside FPGA loops back the GTY corresponding to lane3. Due to the jump wire, the speed cannot reach 10G and is reduced to 2.5G. On ibert, the prbs seems normal.

 

Therefore, I think that a problem has emerged when SN18064 is configuring lane3. Could you please help me locate where the problem occurs? Thank you in advance.

Best regards,

Katherine

  • Katherine,

    Kevin is currently working with the customer offline. We will post solutions and updates on this thread.

    -Kang

  • Katherine,

    I emailed one of Hongxin's engineers regarding this issue.  The JESD Tx&Rx lane mux selection didn't seem to be correct in the original configuration file that i was sent.  I have sent him the new configuration file with updated JESD lane mux.  Please ask him to try the new configuration file and let us know if it solves the issue or not.  Thanks.

    Please see below for the lane mux change and the bringup script&configuration file:

    #For use with TSW14J5x board, set sysParams.jesdABLvdsSync/sysParams.jesdCDLvdsSync to 1
    
    sysParams.__init__()
    setupParams.selectedDut=1
    if boardType in ("EVM","HSC1373"):
    	if setupParams.selectedDut==1:
    		AFE=AFE1
    		device=device1
    		logDumpInst=logDumpInst1
    	else:
    		AFE=AFE0
    		device=device0
    		logDumpInst=logDumpInst0
    else:
    	setupParams.selectedDut=0
    	
    sysParams=AFE.systemParams
    device.hardReadAlways=False
    ##### PLL & LO
    curr_lo = 3500
    sysParams.rxAdcBw=100
    sysParams.FRef                    = 245.76
    sysParams.Fs                      = 2949.12
    sysParams.pllMuxModes			= 0	
    										#0: 4T4R Mode with PLL0 as Master. PLL 0 for all the LOs.
    										#1: 4T4R Mode with PLL2 as Master. PLL 2 for all the LOs.
    										#2: 4T4R FDD Mode. PLL0 for TX and PLL2 for RX.
    										#3: 2*2T2R FDD Mode: PLL0 AB-TX;PLL3 AB-RX; PLL2 CD TX; PLL4 CD RX
    										#4: 2T2R FDD - TDD Mode: PLL0 AB-TX; PLL3-AB-RX; PLL2 CD
    sysParams.pllLo					= [curr_lo,sysParams.Fs,1850,1800.24,3400.0]	#PLL Frequencies for PLLs [0,1,2,3,4]
    sysParams.setTxLoFbNcoFreqForTxCalib	= True
    
    ## In below parameters, first in the array is for first 2T2R1F and second 2T2R1F.
    # JESD and Serdes Parameters
    sysParams.useSpiSysref			= False
    sysParams.LMFSHdRx              = ["24410","24410"] 
    sysParams.LMFSHdFb              = ["12410","12410"]
    sysParams.LMFSHdTx              = ["24410","24410"]
    sysParams.systemMode            = [2,2]					# 0-Identical, 1-FDD, 2-TDD
    sysParams.dedicatedLaneMode     = [1,1]
    sysParams.jesdProtocol          = 0#1#0				# -0:B; 1:H; 2:C
    sysParams.serdesFirmware		= True
    sysParams.jesdTxLaneMux			= [0,1,4,5,2,3,6,7]	# RX1...RX4 & FB1...FB2 on STX1...STX4 in shared mode. 
    sysParams.jesdRxLaneMux			= [0,1,4,5,2,3,6,7]	# TX1...TX4 on SRX1...SRX4.
    sysParams.jesdRxRbd				= [15, 15]
    sysParams.jesdScr				= [True,True]		
    sysParams.serdesTxLanePolarity	= [False,False,False,False,False,False,False,False] 
    sysParams.serdesRxLanePolarity	= [False,False,False,False,False,False,False,False] 
    sysParams.jesdK					= [16]*2 
    sysParams.syncLoopBack			= 1
    sysParams.jesdLoopbackEn		= 0
    sysParams.jesdTxRxABSyncMux		= 0 #v5
    sysParams.jesdTxRxCDSyncMux		= 3 #d5
    sysParams.jesdTxFBABSyncMux		= 1 #u5
    sysParams.jesdTxFBCDSyncMux		= 2 #c5
    sysParams.jesdRxABSyncMux		= 0 #y5
    sysParams.jesdRxCDSyncMux		= 1 #w5
    sysParams.jesdABLvdsSync		= 0
    sysParams.jesdCDLvdsSync		= 0
    
    # Decimation and interpolation Parameters
    sysParams.ddcFactorRx			= [12]*2
    sysParams.ddcFactorFb			= [12]*2
    sysParams.ducFactorTx			= [12]*2
    
    sysParams.fbNco					= [curr_lo]*2
    sysParams.lowIfNcoRx			= [0,0]
    sysParams.lowIfNcoTx			= [0,0]
    sysParams.lowIfNcoFb			= [0,0]
    
    LMKParams.pllEn			=	True
    #sysParams.txIqmcExternalDelayValue=[0x4f7,0x4f7,0x4f7,0x4f7]
    LMKParams.lmkFrefClk	=	True
    #LMKParams.inputClk		=	1474.56
    LMKParams.sysrefFreq	=	0.96
    '''
    for i in range(4):
    	sysParams.agcRegConfigParams[i]['enableIa']=1	#Enable Internal AGC for RX
    	sysParams.agcRegConfigParams[i]['dgcEnable']=1
    	sysParams.agcRegConfigParams[i]['dgcMode']=3
    	sysParams.agcRegConfigParams[i]['coarseIndexBits'] = 4
    	sysParams.agcRegConfigParams[i]['coarseStep'] = 6
    	sysParams.agcRegConfigParams[i]['enableEl']=0
    	
    	sysParams.agcRegConfigParams[i]['thresholdSa']=-3
    	sysParams.agcRegConfigParams[i]['windowLenSa']=256
    	sysParams.agcRegConfigParams[i]['stepSizeSa']=1
    	sysParams.agcRegConfigParams[i]['numHitsSa']=32
    	sysParams.agcRegConfigParams[i]['enableSa']=1
    	
    	sysParams.agcRegConfigParams[i]['thresholdSd']=-7
    	sysParams.agcRegConfigParams[i]['windowLenSd']=512
    	sysParams.agcRegConfigParams[i]['stepSizeSd']=1
    	sysParams.agcRegConfigParams[i]['numHitsSd']=32
    	sysParams.agcRegConfigParams[i]['enableSd']=1
    	
    	sysParams.agcRegConfigParams[i]['thresholdBa']=-2
    	sysParams.agcRegConfigParams[i]['windowLenBa']=128
    	sysParams.agcRegConfigParams[i]['stepSizeBa']=3
    	sysParams.agcRegConfigParams[i]['numHitsBa']=32
    	sysParams.agcRegConfigParams[i]['enableBa']=1
    	
    	sysParams.agcRegConfigParams[i]['thresholdBd']=-6
    	sysParams.agcRegConfigParams[i]['windowLenBd']=256
    	sysParams.agcRegConfigParams[i]['stepSizeBd']=3
    	sysParams.agcRegConfigParams[i]['numHitsBd']=32
    	sysParams.agcRegConfigParams[i]['enableBd']=1
    '''	
    #GPIO assignment
    sysParams.gpioMapping={
    	'U18': u'tx_fb_loop_1',
    	'T18': u'tx_fb_loop_2',
    	'V18': u'tx_fb_loop_0',
    	'T13': u'tdd_1f_en_ab',
    	'V13': u'tdd_2r_en_ab',
    	'C13': u'tdd_2r_en_cd',
    	'U14': u'tdd_2t_en_ab',
    	'D14': u'tdd_2t_en_cd',	
    	'V5': u'adc_sync_n_ab_0',
    	'C5': u'adc_sync_n_cd_0',
    	'U5': u'adc_sync_n_ab_1',
    	'D5': u'adc_sync_n_cd_1',
    	'Y5': u'dac_sync_n_ab_0',
    	'A5': u'dac_sync_n_cd_0',
    	'W5': u'dac_sync_n_ab_1',
    	'B5': u'dac_sync_n_cd_1',
    	'E17': u'alarm_2',
    	'C17': u'alarm_1',	
    	'E16': u'global_pdn'
    	}
    sysParams.gpioConfigMode=1
    #end GPIO assignment
    
    #Calibrations
    sysParams.enableRxDsaFactoryCal 	  = False
    sysParams.enableTxDsaFactoryCal 	  = False
    sysParams.enableTxIqmcLolTrackingCorr = True
    sysParams.enableRxIqmcLolTrackingCorr = True
    sysParams.txIqMcCalibMode			  = 0		# 0 -Single Fb Mode FB AB ; 1 -Single Fb Mode FB CD ; 2- Dual Fb_Mode
    sysParams.txDsaCalibMode			  = 0
    sysParams.rxDsaCalibMode			  = 0
    
    setupParams.skipFpga=0
    setupParams.skipLmk=0
    
    logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Hongxin_2T2R1F_MU_config.txt")
    logDumpInst.logFormat=0x4
    logDumpInst.rewriteFile=1
    logDumpInst.ignoreLogComments=0
    logDumpInst.enableReadCheck=True
    logDumpInst.enableReads= False
    
    device.rawWriteLogEn=1
    device.rewriteFile=1
    device.rawWriteLogsFile=ASTERIX_DIR+DEVICES_DIR+r"\test.txt"#"D:\AFE77xx_config/testBroadcast.txt"
    lmk.rawWriteLogEn=1
    lmk.rawWriteLogsFile=device.rawWriteLogsFile
    
    
    # AFE.initializeConfig()
    AFE.deviceBringup()
    
    device.rawWriteLogEn=1
    lmk.rawWriteLogEn=0
    
    engine.sampleNo=32768
    
    AFE.TOP.overrideTdd(1, 1, 1)
    
    device.currentPageSelected.setValue(0)

    Hongxin_SN18064_config_4t4r1fb_singleband_TDD_configuration file.txt

    Kevin

  • Customer tested the configuration file with updated lane mux selection and confirmed it resolved the sync drop issue.