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 输出生成

Guru**** 2470720 points
Other Parts Discussed in Thread: AFE7950EVM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1228350/afe7950-afe7950evm---dac-output-generation

器件型号:AFE7950

尊敬的先生:

使用 KCU105评估板验证 AFE7950EVM。

DAC 输出不正确、请参阅下图。

* RX 和 TX JESD 链路均已建立。

*使用的配置 LMFS-2881、单频带模式、使用的链路数量-1  

*生成频率 FPGA 侧为30MHz ,txNCO 为1GHz

* 使用的数据格式2881

*要验证数据格式,请在 RX 通道中发送斜坡数据, 无法 若要查看 RXDATA 中的斜坡、通过更改通道还会选中  

您能解决这个问题吗?

'''
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 

您能否验证 AFE LMK 代码?

此致、

克里希纳韦尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Krishnaveni:

    您是否将 TI JESD204 IP 用于此参考设计?

    我注意到的一点是、如果您使用的是4T4R 并且只有两个通道、那么在 Latte 脚本中、您应该将 LMFS 设置为"14810"。 请注意、AFE 设计为器件中的两个子芯片(2T2R1F)。 因此、Latte 中给出的参数对应于每个子芯片。  

    另一个需要检查的是 SERDES 通道的通道映射和通道极性。 AFE EVM 的通道可能未按一对一的方式布线、并且可能会反相。 您能否确认您已注意到 FPGA 侧的通道极性、因为脚本中尚未执行此操作?

    此致、

    大卫·查帕罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

     感谢您的回复。

    1.我没有使用 TI JESD204IP、使用的是 Xilinx JESD204BIP。

    2.注意通道映射,之前我已经使用1Link 验证了44210。

    2. 如果我将 LMFS 值更改为14810,AFE 中将有2个链接。  

    3.应该将 FPGA 侧更改为每个14810模式2个 JESD204IP、还是1个 JESD204具有28810?

    4.现在我必须使用 SYNC_AB 和 SYNC_CD 作为 LVDS、对于每个相应的 JESD204IP?

    此致、

    克里希纳韦尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有谁能回答我的问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Krishnaveni:

    应将 FPGA 配置为查看28810的1个链路、但在 Latte 软件中、您会输入14810、因为这适用于 AFE 中的每个2T2R1F。 在此模式下、由于仍然只有一个链路、因此您只需要使用单个 SYNC 引脚、我们只需在 Latte 软件中指定 LMFS Per 2T2R1F。  

    此外、在 AFE 上、您启用了扰频功能、因此 FPGA 也应启用此功能。  

    此致、

    大卫·查帕罗