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.

[参考译文] AFE7950EVM:即使 PLL 锁定后也会出现频率漂移问题。

Guru**** 2382480 points
Other Parts Discussed in Thread: TRF1208, AFE7950EVM, AFE7950
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1504163/afe7950evm-frequency-drifting-issue-even-after-pll-is-locked

器件型号:AFE7950EVM
主题中讨论的其他器件: AFE7950、TRF1208、 TRF1208EVM

工具/软件:

您好、先生/ Ma'am、

借助 AFE7950EVM 和 MPF300t (FPGA)、我们建立了串行器/解串器链路并能够在这些链路之间传输数据。 但问题是我们尝试使用 Latte 软件发送图形数据时、频率会发生漂移、如以下视频所述:

e2e.ti.com/.../VID_5F00_20250403_5F00_153650-_2800_1_2900_.mp4

使用的代码固定在下面:

##############		Read me			##############
#In HSDC Pro DAC tab, Select AFE79xx_2x2TX_14810; Data Rate = 122.88M
#In HSDC Pro ADC tab, Select AFE79xx_2x2RX_14810; Data Rate = 122.88M

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

setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro 
##############		Top Level			##############
sysParams.FRef			= 491.52
sysParams.FadcRx		= 2949.12
sysParams.FadcFb		= 2949.12
sysParams.Fdac			= 2949.12*4
sysParams.externalClockRx=False
sysParams.externalClockTx=False
sysParams.RRFMode		= 0					# RRF 0: 4T4R2F FDD Mode
sysParams.enableDacInterleavedMode=False
													
##############		Digital Chain		##############

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

		#####	FB	#####
sysParams.ddcFactorFb	=	[6,6]					#DDC decimation factor for FB 1 and 2
sysParams.fbNco0		= 	[4000,4000]				#Band0 for FB1 and FB2 
sysParams.fbEnable		=	[False,False]

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


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

		#####	ADC-JESD	#####
sysParams.jesdSystemMode= [3,3]
													#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		= ["14810","14810","14810","14810"]
													# 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		= ["22210","22210"]

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

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

sysParams.jesdTxLaneMux	= [7,1,2,3,6,5,4,0]			# 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		= ["14810","14810","14810","14810"]
sysParams.jesdRxLaneMux	= [6,4,2,3,7,5,1,0]		#[7,6,2,3,4,5,1,0] #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		= [3, 3]
sysParams.jesdRxScr		= [False,False,False,False]
sysParams.jesdRxK		= [8, 8, 8, 8]

		#####	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		= 1474.56 # Valid only when lmkParams.pllEn = False
lmkParams.lmkFrefClk	= True
setupParams.fpgaRefClk	= 245.76 # Should be equal to LaneRate/40 for TSW14J56

##############		Logging		##############
#logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Piersight_4000.txt")
#logDumpInst.logFormat=0x0
logDumpInst.logFormat=0x01
logDumpInst.rewriteFile=1
logDumpInst.rewriteFileFormat4=1
device.optimizeWrites=0
device.rawWriteLogEn=1

device.delay_time = 0
#-------------------------------------------------------------------------------------------------#
#line 119 changes ps
sysParams.useSpiSysref=True
AFE.deviceBringup()

AFE.TOP.overrideTdd(15,3,15)	# bit-wise; 4R,2F,4T
for i in [0,1]:
	for j in [0,1]:
		AFE.JESD.DACJESD[i].dacJesdConstantTestPatternValue(1,j,0,32767,0) # enable, channelNum, bandNum, Ival, Qval


我们验证 PLL 已锁定(通过读取0x66寄存器、变为0x33 (value))。

这种漂移会给我们造成重大问题。 请检查这个问题。

谢谢、此致
Akula Vamsi
Piersight Space
数字设计工程师

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

    尊敬的 Akula:

    您看到的原因是 AFE 和频谱分析仪都可以自由运行。 为了避免此问题、您可以通过 J14为频谱分析仪和 AFE7950提供10MHz 基准、从而对两者进行频率锁定。 您甚至可以从频谱分析仪的背面获取10MHz 基准输出、并通过 SMA J14、LMK_CLK_IN 将其提供给 AFE EVM。 请在您的设置中对此进行测试、问题应该会消失。  

    此致、

    David Chaparro  

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

    嗨、大卫、

    关于您对本问题陈述的建议、我有3个问题。

    如果我没有错、从频谱分析仪(10MHz)获取基准时钟并馈送到 J14 (REF_CLK_LOW)和 J15 (LMK_CLK_IN)是否锁定过程正确?

    需要对下面提到的路径进行任何硬件更改(如需要包含 DNI 或移除包含的元件)

    3.任何 Latte 代码更改都需要从下面提到的代码片段进行。

    ##############		Read me			##############
    #In HSDC Pro DAC tab, Select AFE79xx_2x2TX_14810; Data Rate = 122.88M
    #In HSDC Pro ADC tab, Select AFE79xx_2x2RX_14810; Data Rate = 122.88M
    
    sysParams=AFE.systemParams
    sysParams.__init__();sysParams.chipVersion=chipVersion
    
    setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro 
    ##############		Top Level			##############
    sysParams.FRef			= 491.52
    sysParams.FadcRx		= 2949.12
    sysParams.FadcFb		= 2949.12
    sysParams.Fdac			= 2949.12*4
    sysParams.externalClockRx=False
    sysParams.externalClockTx=False
    sysParams.RRFMode		= 0					# RRF 0: 4T4R2F FDD Mode
    sysParams.enableDacInterleavedMode=False
    													
    ##############		Digital Chain		##############
    
    		#####	RX	#####
    sysParams.ddcFactorRx	=	[24,24,24,24]			#DDC decimation factor for RX A, B, C and D
    sysParams.rxNco0		= 	[[9500,9500],			#Band0, Band1 for RXA 
    							[9500,9500],        		#Band0, Band1 for RXB 
    							[9500,9500],        	#Band0, Band1 for RXC 
    							[9500,9500]]        	#Band0, Band1 for RXD 
    
    		#####	FB	#####
    sysParams.ddcFactorFb	=	[6,6]					#DDC decimation factor for FB 1 and 2
    sysParams.fbNco0		= 	[4000,4000]				#Band0 for FB1 and FB2 
    sysParams.fbEnable		=	[False,False]
    
    		#####	TX	#####
    sysParams.ducFactorTx	=	[96,96,96,96]			#DUC interpolation factor for TX A, B, C and D
    sysParams.txNco0		= 	[[9500,9500],			#Band0, Band1 for TXA 
    							[9500,9500],        		#Band0, Band1 for TXB 
    							[9500,9500],        	#Band0, Band1 for TXC 
    							[9500,9500]]        	#Band0, Band1 for TXD
    
    
    ##############		JESD		##############
    
    		#####	ADC-JESD	#####
    sysParams.jesdSystemMode= [3,3]
    													#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		= ["14810","14810","14810","14810"]
    													# 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		= ["22210","22210"]
    
    sysParams.rxJesdTxScr	= [False,False,False,False]
    sysParams.fbJesdTxScr	= [True,True]
    
    sysParams.rxJesdTxK		= [8,8,8,8]
    sysParams.fbJesdTxK		= [8,8]
    
    sysParams.jesdTxLaneMux	= [7,1,2,3,6,5,4,0]			# 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		= ["14810","14810","14810","14810"]
    sysParams.jesdRxLaneMux	= [6,4,2,3,7,5,1,0]		#[7,6,2,3,4,5,1,0] #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		= [3, 3]
    sysParams.jesdRxScr		= [False,False,False,False]
    sysParams.jesdRxK		= [8, 8, 8, 8]
    
    		#####	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		= 1474.56 # Valid only when lmkParams.pllEn = False
    lmkParams.lmkFrefClk	= True
    setupParams.fpgaRefClk	= 245.76 # Should be equal to LaneRate/40 for TSW14J56
    
    ##############		Logging		##############
    #logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
    logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Piersight_4000.txt")
    #logDumpInst.logFormat=0x0
    logDumpInst.logFormat=0x01
    logDumpInst.rewriteFile=1
    logDumpInst.rewriteFileFormat4=1
    device.optimizeWrites=0
    device.rawWriteLogEn=1
    
    device.delay_time = 0
    #-------------------------------------------------------------------------------------------------#
    #line 119 changes ps
    sysParams.useSpiSysref=True
    AFE.deviceBringup()
    
    AFE.TOP.overrideTdd(15,3,15)	# bit-wise; 4R,2F,4T
    for i in [0,1]:
    	for j in [0,1]:
    		AFE.JESD.DACJESD[i].dacJesdConstantTestPatternValue(1,j,0,32767,0) # enable, channelNum, bandNum, Ival, Qval



    谢谢、
    Akula Vamsi
    数字设计工程师
    Piersight Space

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

    尊敬的 Akula:

    只需要向 SMA J14 (LMK_CLK_IN)提供10MHz 基准以进行基准锁定。 AFE 配置不需要进行任何更改即可支持该功能、因为在使用 LMK PLL 时、LMK 配置默认已支持该功能。  

    所需的唯一硬件修改是移除电路板底部122.88MHz 晶体旁边的一个电阻器 R295。  

    将10MHz 提供给 J14后、您应该会看到"LMK Locked" LED D4导通。  

    此致、

    David Chaparro  

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

    嗨、大卫、

    我实际上面临着小混乱。
    我们所指的文档是"6643679A_SCH"、即 J15就是 LMK_CLK_IN。 这会给 R295电阻器带来疑问、您能否确认一下您所指的是下面提到的同一电阻器。


    为了说明 David、我们使用(AFE7950-TRF1208) EVM。


    谢谢
    Akula Vamsi
    数字设计工程师
    Piersight Space

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

    尊敬的 Akula:

    如您所述、我们所指的电路板之间存在差异。 我要引用的一个是"AFE7950EVM"、它与"AFE7950-TRF1208EVM"不同。 如果使用的是 AFE7950-TRF1208EVM、则应将10MHz 提供给 LMK_CLK_IN、J15。 需要卸下的电阻器(如果已安装)为 R372 (如下图所示)。  

    此致、

    David Chaparro  

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

    嗨、大卫、

    希望您做得好。

    感谢输入、在提供10MHz 参考时钟后停止漂移。

    以下是供参考的介质。



    e2e.ti.com/.../VID_5F00_20250429_5F00_161553.mp4

    但需要澄清几个方面、因为我们最终将根据该设计构建我们的定制电路板、其中不能免费接受频率漂移。


    1->务必始终向 LMK_CLK_IN 引脚提供10MHz、以避免频率漂移、还是仅为频谱分析仪一致性提供10MHz。 为了消除这个疑问、我从射频发生器获取输入来检查频率漂移、并且频率是刚性的。 仅对于 AFE 输出、频率才会漂移。
    2->如果出现上述情况,我们需要始终为 lmk_clk_in 提供一个10MHz 参考时钟,并轮询 status_pld_2以避免频率漂移。

    请把一些关于这个话题大卫,我们已经严重卡住了这里从很长一段时间。

    谢谢、此致
    Akula Vamsi.
    数字设计工程师。
    Piersight Space。



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

    您好、David:

    对此有任何更新?



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

    嗨、大卫、

    我希望并祝愿您一切顺利。

    对此有任何更新?

    请仔细研究一下。

    谢谢、
    Akula Vamsi