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:是否有可实现内部通道之间 NCO 相位对齐的功能?

Guru**** 2468610 points
Other Parts Discussed in Thread: AFE7950, LMK04828, AFE7950EVM

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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1261203/afe7950-is-there-a-feature-that-allows-alignment-of-nco-phase-between-internal-channels

器件型号:AFE7950
主题中讨论的其他器件: LMK04828

您好!

我正在使用两个 AFE7950器件开发毫米波应用。
我的板包含 MPSoC (XCZU11EG@AMD)+ LMK04828 + AFE7950 (x2)配置。

AFE7950器件是否适用于我的毫米波应用、包括波束形成?

2. AFE7950中是否有允许在内部通道之间校准 NCO 相位的功能?
TX/RX 通道之间似乎存在相位差。
在加电/断电时、相位差保持恒定(例如、Ch2-Ch1:55°)。
这可能是由于 AFE7950中的内部 NCO 相位差所致。
AFE7950中是否有允许内部通道之间 NCO 相位对齐的功能?
或者、我是否应该使用 NCOx_PHASE_OFFSET 寄存器来纠正此问题?

谢谢!

此致、

帕克。

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

    大家好、帕克

    是的、AFE7950适用于波束形成等毫米波应用。  

    在 AFE 内部、NCO 的相位对齐。 您看到的差异是由路由差异导致的。 在 AFE7950基板和 AFE7950EVM 上、每个通道的布线并不相同、这会导致您看到的相位差恒定不变。  

    如果您希望对齐 NCO 以使相位差为0、我建议使用 NCOx_PHASE_OFFSET 寄存器。  

    此致、

    大卫·查帕罗  

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

    尊敬的 David:

    感谢您的答复。

    遗憾的是、在本例中、AFE7950内的相位对齐似乎无法按预期工作(随附了 Latte Log 文件)。

    我通过分离器(1:2)将 CW 信号输入到 RX 通道。
    1. 4000MHz 4000.1MHz


    =>通道1和通道3之间的相位差:-65.405˚(-1816.8ns)
    2. 4000MHz 4000.12MHz


    =>通道1和通道3之间的相位差:-65.443˚(-1514.9ns)

    如果 AFE7950内的 NCO 相位对齐、并且相位差异是由布线差异导致的、则绝对时序不应存在差异。

    在这种情况下、似乎是通道之间的 NCO 相位未对准的问题。

    您能否从随附的 Latte Log 文件中提供指示 NCO 阶段对齐位置的信息?

    请提供有关解决该问题的潜在解决方案的指导。

    谢谢你。

    此致、

    帕克。

    e2e.ti.com/.../2023.08.21_5F00_mmWave_5F00_AFE7950_5F00_R01.txt

     

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

    我还有一个问题。

    对于 RX 通道、我已经确认可以使用 RX_DDC_BAND0_NCO0_PHASE_OFFSET 寄存器来改变相位。

    但是、对于 TX 通道、即使我将值写入 TX_DUC_BAND0_MIXER1_NCO0_PHASE_OFFSET 寄存器、输出相位也不会改变。

    是否需要执行任何其他操作来更改 TX 通道的相位?

    此致、

    帕克。

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

    我还有一些额外的信息需要询问。

    AFE795EVM 电路板测试
    在使用 E/V 套件进行测试期间、我已确认 RX Ch1和 Ch2之间出现了相位差。
    即使更改频率后、相位差(Angle)也保持不变。
    要在 E/V 套件上将通道之间的相位差校正为零、使用 NCOx_PHASE_OFFSET 寄存器是否正确?
       

    TX 通道 NCO 相位偏移
    在前面的实验中、即使将值写入 TX_DUC_BAND0_MIXER1_NCO0_PHASE_OFFSET 寄存器时、输出相位也不发生变化。  
    不过、在更改 VCO (7372.8MHz -> 11796.48MHz (=DAC 采样时钟))后、我确认了输出相位确实发生了变化。  
    在修改 VCO 之前输出相位没有变化是否有特定的原因?

    您能回答我的问题吗?

    此致、

    帕克。

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

    大家好、帕克

    应使用 Ox_Phase_Offset 52寄存器将通道间的相位差调整为零。 预计适用于 Rx 和 Tx。 我正在我的工作台上进行测试、以了解它为什么不适用于 7372.8MHz 案例。  

    此致、

    大卫·查帕罗

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

    大家好、帕克

    您能否共享用于7372.8MSPS 案例的脚本?  

    我使用以下脚本进行了测试、在更新 Tx NCO 阶段时没有遇到任何问题。

    ##############		Read me			##############
    #In HSDC Pro DAC tab, Select AFE79xx_2x2TX_44210; Data Rate = 491.52M
    #In HSDC Pro ADC tab, Select AFE79xx_2x2RX_44210; Data Rate = 491.52M ---> To capture 4 RX channels
    
    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		= 2457.6
    sysParams.FadcFb		= 2457.6
    sysParams.Fdac			= 7372.8
    sysParams.externalClockRx=False
    sysParams.externalClockTx=False
    													
    ##############		Digital Chain		##############
    
    		#####	RX	#####
    sysParams.ddcFactorRx	=	[5,5,5,5]				#DDC decimation factor for RX A, B, C and D
    sysParams.rxNco0		= 	[[7000,9500],			#Band0, Band1 for RXA 
    							[7000,9500],        	#Band0, Band1 for RXB 
    							[7000,9500],        	#Band0, Band1 for RXC 
    							[7000,9500]]        	#Band0, Band1 for RXD 
    
    		#####	FB	#####
    sysParams.fbEnable		=	[False,False]
    sysParams.ddcFactorFb	=	[6,6]					#DDC decimation factor for FB 1 and 2
    sysParams.fbNco0		= 	[9500,9500]				#Band0 for FB1 and FB2 
    
    		#####	TX	#####
    sysParams.ducFactorTx	=	[15,15,15,15]			#DUC interpolation factor for TX A, B, C and D
    sysParams.txNco0		= 	[[7000,9500],			#Band0, Band1 for TXA 
    							[7000,9500],        	#Band0, Band1 for TXB 
    							[7000,9500],        	#Band0, Band1 for TXC 
    							[7000,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		= ["44210","44210","44210","44210"]
    													# 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	= [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	= 1	#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	= 245.76 # 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
    lmk.rawWriteLogEn=1
    
    device.delay_time = 0
    #-------------------------------------------------------------------------------------------------#
    AFE.deviceBringup()
    
    AFE.TOP.overrideTdd(15,3,15)	# bit-wise; 4R,2F,4T

    此致、

    大卫·查帕罗