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.

[参考译文] DAC JESD-Rx 链路错误

Guru**** 2471150 points


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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1200074/dac-jesd-rx-link-errors

器件型号:AFE7920EVM

大家好、

在收到您的大量意见后、我们终于成功使 AFE EVM 与我们的 FPGA (Kintex 7系列)进行通信。

但是、在执行此操作时、我们遇到了一些有关 JESD 协议的问题。 实际上、Latte 给出的误差如下所示:
###################### 设备 DAC JESD-RX 0链路状态#######

通道0:1的 SERDES-FIFO 错误

通道1:1的 SERDES-FIFO 错误

通道2:1的 SERDES-FIFO 错误

通道3:1的 SERDES-FIFO 错误

逗号对齐锁定区域0:错误;请检查发送器是否正在发送数据且眼图良好。

逗号对齐锁定区域1:错误;请检查发送器是否正在发送数据且眼图良好。

逗号对齐锁定区域2:错误;请检查发送器是否正在发送数据和眼图是否正常。

逗号对齐锁定区域3:错误;请检查发送器是否正在发送数据且眼图良好。

CS State TX0: 0b00000000。 预计为0b10101010

FS 状态 TX0: 0b00000000。 预计为0b01010101

无法为器件 RX:0建立链路;警报:0xF000

########################################################

###################### 设备 DAC JESD-RX 1链路状态##############

通道0:1的 SERDES-FIFO 错误

通道1:1的 SERDES-FIFO 错误

通道2:1的 SERDES-FIFO 错误

通道3:1的 SERDES-FIFO 错误

逗号对齐锁定区域0:错误;请检查发送器是否正在发送数据且眼图良好。

逗号对齐锁定区域1:错误;请检查发送器是否正在发送数据且眼图良好。

逗号对齐锁定区域2:错误;请检查发送器是否正在发送数据和眼图是否正常。

逗号对齐锁定区域3:错误;请检查发送器是否正在发送数据且眼图良好。

CS State TX0: 0b00000000。 预计为0b10101010

FS 状态 TX0: 0b00000000。 预计为0b01010101

无法为器件 RX 建立链路:1;警报:0xF000

########################################################

#DONE 正在执行... AFE79xx/bringup/AWS_VLBI_test_script_working.py

#结束时间2023-02-24 13:50:04.073000

#执行时间= 31.3729999065秒

##==================== 错误:18,警告:0=========== #

此外、即使存在该误差、当 FPGA 尝试向 AFE DAC 发送 BOC 类型信号时、频谱分析仪上仍然有一些信号:

不过、观测频谱会波动、并且几乎只是由于 JESD 接口中的误差而产生一些赝像。

在 FPGA 端、我们使用与 Latte 脚本44210相同的 LMFSHd 参数、其中 K 参数设置为16。

我们使用的 Latte 代码如下所示:

##########                  Board bringup procedure                  ##########

#mainWindow.clearSession()
#base_directory = "C:\\Users\\a0217443\\Documents\\Texas Instruments\\Latte\\projects\\AFE79xx\\bringup\\"
#mainWindow.runFile(base_directory + r"setup.py")
#mainWindow.runFile(base_directory + r"devInit.py")

##########                     General settings:                     ##########

# VLBI Tx frequency plan details:
custom_clk 							= 3

ncoFreqModes 						= ["1KHz", "FCW"]
Fnco_tx1 							= 2245.0
Fnco_rx1							= 500.0

if (custom_clk == 1):
	f0 								= 163.68
	Nrx								= 18
	Nddc							= 6
	Ntx 							= 4
	NFRef							= 1
	NfpgaRefClk						= 1
	NinputClk						= 1
	LMFSHdRx              			= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']#
	LMFSHdFb						= ['22210', '22210']
	LMFSHdTx						= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']#
	syncLoopBack 					= False
	jesdLoopbackEn					= True
elif custom_clk == 0:
	f0 								= 122.88
	Nrx								= 24
	Nddc							= 12
	Ntx 							= 3
	NFRef							= 4
	NfpgaRefClk						= 2
	NinputClk						= 12
	LMFSHdRx              			= ['24410', '24410', '24410', '24410']
	LMFSHdFb						= ['24410', '24410']
	LMFSHdTx						= ['24410', '24410', '24410', '24410']
	syncLoopBack					= False
	jesdLoopbackEn					= True
elif custom_clk == 2:
	f0 								= 163.68
	Nrx								= 12
	Nddc							= 6
	Ntx 							= 3#6
	NFRef							= 1
	NfpgaRefClk						= 1
	NinputClk						= 1
	LMFSHdRx              			= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']
	LMFSHdFb						= ['22210', '22210']
	LMFSHdTx						= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']
	syncLoopBack 					= False
	jesdLoopbackEn					= True
elif custom_clk == 3:
	f0 								= 163.68
	Nrx								= 12
	Nddc							= 6
	Ntx 							= 3#6
	NFRef							= 1
	NfpgaRefClk						= 1
	NinputClk						= 1
	LMFSHdRx              			= ['44210', '44210', '44210', '44210']
	LMFSHdFb						= ['22210', '22210']
	LMFSHdTx						= ['44210', '44210', '44210', '44210']
	syncLoopBack 					= True
	jesdLoopbackEn					= False
	
Nduc								= Nddc*Ntx

# AFE general settings
AFE.systemStatus.loadTrims			= 1
setupParams.skipFpga 				= 1
setupParams.fpgaRefClk 				= f0*NfpgaRefClk
sysParams							= AFE.systemParams
sysParams.FRef 						= f0*NFRef

##########               Analog settings: AFE 79XX EVM               ##########

# General system settings	
sysParams.RRFMode   				= 0
sysParams.modeTdd					= 0
sysParams.adcSelect0				= [0, 1, 2]
sysParams.adcSelect1				= [0, 1, 2]
sysParams.useSpiSysref				= 0
sysParams.sysrefTermination			= 0
sysParams.ncoFreqMode				= ncoFreqModes[custom_clk != 0]
sysParams.spiMode					= 1

# ADC settings
sysParams.FadcRx 					= f0*Nrx
sysParams.rxEnable 					= [1, 1, 1, 1]
sysParams.externalClockRx 			= 0
sysParams.halfRateModeRx 			= [0, 0]
sysParams.ddcFactorRx 				= [Nddc, Nddc, Nddc, Nddc]
sysParams.numBandsRx 				= [0, 0, 0, 0]
sysParams.numRxNCO 					= 1
sysParams.ncoRxMode					= [0, 0]
sysParams.broadcastRxNcoSel			= 0
sysParams.rxNco0 					= [ [Fnco_rx1, Fnco_rx1], 
										[870.0, 870.0], 
										[637.5, 637.5], 
										[637.5, 637.5]]
sysParams.rxNco1 					= [ [Fnco_rx1, Fnco_rx1], 
										[870.0, 870.0], 
										[637.5, 637.5], 
										[637.5, 637.5]]

# FB settings
sysParams.FadcFb					= sysParams.FadcRx
sysParams.fbEnable 					= [0, 0]
sysParams.halfRateModeFb 			= [0, 0]
sysParams.ddcFactorFb 				= [Nddc, Nddc]
sysParams.numBandsFb				= [0, 0]
sysParams.numFbNCO 					= 1
sysParams.ncoFbMode					= 0
sysParams.fbNco0 					= [1000, 1000]
sysParams.fbNco1 					= [1000, 1000]
sysParams.fbNco2 					= [1000, 1000]
sysParams.fbNco3 					= [1000, 1000]

# DAC settings
# DAC sampling rate must fall into one of the following frequency ranges (due to pll restrictions): [7.2 GHz, 7.68 GHz] or [8.8 GHz, 9.1 GHz] or [9.7 GHz, 10.24 GHz] or [11.6 GHz, 12.08 GHz]
sysParams.Fdac 						= sysParams.FadcRx*Ntx
sysParams.txEnable 					= [1, 1, 1, 1]
sysParams.externalClockTx			= 0
sysParams.halfRateModeTx 			= [0, 0]
sysParams.ducFactorTx 				= [Nduc, Nduc, Nduc, Nduc]
sysParams.numBandsTx 				= [0, 0, 0, 0]
sysParams.numTxNCO 					= 1
sysParams.combineDucMode 			= [0, 0]
sysParams.enableDacInterleavedMode 	= 0
sysParams.ncoTxMode					= [0, 0]
sysParams.broadcastTxNcoSel			= 0
sysParams.txNco0	 				= [ [Fnco_tx1, Fnco_tx1],
										[5020.0, 5020.0], 
										[8212.5, 8212.5], 
										[6812.5, 6812.5]]
sysParams.txNco1 					= [ [Fnco_tx1, Fnco_tx1],
										[5020.0, 5020.0], 
										[8212.5, 8212.5], 
										[6812.5, 6812.5]]
										
##########              Clock distribution mode setting              ##########

setupParams.skipLmk					= 0
lmkParams.pllEn 					= (custom_clk == 0)
lmkParams.inputClk 					= f0*NinputClk
lmkParams.sysrefFreq				= lmkParams.inputClk#f0*Nrx/1024
lmkParams.lmkFrefClk				= 1
lmkParams.lmkPulseSysrefMode 		= 0
#AFE.systemStatus.sysrefFreq		= lmkParams.inputClk
#AFE.LMK.lmkConfig()

##########               JESD204 settings AFE 79XX EVM               ##########

sysParams.topLevelSystemMode		= 'StaticTDDMode'
sysParams.jesdSystemMode			= [3, 3]
sysParams.serdesFirmware			= 1
sysParams.jesdABLvdsSync			= 1
sysParams.jesdCDLvdsSync			= 1
sysParams.syncLoopBack				= syncLoopBack
sysParams.jesdLoopbackEn			= jesdLoopbackEn
sysParams.setIlaParams				= 1
sysParams.jesdTxIlaM				= [8, 8, 2, 8, 8, 2]
sysParams.jesdTxIlaLid				= [0, 1, 2, 3, 4, 5, 6, 7]
sysParams.jesdTxIlaL				= [4, 4, 2, 4, 4, 2]
	
	
sysParams.LMFSHdRx					= LMFSHdRx
sysParams.jesdRxProtocol			= [0, 0]
sysParams.jesdRxLaneMux				= [0, 1, 2, 3, 4, 5, 6, 7]
sysParams.jesdRxRbd					= [4, 4]
sysParams.rxJesdTxScr				= [1, 1, 1, 1]
sysParams.rxJesdTxK					= [16, 16, 16, 16]
sysParams.rxJesdTxSyncMux			= [0, 0, 0, 0]
sysParams.rxDataMux					= [0, 1, 2, 3, 4, 5, 6, 7]
sysParams.serdesRxLanePolarity		= [0, 0, 0, 0, 0, 0, 0, 0]
sysParams.adcDataMuxEn				= 0
	
	
sysParams.LMFSHdFb					= LMFSHdFb
sysParams.fbJesdTxScr				= [1, 1]
sysParams.fbJesdTxK					= [16, 16]
sysParams.fbJesdTxSyncMux			= [0, 0]
sysParams.fbDataMux					= [0, 1]
	
sysParams.LMFSHdTx					= LMFSHdTx
sysParams.jesdTxProtocol			= [0, 0]
sysParams.jesdTxLaneMux				= [0, 1, 2, 3, 4, 5, 6, 7]
#sysParams.jesdTxRbd					= [4, 4]
sysParams.jesdRxScr					= [1, 1, 1, 1]
sysParams.jesdRxK					= [16, 16, 16, 16]
sysParams.jesdRxSyncMux				= [0, 0, 0, 0]
sysParams.txDataMux					= [0, 1, 2, 3, 4, 5, 6, 7]
sysParams.serdesTxLanePolarity		= [0, 0, 0, 0, 0, 0, 0, 0]
#sysParams.dacDataMuxEn				= 0
#sysParams.serdesTxPreCursor			= [6, 6, 6, 6, 6, 6, 6, 6]
#sysParams.serdesTxPostCursor		= [0, 0, 0, 0, 0, 0, 0, 0]
#sysParams.serdesTxMainCursor		= [3, 0, 0, 0, 0, 0, 0, 3]


##########                         Dummy txt                         ##########

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.rawWriteLogEn 					= 1
lmk.logEn 							= 1

logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat				= 0x01
logDumpInst.rewriteFile				= 1
logDumpInst.rewriteFileFormat4		= 1

device.optimizeWrites				= 0
device.rawWriteLogEn				= 1
device.delay_time                   = 0
							
AFE.deviceBringup()
AFE.TOP.overrideTdd(15,3,15)
# Force Latte to program the LMK outputs (relevant to the FPGA) in bypass/distribution mode
lmk.head.page.DCLK0_SDCLK1_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
lmk.head.page.DCLK8_SDCLK9_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
lmk.head.page.DCLK12_SDCLK13_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
AFE.saveCAfeParamsFile()

# C273 (GTXCLK_P, yellow) is now at 163.68 MHz (sine-wave-looking signal, with noticed background noise, however, enough for FPGA to get a PLL lock)
# C259 (FPGA_CLK2P/FPGA_REFCLK2_P, red) is now at 163.68 MHz (sine-wave-looking signal, with noticed background noise, however, enough for FPGA to get a PLL lock)
# R353 (CAR_SYSREF_P/FPGA_SYSREF_P, green) is now at ?? MHz (Hard to really tell)

请注意、切换到环回模式(jesdLoopbackEn = 1且 syncLoopBack = 0)时、我们可以在频谱分析仪中清楚地看到模拟信号发生器发送的相同信号(传入 AFE ADC)。

如果您能提供任何有关此错误的来源和解决方法的意见、我们将不胜感激。

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

    尊敬的 Zeljko:

    这些错误表明 AFE (DAC SERDES)中的 JESD 接收器未与  FPGA SERDES 传输中的逗号字符对齐。  

    由于到 FPGA 的 JESD 时钟是从 LMK 输出的、因此必须首先对 其进行编程、并且应首先配置 FPGA SERDES 发送器、然后才能配置 AFE 以建立链路。  

    我在脚本中看到首先运行 AFE.deviceBringup (),然后设置了 LMK 输出。 因此,由于 FPGA SERDES 发送未在 AFE.deviceBringup ()运行时进行配置,将会发生此错误。  

        AFE79xx 加密文件夹中有一些包含 Xilinx 开发套件的 TI JESD204 IP 参考设计。  请 遵循   这些参考设计中显示的顺序。   

    AFE79xx 加密文件夹 可通过 www.ti.com/myseurcesoftware 访问。 如果您没有权限、请在 https://www.ti.com/licreg/docs/swlicexportcontrol.tsp?form_id=318147∏_no=AFE79XX-HSC-DESIGN&ref_url=ASC_DCC_DC-HSC 提交申请

    此致、

    Vijay

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

    Vijay、您好!

    非常感谢您的回复。 在参考设计文档中、我设法找到了一个 Word 文件、其中显示了步骤概要:

    在相应的 Latte 脚本的第2步中,调用了函数 AFE.initializeConfig ()和 AFE.LMK.lmkConfig (),这似乎与您所说的一样,需要首先设置 LMK ,然后再设置 FPGA 配置(第3步)。

    然后,第4步包含对 AFE.deviceBringup ()和 AFE.TOP.OVERRIDETdd ()的调用,我想,这将启动 FPGA 和 AFE 之间的数据交换?

    我在这种解释上是否正确?

    此外,在我的原始代码中,我没有对 AFE.initializeConfig ()和 AFE.LMK.lmkConfig ()的显式调用。 如果我要修改我的脚本(根据我的第一篇文章中所示内容),我需要这两个函数,还是只需要 AFE.LMK.lmkConfig ()? 我知道在调用 AFE.deviceBringup ()和 AFE.TOP.overrideTdd()之前需要指定它们(以及原始代码中包含的所有 LMK 设置)。

    我还在示例脚本中看到,在调用 AFE.initializeConfig ()和 AFE.LMK.lmkConfig ()函数 setupParams.skipLmk 之前,该值将在稍后 TI_IP_ConfigAfe.py 脚本中更改为 true ,然后再调用 AFE.deviceBringup ()和 AFE.TOP.overrideTdd()。 这种值变化是有特殊原因吗?

    此致、

    Željko μ A

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

    Vijay、您好!

    我身边的一个小更新:
    根据您的回复、我查看了参考设计、并且有一份题为的文档

    AFE79xx 的 TI204c 捕获设置

    我曾在这里了解如何重新排列我的当前 Latte 脚本。

    从那里我了解到,作为第一步,我的 lmk 头页(LMKBYPASS controls)属性定义将在调用 deviceBringup()函数之前进行迁移。 最初我还在 BYPASS 控制之后为调用添加了 AFE.LMK.lmkConfig ()函数,但我已经了解到调用 AFE.LMK.lmkConfig ()会将 LMK 控制复位。 正是出于这个原因、我把它从我的脚本中遗漏了。

    在第二步中、对 FPGA 进行编程、我可以看到它从 AFE 端实现了 qpll 锁定。

    但是,在最后一步,我尝试运行 AFE.deviceBringup ()我仍然看到与以前相同的错误:

    此外、从 FPGA 端看、此后不再出现 qpll 锁定。

    看起来就像 AFE.deviceBringup ()从我的旁路设置中另外修改了 LMK 设置,或者可能将其重置。 您能否就此提供一些见解?


    请查看随附的我修改的脚本:

    ##########                  Board bringup procedure                  ##########
    
    #mainWindow.clearSession()
    #base_directory = "C:\\Users\\a0217443\\Documents\\Texas Instruments\\Latte\\projects\\AFE79xx\\bringup\\"
    #mainWindow.runFile(base_directory + r"setup.py")
    #mainWindow.runFile(base_directory + r"devInit.py")
    
    ##########                     General settings:                     ##########
    
    # VLBI Tx frequency plan details:
    custom_clk 							= 3
    
    ncoFreqModes 						= ["1KHz", "FCW"]
    Fnco_tx1 							= 2245.0
    Fnco_rx1							= 500.0
    
    if (custom_clk == 1):
    	f0 								= 163.68
    	Nrx								= 18
    	Nddc							= 6
    	Ntx 							= 4
    	NFRef							= 1
    	NfpgaRefClk						= 1
    	NinputClk						= 1
    	LMFSHdRx              			= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']#
    	LMFSHdFb						= ['22210', '22210']
    	LMFSHdTx						= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']#
    	syncLoopBack 					= False
    	jesdLoopbackEn					= True
    elif custom_clk == 0:
    	f0 								= 122.88
    	Nrx								= 24
    	Nddc							= 12
    	Ntx 							= 3
    	NFRef							= 4
    	NfpgaRefClk						= 2
    	NinputClk						= 12
    	LMFSHdRx              			= ['24410', '24410', '24410', '24410']
    	LMFSHdFb						= ['24410', '24410']
    	LMFSHdTx						= ['24410', '24410', '24410', '24410']
    	syncLoopBack					= False
    	jesdLoopbackEn					= True
    elif custom_clk == 2:
    	f0 								= 163.68
    	Nrx								= 12
    	Nddc							= 6
    	Ntx 							= 3#6
    	NFRef							= 1
    	NfpgaRefClk						= 1
    	NinputClk						= 1
    	LMFSHdRx              			= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']
    	LMFSHdFb						= ['22210', '22210']
    	LMFSHdTx						= ['22210', '22210', '22210', '22210']#['44210', '44210', '44210', '44210']
    	syncLoopBack 					= False
    	jesdLoopbackEn					= True
    elif custom_clk == 3:
    	f0 								= 163.68
    	Nrx								= 12
    	Nddc							= 6
    	Ntx 							= 3#6
    	NFRef							= 1
    	NfpgaRefClk						= 1
    	NinputClk						= 1
    	LMFSHdRx              			= ['44210', '44210', '44210', '44210']
    	LMFSHdFb						= ['42210', '42210']
    	LMFSHdTx						= ['44210', '44210', '44210', '44210']
    	syncLoopBack 					= True
    	jesdLoopbackEn					= False
    	
    Nduc								= Nddc*Ntx
    
    # AFE general settings
    AFE.systemStatus.loadTrims			= 1
    setupParams.skipFpga 				= 1
    setupParams.fpgaRefClk 				= f0*NfpgaRefClk
    sysParams							= AFE.systemParams
    sysParams.FRef 						= f0*NFRef
    
    ##########               Analog settings: AFE 79XX EVM               ##########
    
    # General system settings	
    sysParams.RRFMode   				= 0
    sysParams.modeTdd					= 0
    sysParams.adcSelect0				= [0, 1, 2]
    sysParams.adcSelect1				= [0, 1, 2]
    sysParams.useSpiSysref				= 0
    sysParams.sysrefTermination			= 0
    sysParams.ncoFreqMode				= ncoFreqModes[custom_clk != 0]
    sysParams.spiMode					= 1
    
    # ADC settings
    sysParams.FadcRx 					= f0*Nrx
    sysParams.rxEnable 					= [1, 1, 1, 1]
    sysParams.externalClockRx 			= 0
    sysParams.halfRateModeRx 			= [0, 0]
    sysParams.ddcFactorRx 				= [Nddc, Nddc, Nddc, Nddc]
    sysParams.numBandsRx 				= [0, 0, 0, 0]
    sysParams.numRxNCO 					= 1
    sysParams.ncoRxMode					= [0, 0]
    sysParams.broadcastRxNcoSel			= 0
    sysParams.rxNco0 					= [ [Fnco_rx1, Fnco_rx1], 
    										[870.0, 870.0], 
    										[637.5, 637.5], 
    										[637.5, 637.5]]
    sysParams.rxNco1 					= [ [Fnco_rx1, Fnco_rx1], 
    										[870.0, 870.0], 
    										[637.5, 637.5], 
    										[637.5, 637.5]]
    
    # FB settings
    sysParams.FadcFb					= sysParams.FadcRx
    sysParams.fbEnable 					= [0, 0]
    sysParams.halfRateModeFb 			= [0, 0]
    sysParams.ddcFactorFb 				= [Nddc, Nddc]
    sysParams.numBandsFb				= [0, 0]
    sysParams.numFbNCO 					= 1
    sysParams.ncoFbMode					= 0
    sysParams.fbNco0 					= [1000, 1000]
    sysParams.fbNco1 					= [1000, 1000]
    sysParams.fbNco2 					= [1000, 1000]
    sysParams.fbNco3 					= [1000, 1000]
    
    # DAC settings
    # DAC sampling rate must fall into one of the following frequency ranges (due to pll restrictions): [7.2 GHz, 7.68 GHz] or [8.8 GHz, 9.1 GHz] or [9.7 GHz, 10.24 GHz] or [11.6 GHz, 12.08 GHz]
    sysParams.Fdac 						= sysParams.FadcRx*Ntx
    sysParams.txEnable 					= [1, 1, 1, 1]
    sysParams.externalClockTx			= 0
    sysParams.halfRateModeTx 			= [0, 0]
    sysParams.ducFactorTx 				= [Nduc, Nduc, Nduc, Nduc]
    sysParams.numBandsTx 				= [0, 0, 0, 0]
    sysParams.numTxNCO 					= 1
    sysParams.combineDucMode 			= [0, 0]
    sysParams.enableDacInterleavedMode 	= 0
    sysParams.ncoTxMode					= [0, 0]
    sysParams.broadcastTxNcoSel			= 0
    sysParams.txNco0	 				= [ [Fnco_tx1, Fnco_tx1],
    										[5020.0, 5020.0], 
    										[8212.5, 8212.5], 
    										[6812.5, 6812.5]]
    sysParams.txNco1 					= [ [Fnco_tx1, Fnco_tx1],
    										[5020.0, 5020.0], 
    										[8212.5, 8212.5], 
    										[6812.5, 6812.5]]
    										
    ##########              Clock distribution mode setting              ##########
    
    setupParams.skipLmk					= 0
    lmkParams.pllEn 					= (custom_clk == 0)
    lmkParams.inputClk 					= f0*NinputClk
    lmkParams.sysrefFreq				= lmkParams.inputClk#f0*Nrx/1024
    lmkParams.lmkFrefClk				= 1
    lmkParams.lmkPulseSysrefMode 		= 0
    #AFE.systemStatus.sysrefFreq		= lmkParams.inputClk
    #AFE.LMK.lmkConfig()
    
    ##########               JESD204 settings AFE 79XX EVM               ##########
    
    sysParams.topLevelSystemMode		= 'StaticTDDMode'
    sysParams.jesdSystemMode			= [3, 3]
    sysParams.serdesFirmware			= 1
    sysParams.jesdABLvdsSync			= 1
    sysParams.jesdCDLvdsSync			= 1
    sysParams.syncLoopBack				= syncLoopBack
    sysParams.jesdLoopbackEn			= jesdLoopbackEn
    sysParams.setIlaParams				= 1
    sysParams.jesdTxIlaM				= [8, 8, 2, 8, 8, 2]
    sysParams.jesdTxIlaLid				= [0, 1, 2, 3, 4, 5, 6, 7]
    sysParams.jesdTxIlaL				= [4, 4, 2, 4, 4, 2]
    	
    	
    sysParams.LMFSHdRx					= LMFSHdRx
    sysParams.jesdRxProtocol			= [0, 0]
    sysParams.jesdRxLaneMux				= [0, 1, 2, 3, 4, 5, 6, 7]
    sysParams.jesdRxRbd					= [4, 4]
    sysParams.rxJesdTxScr				= [1, 1, 1, 1]
    sysParams.rxJesdTxK					= [16, 16, 16, 16]
    sysParams.rxJesdTxSyncMux			= [0, 0, 0, 0]
    sysParams.rxDataMux					= [0, 1, 2, 3, 4, 5, 6, 7]
    sysParams.serdesRxLanePolarity		= [0, 0, 0, 0, 0, 0, 0, 0]
    sysParams.adcDataMuxEn				= 0
    	
    	
    sysParams.LMFSHdFb					= LMFSHdFb
    sysParams.fbJesdTxScr				= [1, 1]
    sysParams.fbJesdTxK					= [16, 16]
    sysParams.fbJesdTxSyncMux			= [0, 0]
    sysParams.fbDataMux					= [0, 1]
    	
    sysParams.LMFSHdTx					= LMFSHdTx
    sysParams.jesdTxProtocol			= [0, 0]
    sysParams.jesdTxLaneMux				= [0, 1, 2, 3, 4, 5, 6, 7]
    #sysParams.jesdTxRbd					= [4, 4]
    sysParams.jesdRxScr					= [1, 1, 1, 1]
    sysParams.jesdRxK					= [16, 16, 16, 16]
    sysParams.jesdRxSyncMux				= [0, 0, 0, 0]
    sysParams.txDataMux					= [0, 1, 2, 3, 4, 5, 6, 7]
    sysParams.serdesTxLanePolarity		= [0, 0, 0, 0, 0, 0, 0, 0]
    #sysParams.dacDataMuxEn				= 0
    #sysParams.serdesTxPreCursor			= [6, 6, 6, 6, 6, 6, 6, 6]
    #sysParams.serdesTxPostCursor		= [0, 0, 0, 0, 0, 0, 0, 0]
    #sysParams.serdesTxMainCursor		= [3, 0, 0, 0, 0, 0, 0, 3]
    
    
    ##########                         Dummy txt                         ##########
    
    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.rawWriteLogEn 					= 1
    lmk.logEn 							= 1
    
    logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
    logDumpInst.logFormat				= 0x01
    logDumpInst.rewriteFile				= 1
    logDumpInst.rewriteFileFormat4		= 1
    
    device.optimizeWrites				= 0
    device.rawWriteLogEn				= 1
    device.delay_time                   = 0
    
    
    AFE.initializeConfig()
    # Force Latte to program the LMK outputs (relevant to the FPGA) in bypass/distribution mode
    lmk.head.page.DCLK0_SDCLK1_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
    lmk.head.page.DCLK8_SDCLK9_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
    lmk.head.page.DCLK12_SDCLK13_controls.Analog_Dig_Delay.dclk_mux_lt_1_0_gt_=2
    #AFE.LMK.lmkConfig()
    
    AFE.saveCAfeParamsFile()
    
    # C273 (GTXCLK_P, yellow) is now at 163.68 MHz (sine-wave-looking signal, with noticed background noise, however, enough for FPGA to get a PLL lock)
    # C259 (FPGA_CLK2P/FPGA_REFCLK2_P, red) is now at 163.68 MHz (sine-wave-looking signal, with noticed background noise, however, enough for FPGA to get a PLL lock)
    # R353 (CAR_SYSREF_P/FPGA_SYSREF_P, green) is now at ?? MHz (Hard to really tell)
    
    AFE.deviceBringup()
    AFE.TOP.overrideTdd(15,3,15)

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

    大家好、

    我只是想检查这方面是否有任何更新。

    此致、

    Zeljko.

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

    尊敬的 Zeljko:

    在第二个脚本中、按如下所示添加参数:  

    setupParams.skipLmk	=	True
    AFE.deviceBringup()
    AFE.TOP.overrideTdd(15,3,15)

    当'skipLmk'参数设置为'True'时、LMK 重新配置 将不会 作为'deviceBringup'函数的一部分进行。  

    在安全文件夹中的参考设计中,"configAfe.py"脚本中的"skipmk"参数设置为"True"。  

    此致、

    Vijay

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

    Vijay、您好!

    感谢您的更新和脚本更正。 它经过了测试、确实删除了之前的错误。 我将关闭此问题。

    然而、编译时提出了新的错误、但如果需要、我将为这些打开一个新线程、因为在这个问题中、已经解决了如何正确调度 AFE/JESD 脚本的问题。

    此致、

    Željko μ A