Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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: AFE7950EVM - DAC Output Generation

Part Number: AFE7950

Hi sir ,

Validating AFE7950EVM using KCU105 Eval Board.

DAC Output is not Proper, Please Refer below image.

* Both RX and TX JESD links are Up .

* Configuration used LMFS-2881, single Band Mode, No of LINKs used -1 

* Generating Frequency FPGA side is 30MHz and txNCO is 1GHz

*  Data Format used 2881

*To Verify the Data Format, Sent Ramp Data in RX lanes, unable to see the RAMP in RXDATA, by changing the lanes also checked 

Can you please solve this problem ?

'''
Validation :  AFE79xx Library Version 
				v1.67, v1.74
sysParams.__init__();sysParams.chipVersion=chipVersion # Set sysParms to default
setupParams.skipFpga 				= 1
sysParams							=	AFE.systemParams
setupParams.fpgaRefClk 				= 122.88#184.32#
AFE.systemStatus.loadTrims			= 1

sysParams.fbEnable 					= [False]*2
sysParams.externalClockTx			= False
sysParams.externalClockRx			= False
sysParams.FRef                    	= 491.52
sysParams.FadcRx                  	= 2949.12
sysParams.FadcFb				  	= 2949.12
sysParams.Fdac                    	= 2949.12*4

sysParams.enableDacInterleavedMode	= True 					#DAC interleave mode to save power consumption. Fs/2 - Fin spur occurs

sysParams.modeTdd 					= 0		
										# 0- Single TDD Pin for all Channels
										# 1- Separate Control for 2T/2R/1F
										# 2- Separate Control for 1T/1R/1F			

sysParams.RRFMode 					= 0   #4T4R2F FDD mode
sysParams.jesdSystemMode			= [3,3]
										#SystemMode 0:	2R1F-FDD						; rx1-rx2-fb-fb
										#SystemMode 1:	1R1F-FDD						; rx1-rx1-fb-fb
										#SystemMode 2:	2R-FDD							; rx1-rx1-rx2-rx2
										#SystemMode 3:	1R								; rx1-rx1-rx1-rx1
										#SystemMode 4:	1F								; fb-fb-fb-fb
										#SystemMode 5:	1R1F-TDD						; rx1/fb-rx1/fb-rx1/fb-rx1/fb
										#SystemMode 8:	1R1F-TDD 1R-FDD	(FB-2Lanes)(RX1 RX2 interchanged)		; rx2/fb-rx2/fb-rx1-rx1


sysParams.jesdLoopbackEn			= 0 #Make it 1 to Enable the JESDTX to JESDRX internal loopback
sysParams.LMFSHdRx                	= ["28810","28810","28810","28810"]	
										# The 2nd and 4th are valid only for jesdSystemMode values in (2,6,7,8). For other modes, select 4 converter modes for 1st and 3rd.
sysParams.LMFSHdFb                	= ["22210","22210"]
sysParams.LMFSHdTx                	= ["28810","28810","28810","28810"]
sysParams.jesdTxProtocol            = [0,0]
sysParams.jesdRxProtocol            = [0,0]
sysParams.serdesFirmware			= True 		# If you want to lead any firmware, please speify the path here. Otherwise it will not write any firmware
sysParams.jesdTxLaneMux				= [0,1,2,3,4,5,6,7]	
												# Enter which lanes you want in each location. 
												# Note that across 2T Mux is not possible in 0.5.
												# 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]]
sysParams.serdesTxLanePolarity		= [False]*8
sysParams.jesdRxLaneMux				= [0,1,2,3,4,5,6,7]	#[0,1,2,3,4,5,7,6]
												# Enter which lanes you want in each location.
												# Note that across 2R Mux is not possible in 0.5.
												# 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.serdesRxLanePolarity	= [False]*8
sysParams.jesdRxRbd					= [4, 4]

sysParams.rxJesdTxScr				= [True]*4
sysParams.fbJesdTxScr				= [True]*2
sysParams.jesdRxScr					= [True]*4

sysParams.rxJesdTxK					= [16]*4
sysParams.fbJesdTxK					= [16]*2
sysParams.jesdRxK					= [16]*4

sysParams.ncoFreqMode 				= "1KHz"
	
sysParams.txNco0					= 	[[1000,1800],		#Band0, Band1 for TxA for NCO0
										[1000,1800],        #Band0, Band1 for TxB for NCO0
										[1000,1800],        #Band0, Band1 for TxC for NCO0
										[1000,1800]]        #Band0, Band1 for TxD for NCO0

sysParams.rxNco0					= 	[[1000,1800],		#Band0, Band1 for RxA for NCO0
										[1000,1800],        #Band0, Band1 for RxB for NCO0
										[1000,1800],        #Band0, Band1 for RxC for NCO0
										[1000,1800]]        #Band0, Band1 for RxD for NCO0

sysParams.fbNco0					= 	[500,1800]			#FBA, FBC for NCO0

sysParams.numBandsRx				= [0]*4					# 0 for single, 1 for dual
sysParams.numBandsFb				= [0,0]				
sysParams.numBandsTx				= [0,0,0,0]

sysParams.ddcFactorRx             	= [6*4]*4			# DDC decimation factor for RX A, B, C and D
sysParams.ddcFactorFb             	= [6*4]*4
sysParams.ducFactorTx             	= [24*4]*4


## The following parameters sets up the LMK04828 clocking schemes
lmkParams.pllEn						=	True#False
lmkParams.inputClk					=	1474.56#737.28
lmkParams.sysrefFreq				=	2949.12/1024
lmkParams.lmkFrefClk				=	True

## The following parameters sets up the register and macro dumps
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat				= 0x0
logDumpInst.rewriteFile				= 1
logDumpInst.rewriteFileFormat4		= 1
device.optimizeWrites				= 0
device.rawWriteLogEn				= 1
lmk.rawWriteLogEn					= 1

## The following parameters sets up the SYNCIN and SYNCOUT to interface with the TSW14J57
sysParams.jesdABLvdsSync			= 0
sysParams.jesdCDLvdsSync			= 0
sysParams.rxJesdTxSyncMux			= [0,0,0,0]
sysParams.fbJesdTxSyncMux			= [0,0]
sysParams.jesdRxSyncMux				= [0,0,0,0]		#[0,0,1,1]
sysParams.syncLoopBack				= True


## The following parameters sets up the GPIOs
sysParams.gpioMapping={
		'H8': 'ADC_SYNC0',
		'H7': 'DAC_SYNC0',
		'N8': 'ADC_SYNC2',
		'N7': 'ADC_SYNC3',
		'H9': 'ADC_SYNC1',
		'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
setupParams.skipLmk	=	False
AFE.initializeConfig()
lmkParams.sysrefFreq = AFE.systemStatus.sysrefFreq
lmkParams.lmkPulseSysrefMode = False
AFE.LMK.lmkConfig()

## Initiates AFE79xx Bring-up
setupParams.skipLmk	=	True
AFE.deviceBringup()

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

for i in range(4): AFE.DSA.setRxDsa(i,4)

### for ADC Ramp Out
 for i in range(3):
 	AFE.JESD.ADCJESD[0].adcRampTestPattern(i,1,1)
 	AFE.JESD.ADCJESD[1].adcRampTestPattern(i,1,1) #chNo, En, RampInc 

can you please verify AFE LMK code?

Regards ,

Krishnaveni

  • Hi Krishnaveni,

    Are you using the TI JESD204 IP for this reference design?

    One thing I noticed is that if you are using 4T4R and only two lanes then in the Latte script you should set the LMFS to '14810'. Please note that the AFE is designed as two sub-chips (2T2R1F) within the device. Therefore, the parameters given in Latte correspond to each sub-chip. 

    Another thing to check is the lane mapping and lane polarity of the SERDES lanes. The lanes from the AFE EVM may not be routed one to one and may be inverted. Can you confirm that you have taken care of the lane polarity on the FPGA side as this has not been done on the in the script?

    Regards,

    David Chaparro

  • HI David,

     Thanks for Reply,

    1. I am not Using TI JESD204IP, Using Xilinx JESD204BIP.

    2. Taken care Lanes Mapping, Previously I have Validated 44210 using 1Link.

    2.  If I change LMFS Value to 14810, I will have 2 LINKs in AFE. 

    3. Should I have to Change FPGA side to 2 JESD204IPs each 14810 mode or 1 JESD204 having 28810?

    4. Now I have to use SYNC_AB and SYNC_CD as LVDS and for Each corresponding JESD204IP?

    Regards,

    Krishnaveni

  • Is there anyone who can answer this question I asked?

  • Hi Krishnaveni,

    The FPGA should be configured to see 1 link of 28810, but in the Latte software you would enter 14810, since this is for each 2T2R1F in the AFE. In this mode you would only need to use a single SYNC pin as there is still only a single link, we are just specifying the LMFS per 2T2R1F in the Latte software. 

    Also, on the AFE you have scrambling enabled so the FPGA should also have this enabled. 

    Regards,

    David Chaparro