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.

AFE7920EVM: DAC JESD setup error

Part Number: AFE7920EVM

Hi Team,

I've tried to modify the Repeater script (#5) which comes with Latte software for AFE7920EVM so its PLL works in distributed mode from an external clock source (@163.68 MHz).

The code (attached) manages to compile and run, but it also reports the following errors:

Device DAC JESD-RX 0 Link Status

Serdes-FIFO error for lane 0: 1

CS State TX0: 0b00001010 . It is expected to be 0b00001010

FS State TX0: 0b00000101 . It is expected to be 0b00000101

Couldn't get the link up for device RX: 0; Alarms: 0x1000

Device DAC JESD-RX 1 Link Status

Serdes-FIFO error for lane 1: 1

CS State TX0: 0b00001010 . It is expected to be 0b00001010

FS State TX0: 0b00000101 . It is expected to be 0b00000101

Couldn't get the link up for device RX: 1; Alarms: 0x2000

I suspect that these errors come from the fact that I have not modify any of the JESD204B interface properties, as they were only taken from the original Repeater script. 

However, I am not quite certain what exactly is the cause of these errors. Do you perhaps have any idea what could be wrong in the settings I modified?

Many thanks in advance,

Zeljko

##########                     General settings:                     ##########

# VLBI Tx frequency plan details:
custom_clk 							= 1
benchmark_on 						= 1
if (custom_clk != 0):
	f0 								= 163.68
	Nrx								= 18
	Nddc							= 6
	Ntx 							= 4
	NFRef							= 1
	NfpgaRefClk						= 1
	NinputClk						= 1
else:
	f0 								= 122.88
	Nrx								= 24
	Nddc							= 12
	Ntx 							= 3
	NFRef							= 4
	NfpgaRefClk						= 2
	NinputClk						= 12
ncoFreqModes 						= ["1KHz", "FCW"]
Nduc								= Nddc*Ntx
Fnco_tx1 							= 2245.0
Fnco_rx1							= 500.0

# AFE general settings
AFE.systemStatus.loadTrims			= 1
setupParams.skipFpga 				= 1
setupParams.fpgaRefClk 				= f0*NfpgaRefClk
sysParams							= AFE.systemParams
sysParams.FRef 						= f0*NFRef

##########               Analog settings: AFE 79XX EVM               ##########

# General system settings	
sysParams.RRFMode   				= 0
sysParams.modeTdd					= 0
sysParams.adcSelect0				= [0, 1, 2]
sysParams.adcSelect1				= [0, 1, 2]
sysParams.useSpiSysref				= 0
sysParams.sysrefTermination			= 0
sysParams.ncoFreqMode				= ncoFreqModes[custom_clk != 0]
sysParams.spiMode					= 1

# ADC settings
sysParams.FadcRx 					= f0*Nrx
sysParams.rxEnable 					= [1, 1, 1, 1]
sysParams.externalClockRx 			= 0
sysParams.halfRateModeRx 			= [0, 0]
sysParams.ddcFactorRx 				= [Nddc, Nddc, Nddc, Nddc]
sysParams.numBandsRx 				= [0, 0, 0, 0]
sysParams.numRxNCO 					= 1
sysParams.ncoRxMode					= [0, 0]
sysParams.broadcastRxNcoSel			= 0
sysParams.rxNco0 					= [ [Fnco_rx1, Fnco_rx1], 
										[870.0, 870.0], 
										[637.5, 637.5], 
										[637.5, 637.5]]
sysParams.rxNco1 					= [ [Fnco_rx1, Fnco_rx1], 
										[870.0, 870.0], 
										[637.5, 637.5], 
										[637.5, 637.5]]

# FB settings
sysParams.FadcFb					= sysParams.FadcRx
sysParams.fbEnable 					= [0, 0]
sysParams.halfRateModeFb 			= [0, 0]
sysParams.ddcFactorFb 				= [Nddc, Nddc]
sysParams.numBandsFb				= [0, 0]
sysParams.numFbNCO 					= 1
sysParams.ncoFbMode					= 0
sysParams.fbNco0 					= [1000, 1000]
sysParams.fbNco1 					= [1000, 1000]
sysParams.fbNco2 					= [1000, 1000]
sysParams.fbNco3 					= [1000, 1000]

# DAC settings
sysParams.Fdac 						= sysParams.FadcRx*Ntx
sysParams.txEnable 					= [1, 1, 1, 1]
sysParams.externalClockTx			= 0
sysParams.halfRateModeTx 			= [0, 0]
sysParams.ducFactorTx 				= [Nduc, Nduc, Nduc, Nduc]
sysParams.numBandsTx 				= [0, 0, 0, 0]
sysParams.numTxNCO 					= 1
sysParams.combineDucMode 			= [0, 0]
sysParams.enableDacInterleavedMode 	= 0
sysParams.ncoTxMode					= [0, 0]
sysParams.broadcastTxNcoSel			= 0
sysParams.txNco0	 				= [ [Fnco_tx1, Fnco_tx1],
										[5020.0, 5020.0], 
										[8212.5, 8212.5], 
										[6812.5, 6812.5]]
sysParams.txNco1 					= [ [Fnco_tx1, Fnco_tx1],
										[5020.0, 5020.0], 
										[8212.5, 8212.5], 
										[6812.5, 6812.5]]
										
##########              Clock distribution mode setting              ##########

lmkParams.pllEn 					= (custom_clk == 0)
lmkParams.inputClk 					= f0*NinputClk
lmkParams.sysrefFreq				= f0*Nrx/1024
lmkParams.lmkFrefClk				= 1

##########               JESD204 settings AFE 79XX EVM               ##########

if not benchmark_on:
	pass

##########                         Dummy txt                         ##########


if benchmark_on:
	sysParams.topLevelSystemMode	= 'StaticTDDMode'
	sysParams.jesdSystemMode		= [1,1]
	sysParams.jesdLoopbackEn		= 1
	sysParams.LMFSHdRx              = ['24410', '24410', '24410', '24410']#['14610', '14610', '14610', '14610']#
	sysParams.LMFSHdFb              = ["24410","24410"]
	sysParams.LMFSHdTx              = ["24410","24410","24410","24410"]#['14610', '14610', '14610', '14610']#
	sysParams.jesdTxProtocol        = [0,0]
	sysParams.jesdRxProtocol        = [0,0]
	sysParams.serdesFirmware			= True
	sysParams.jesdTxLaneMux				= [0,1,2,3,4,5,6,7]
	sysParams.jesdRxLaneMux				= [0,1,2,3,4,5,6,7]
	sysParams.jesdRxRbd					= [4, 4]
	sysParams.rxJesdTxScr				= [True,True,True,True]
	sysParams.fbJesdTxScr				= [True,True]
	sysParams.jesdRxScr					= [True,True,True,True]
	sysParams.rxJesdTxK					= [16,16,16,16]
	sysParams.fbJesdTxK					= [16,16,16,16]
	sysParams.jesdRxK					= [16,16,16,16]
	logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
	logDumpInst.logFormat				= 0x01
	logDumpInst.rewriteFile				= 1
	logDumpInst.rewriteFileFormat4		= 1
	device.optimizeWrites				= 0
	device.rawWriteLogEn				= 1
	sysParams.jesdABLvdsSync			= 1
	sysParams.jesdCDLvdsSync			= 1
	sysParams.rxJesdTxSyncMux			= [0,0,0,0]
	sysParams.fbJesdTxSyncMux			= [0,0]
	sysParams.jesdRxSyncMux				= [0,0,0,0]
	sysParams.syncLoopBack				= False
	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']}
	device.delay_time = 0
	AFE.deviceBringup()
	AFE.TOP.overrideTdd(15,3,15)
else:
	pass