Other Parts Discussed in Thread: AFE7769EVM, AFE7769
Hi,
I am trying to communicate ZC102 EVM board with my AFE7769EVM-3p5 module via JESD204C. I am using Xilinx JESD204C and JES204 PHY IPs. In Vivado I set Lane Rate to 8.11008 and refclk as 122.88Mhz. I am configuring AFE7769EVM board through Latte software. Main parameters of the python script is given below.
When I configure the FPGA and AFE7769 EVM using I am observing invalid 2 bit sync headers , like 00,11, at the output of the JESD204PHY IP and synchronization cannot be established. (At the output of the transceivers)
Apart from this EYE diagram of the lanes are close as expected (very bad) but I cannot see any reason for this because both cards are EVM should be correctly designed.
Do you have any idea what the problem might be? Do you have any example design for JESD204C for ZCU 102 board. (You sent me an example design for JESD204B previously and it is working. So it seems that I need for JESD204C also :))
I think that my AFE configuration file might be incorrect. So do you have any Latte python configuration file for JESD204C?
Thanks in advance.
Tamer.
sysParams.FRef = 491.52
sysParams.Fs = 2949.12
sysParams.pllMuxModes = 0
#0: 4T4R Mode with PLL0 as Master. PLL 0 for all the LOs.
#1: 4T4R Mode with PLL2 as Master. PLL 2 for all the LOs.
#2: 4T4R FDD Mode. PLL0 for TX and PLL2 for RX.
#3: 2*2T2R FDD Mode: PLL0 AB-TX;PLL3 AB-RX; PLL2 CD TX; PLL4 CD RX
#4: 2T2R FDD - TDD Mode: PLL0 AB-TX; PLL3-AB-RX; PLL2 CD
sysParams.pllLo = [3500.01,sysParams.Fs,3501.06,1800.24,3400.0] #PLL Frequencies for PLLs [0,1,2,3,4]
sysParams.setTxLoFbNcoFreqForTxCalib = True
## In below parameters, first in the array is for first 2T2R1F and second 2T2R1F.
# JESD and Serdes Parameters
sysParams.useSpiSysref = False
sysParams.LMFSHdRx = ["28810","28810"]
sysParams.LMFSHdFb = ["12820","12820"]
sysParams.LMFSHdTx = ["48410","48410"]
sysParams.systemMode = [1,1] # 0-Identical, 1-FDD, 2-TDD
sysParams.dedicatedLaneMode = [1,1]
sysParams.jesdProtocol = 2#0#1#0 # -0:B; 1:H; 2:C
sysParams.serdesFirmware = True
sysParams.jesdTxLaneMux = [1,0,2,3,4,5,6,7]#[0,1,2,3,4,5,6,7] # RX1,RX2,RX3,RX4,FB1,FB2
sysParams.jesdRxLaneMux = [0,1,2,3,4,5,6,7]#[0,1,2,3,4,5,6,7]
sysParams.jesdRxRbd = [15, 15]
sysParams.jesdScr = [False,False]
sysParams.serdesTxLanePolarity = [False,False,False,False,True,True,True,True]
sysParams.serdesRxLanePolarity = [False,False,False,False,True,True,True,True]
sysParams.jesdK = [1,1]
sysParams.syncLoopBack = True
sysParams.jesdLoopbackEn = 1
sysParams.jesdTxRxABSyncMux = 0
sysParams.jesdTxRxCDSyncMux = 0
sysParams.jesdTxFBABSyncMux = 0
sysParams.jesdTxFBCDSyncMux = 0
sysParams.jesdRxABSyncMux = 0
sysParams.jesdRxCDSyncMux = 0
#sysParams.jesdABLvdsSync = True
#sysParams.jesdCDLvdsSync = True
# Decimation and interpolation Parameters
sysParams.ddcFactorRx = [24,24]
sysParams.ddcFactorFb = [12,12]
sysParams.ducFactorTx = [12,12]
sysParams.fbNco = [3500.01,3500.01]
sysParams.lowIfNcoRx = [0,0]
sysParams.lowIfNcoTx = [0,0]
sysParams.lowIfNcoFb = [0,0]
LMKParams.pllEn = True
LMKParams.lmkFrefClk = True
#LMKParams.inputClk = 1474.56
LMKParams.sysrefFreq = 3.84
if simulationMode==False:
setupParams.skipFpga=1
setupParams.skipLmk=0
AFE.skipRxConfig=0
AFE.skipFbConfig=0
AFE.skipTxConfig=0
AFE.skipAgc=0
sysParams.gpioConfigMode=1
'''
#PAP Config
sysParams.txDsaUpdateMode=1
for i in range(4):
sysParams.srConfigParams[i]['GainStepSize']=38
sysParams.srConfigParams[i]['AttnStepSize']=38
sysParams.srConfigParams[i]['AmplUpdateCycles']=6
sysParams.srConfigParams[i]['threshold']=30
sysParams.srConfigParams[i]['enable']=True
sysParams.srConfigParams[i]['mode']=10
#Ext AGC Config
for i in range(4):
sysParams.agcRegConfigParams[i]['enableIa']=0
sysParams.agcRegConfigParams[i]['phmOvrEn']=1
sysParams.agcRegConfigParams[i]['enableSa']=0
sysParams.agcRegConfigParams[i]['enableSd']=0
sysParams.agcRegConfigParams[i]['enableBa']=1
sysParams.agcRegConfigParams[i]['gainControl']=4
sysParams.agcRegConfigParams[i]['fdsaOffset']=6
#INT Pins
sysParams.intPinsParams[0]['JESD']=True
sysParams.intPinsParams[0]['SPI']=True
sysParams.intPinsParams[0]['SRTXA']=True
sysParams.intPinsParams[0]['SRTXB']=True
sysParams.intPinsParams[0]['SRTXC']=True
sysParams.intPinsParams[0]['SRTXD']=True
sysParams.intPinsParams[0]['PLL0']=True
sysParams.intPinsParams[0]['PLL1']=True
sysParams.intPinsParams[0]['PLL2']=True
sysParams.intPinsParams[0]['PLL3']=True
sysParams.intPinsParams[0]['PLL4']=True
'''
#Calibrations
sysParams.enableRxDsaFactoryCal = False
sysParams.enableTxDsaFactoryCal = False
sysParams.enableTxIqmcLolTrackingCorr = False
sysParams.enableRxIqmcLolTrackingCorr = True
sysParams.txIqMcCalibMode = 0 # 0 -Single Fb Mode FB AB ; 1 -Single Fb Mode FB CD ; 2- Dual Fb_Mode
sysParams.txDsaCalibMode = 0
sysParams.rxDsaCalibMode = 0
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\config.txt")
logDumpInst.logFormat=0x4
logDumpInst.rewriteFile=1
logDumpInst.rewriteFileFormat4=1
device.optimizeWrites=0
device.rawWriteLogEn=1
device.rewriteFile=1
device.rawWriteLogsFile=ASTERIX_DIR+DEVICES_DIR+r"\test.txt"#"D:\AFE77xx_config/testBroadcast.txt"
lmk.rawWriteLogEn=0
lmk.rawWriteLogsFile=device.rawWriteLogsFile
# AFE.initializeConfig()
AFE.deviceBringup()
device.rawWriteLogEn=1
lmk.rawWriteLogEn=0
engine.sampleNo=32768
AFE.TOP.overrideTdd(1, 1, 1)