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:带数据速率设置的自定义采样率

Guru**** 2390755 points
Other Parts Discussed in Thread: TRF1208, AFE7950, AFE7950EVM

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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1294471/afe7950evm-custom-sample-rate-with-data-rate-setting

器件型号:AFE7950EVM
主题中讨论的其他器件:TRF1208AFE7950

您好!
我计划使用 RF=3.55GHz (12MHz BW)输入、以默认设置(2949.12MSPS)并将 EVM (无 TRF1208选项)与 ZCU102 FPGA 连接来测试 AFE7950 ADC。 我有几个进步的问题。

1) NCO
在 Latte、"AFE7950 -> bringup"下、您建议为3.55GHz 射频输入设置哪个 NCO 编号? 您是否建议 3550MHz 的 NCO 将其置于直流模式? 由于该 ADC 本身使用子样本、因此我想知道与射频输入相同的 NCO 编号是否仍然有效。 从频率规划器电子表格中、我发现588.88MHz 的 NCO、Put Alias 中心为6MHz、为12MHz、BW 信号。 该 NCO 数是否仍然有效?

2) 2)抽取更改
配置与1)相同、但如果我要将抽取更改为48、以便将数据速率更改为61.44MHz、那么还需要更改哪些内容。 是否需要更改 FPGA/JESD 频率? 如果是、您能否建议如何做到这一点?

3)最后、我想具有156.25MHz 参考时钟的自定义采样率、如下所示。
参考 时钟:156.25MHz
ADC 采样率:2500MSPS
抽取率:20
NCO:1044MHz (待定、请推荐 NCO)
输出数据速率:125Mbps

为此、我考虑直接馈送156.25MHz J3813 (REF_CLK_LOW)以实现2500MSPS、抽取20将使数据速率为125MSPS。 现在问题是、您是否有一个实现这个的示例文件? 如果没有、您能否提供一个? 我认为这需要更改 FPGA/JESD 数据时钟、需要重新配置 LMK。 请告知此建议。 或者、如果您认为 使用 15.625MHz XO 替换板载120.88MHz 更适合此测试、请告知此建议。

提前表示感谢。

永浩

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

    有人能回答这个问题吗? 我们如何在 Latte 的 AFE7950EVM 上以及在何处配置 LMK 以获得新的156.25MHz 输出? 我考虑将122.88MHz VCXO 与156.25MHz 1交换以向 AFE7950产生156.25MHz 时钟。 还需要更改 FPGA 和 JESD 时钟速率、但不知道如何操作。

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

    尊敬的 Youngho:

    如果您想使用156.25MHz 的基准频率、可以遵循两种方法。

    第一个选项是为 LMK 提供一个外部时钟、该外部时钟可分频、以提供156.25MHz 和 FPGA 时钟。 下面的脚本已配置为通过 SMA J14、LMK_CLK_IN 为 LMK 提供5dBm 的625MHz 时钟。 625MHz 时钟分频为 AFE 的156.25MHz 和 FPGA 时钟的125MHz。  

    我在脚本中将 NCO 更新为3520MHz、以便您可以捕获3550Mhz 音调。  

    e2e.ti.com/.../AFE7950_5F00_4T4R_5F00_125M.py

    第二种方法是将122.88MHz VCXO 替换为156.25MHz VCXO、如您所述。 由于这种方法、您需要更新 LMK 参数、如下所示、以便使用正确的 VCO 频率。  

    lmkParams.pllEn			= True
    lmkParams.inputClk		= 625 # Valid only when lmkParams.pllEn = False
    lmkParams.lmkFrefClk	= True
    setupParams.fpgaRefClk	= 125 # Should be equal to LaneRate/40 for TSW14J56
    lmkParams.xtalFreq = 156.25
    lmkParams.lmkVcoFreq=2500

    此致、

    大卫·查帕罗

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

    David、您好!

    在我更改"setupParams.fpgaRefClk = 500"和"sysParams"之前、您给出的代码将出现"无 PLL 锁定"错误。 FRef = 500"。 现在 PLL 锁定、但产生串行器/解串器错误。

    这是我用于您查看的代码。 此后将出现错误消息。  仅供参考、我计划使用4xADC 和4xDAC、8个通道。 请检查 LMFSHd 设置。

    ##############		Read me			##############
    #In HSDC Pro DAC tab, Select AFE79xx_2x2TX_24410; Data Rate = 125M
    #In HSDC Pro ADC tab, Select AFE79xx_2x2RX_24410; Data Rate = 125M ---> To capture 4 RX channels
    
    sysParams=AFE.systemParams
    sysParams.__init__();sysParams.chipVersion=chipVersion
    
    setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro 
    ##############		Top Level			##############
    setupParams.fpgaRefClk	= 500 # Should be equal to LaneRate/40 for TSW14J56
    sysParams.FRef			= 500 # 
    #sysParams.FRef			= 625
    sysParams.FadcRx		= 2500
    sysParams.FadcFb		= 2500
    sysParams.Fdac			= 2500*4
    sysParams.externalClockRx=False
    sysParams.externalClockTx=False
    													
    ##############		Digital Chain		##############
    
    		#####	RX	#####
    sysParams.ddcFactorRx	=	[20,20,20,20]				#DDC decimation factor for RX A, B, C and D
    sysParams.rxNco0		= 	[[3520,9500],			#Band0, Band1 for RXA 
    							[3520,9500],        	#Band0, Band1 for RXB 
    							[3520,9500],        	#Band0, Band1 for RXC 
    							[3520,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	=	[80,80,80,80]			#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		= ["24410","24410","24410","24410"]
    sysParams.LMFSHdRx		= ["48410","48410","48410","48410"]
    													# 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		= ["24410","24410","24410","24410"]
    sysParams.LMFSHdTx		= ["48410","48410","48410","48410"]
    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	= 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.xtalFreq = 156.25
    lmkParams.lmkVcoFreq=2500
    lmkParams.pllEn			= True
    lmkParams.inputClk		= 625 # Valid only when lmkParams.pllEn = False
    lmkParams.lmkFrefClk	= True
    
    
    
    
    ##############		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

    我收到的错误消息如下所示。

    PLL Locked
    AFE PLL Configured.
    AFE SerDes Configured.
    AFE Digital Chains configured.
    AFE TX Analog configured.
    AFE RX Analog configured.
    AFE FB Analog configured.
    AFE JESD configured.
    AFE AGC configured.
    AFE GPIO configured.
    Sysref Read as expected
    ###########Device DAC JESD-RX 0 Link Status###########
    Serdes-FIFO error for lane 0: 1
    Serdes-FIFO error for lane 1: 1
    Serdes-FIFO error for lane 2: 1
    Serdes-FIFO error for lane 3: 1
    Comma Align Lock Lane0: False; Please check if the transmitter is sending data and eye is good.
    Comma Align Lock Lane1: False; Please check if the transmitter is sending data and eye is good.
    Comma Align Lock Lane2: False; Please check if the transmitter is sending data and eye is good.
    Comma Align Lock Lane3: False; Please check if the transmitter is sending data and eye is good.
    CS State TX0: 0b00000000 . It is expected to be 0b10101010
    FS State TX0: 0b00000000 . It is expected to be 0b01010101
    Couldn't get the link up for device RX: 0; Alarms: 0xf000
    ###################################
    AFE Configuration Complete
    #Done executing .. AFE7950/bringup/TI_IP_ConfigAfe.py
    #End Time 2023-12-14 12:22:36.515000
    #Execution Time = 35.131000042 s 
    #================ ERRORS:9, WARNINGS:1 ================#

    谢谢你。

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

    尊敬的 Youngho:

    您正在显示的错误指向 FPGA 存在问题。 在配置 AFE 之前、您能否确认 FPGA 已配置并正在发送数据。 此外、使用 TSW14J56/57时、FPGA 时钟应等于 LaneRate/40。

    此致、

    大卫·查帕罗