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.

AFE7950: LMK with OSCIN = 100MHz make compile error

Part Number: AFE7950
Other Parts Discussed in Thread: LMK04828

Dear TI,

I made a ADC board which can receive external ref to LMK OSCIN ( PLL2 ref input )

It's OK for input 122.88 MHz for OSCIN.

But when I change from 122.88 MHz to 100 MHz

and buffered the modified latte bringup script ConfigLMK.py

It show error as below

ConfigLMK.py

sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion

setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro 

##############		Top Level			##############
sysParams.FRef			= 500
sysParams.FadcRx		= 3000
sysParams.FadcFb		= 3000
sysParams.Fdac			= 3000
sysParams.externalClockRx=False
sysParams.externalClockTx=False
													
##############		Digital Chain		##############

		#####	RX	#####
sysParams.ddcFactorRx	=	[24,24,24,24]			#DDC decimation factor for RX A, B, C and D
sysParams.rxNco0		= 	[[4840,4840],			#Band0, Band1 for RXA 
							[4840,4840],        	#Band0, Band1 for RXB 
							[4840,4840],        	#Band0, Band1 for RXC 
							[4840,4840]]        	#Band0, Band1 for RXD 

		#####	FB	#####
sysParams.ddcFactorFb	=	[24,24]					#DDC decimation factor for FB 1 and 2
sysParams.fbNco0		= 	[4840,4840]				#Band0 for FB1 and FB2 

		#####	TX	#####
sysParams.ducFactorTx	=	[24,24,24,24]			#DUC interpolation factor for TX A, B, C and D
sysParams.txNco0		= 	[[4840,4840],			#Band0, Band1 for TXA 
							[4840,4840],        	#Band0, Band1 for TXB 
							[4840,4840],        	#Band0, Band1 for TXC 
							[4840,4840]]        	#Band0, Band1 for TXD
sysParams.txEnable = [False,False,False,False]

##############		JESD		##############

		#####	ADC-JESD	#####
sysParams.jesdSystemMode= [1,1]
													#SystemMode 0:	2R1F-FDD						; rx1-rx2-fb -fb
													#SystemMode 1:	1R1F-FDD						; rx -rx -fb -fb
													#SystemMode 2:	2R-FDD							; rx1-rx1-rx2-rx2
													#SystemMode 3:	1R								; rx -rx -rx -rx
													#SystemMode 4:	1F								; fb -fb- fb -fb
													#SystemMode 5:	1R1F-TDD						; rx/fb-rx/fb-rx/fb-rx/fb
													
sysParams.jesdTxProtocol= [0,0]						# 0 - 8b/10b encoding; 2 - 64b/66b encoding 
sysParams.LMFSHdRx		= ["24410","24410","24410","24410"]
													# The 2nd and 4th are valid only for jesdSystemMode values in (0,2).
													# For other modes, select 4 converter modes for 1st and 3rd.
sysParams.LMFSHdFb		= ["12410","12410"]

sysParams.rxJesdTxScr	= [True,True,True,True]
sysParams.fbJesdTxScr	= [True,True]

sysParams.rxJesdTxK		= [16,16,16,16]
sysParams.fbJesdTxK		= [16,16]

sysParams.jesdTxLaneMux	= [0,1,2,3,4,5,6,7]			# Enter which lanes you want in each location. 
													# For example, if you want to exchange the first two lines of each 2T,
													#		this should be [[1,0,2,3],[5,4,6,7]]

		#####	DAC-JESD	#####
sysParams.jesdRxProtocol= [0,0]
sysParams.LMFSHdTx		= ["44210","44210","44210","44210"]
sysParams.jesdRxLaneMux	= [0,1,2,3,4,5,6,7]			# Enter which lanes you want in each location.
													# For example, if you want to exchange the first two lines of each 2R
													#		this should be [[1,0,2,3],[5,4,6,7]]
sysParams.jesdRxRbd		= [4, 4]
sysParams.jesdRxScr		= [True,True,True,True]
sysParams.jesdRxK		= [16,16,16,16]

		#####	JESD Common	#####
	
sysParams.jesdABLvdsSync= True
sysParams.jesdCDLvdsSync= True
sysParams.syncLoopBack	= True	#JESD Sync signal is connected to FPGA

##############		GPIO		##############
sysParams.gpioMapping	= {
						'H8': 'ADC_SYNC0',
						'H7': 'ADC_SYNC1',
						'N8': 'ADC_SYNC2',
						'N7': 'ADC_SYNC3',
						'H9': 'DAC_SYNC0',
						'G9': 'DAC_SYNC1',
						'N9': 'DAC_SYNC2',
						'P9': 'DAC_SYNC3',
						'P14': 'GLOBAL_PDN',
						'K14': 'FBABTDD',
						'R6': 'FBCDTDD',
						'H15': ['TXATDD','TXBTDD'],
						'V5': ['TXCTDD','TXDTDD'],
						'E7': ['RXATDD','RXBTDD'],
						'R15': ['RXCTDD','RXDTDD']}

##############		LMK Params		##############
lmkParams.pllEn			= True
lmkParams.inputClk		= 983.04 # Valid only when lmkParams.pllEn = False
lmkParams.lmkFrefClk	= True
setupParams.fpgaRefClk	= 125 # Should be equal to LaneRate/40 for TSW14J56

##############		Logging		##############
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat=0x0 #Modify to 0x1 to save register scequence to log file. Script takes more time to execute.
logDumpInst.rewriteFile=1
logDumpInst.rewriteFileFormat4=1
device.optimizeWrites=0
device.rawWriteLogEn=1

device.delay_time = 0
#-------------------------------------------------------------------------------------------------#
setupParams.skipLmk	=	False
AFE.initializeConfig()
lmkParams.sysrefFreq = AFE.systemStatus.sysrefFreq
lmkParams.lmkPulseSysrefMode = False
AFE.LMK.lmkConfig()

ConfigADC.py

setupParams.skipLmk	=	True
## Initiates AFE79xx Bring-up

 
AFE.deviceBringup()

AFE.TOP.overrideTdd(15,3,15)

I check the LMK04828 datasheet ( page13 )

It show that 100 MHz OSCIN is allowed

And VCO can support up to 3080 MHz ( page1 )

Please help~

By the way, I can't load the latte igui 

Is there a latest latte version ?

  • Hi Naiwen,

    To use a 100MHz crystal we must configure the LMK parameter to expect a 100MHz crystal and update the LMK's VCO frequency. Please add the below two lines before the AFE.deviceBringup() line in your Latte script. 

    lmkParams.xtalFreq=100
    lmkParams.lmkVcoFreq=3000

    Another that I noticed is that it looks like you are not using the latest version of the AFE79xx GUI. I would recommend using the latest version of the AFE79xx GUI that is available in the AFE79xx secure folder. 

    Regards,

    David Chaparro