Other Parts Discussed in Thread: AFE7950
Hi, I am using the TI IP on a Kintex Ultrascale Board with AFE7950. The problem I am facing is that no data is shown on the ILA of the TI IP after I run the Ramp Test Pattern on Latte. The lanes are syncing, but no data is displayed on the ILA. I have attached the Latte script, block diagram, TI IP parameters, and a screenshot of the ILA below.
Latte Script:
setupParams.skipFpga = 1
sysParams = AFE.systemParams
setupParams.fpgaRefClk = 122.88
#setupParams.fpgaRefClk = 245.76
#setupParams.fpgaRefClk = 256.00
AFE.systemStatus.loadTrims = 1
sysParams.FRef = 491.52
sysParams.FadcRx = 2949.12
sysParams.FadcFb = 2949.12
sysParams.Fdac = 2949.12 * 3
#sysParams.FRef = 512
#sysParams.FadcRx = 3072
#sysParams.FadcFb = 3072
#sysParams.Fdac = 3072*3
#sysParams.rxEnable = [True,False,False,False]
sysParams.rxEnable = [True,True,True,True]
sysParams.txEnable = [True,True,True,True]
sysParams.enableDacInterleavedMode = False #DAC interleave mode to save power consumption. Fs/2 - Fin spur occurs
sysParams.modeTdd = 0
# 0- Single TDD Pin for all Channels
# 1- Separate Control for 2T/2R/1F
# 2- Separate Control for 1T/1R/1F
sysParams.topLevelSystemMode = 'StaticTDDMode'
sysParams.RRFMode = 0 #4T4R2F FDD mode
#sysParams.jesdSystemMode = [0,0]
sysParams.jesdSystemMode = [3,3]
#SystemMode 0: 2R1F-FDD ; rx1-rx2-fb-fb
#SystemMode 1: 1R1F-FDD ; rx1-rx1-fb-fb
#SystemMode 2: 2R-FDD ; rx1-rx1-rx2-rx2
#SystemMode 3: 1R ; rx1-rx1-rx1-rx1
#SystemMode 4: 1F ; fb-fb-fb-fb
#SystemMode 5: 1R1F-TDD ; rx1/fb-rx1/fb-rx1/fb-rx1/fb
#SystemMode 8: 1R1F-TDD 1R-FDD (FB-2Lanes)(RX1 RX2 interchanged) ; rx2/fb-rx2/fb-rx1-rx1
sysParams.jesdLoopbackEn = 0 #Make it 1 to Enable the JESDTX to JESDRX internal loopback
#sysParams.LMFSHdRx =['12410', '12410', '12410', '12410']
sysParams.LMFSHdRx =['44210', '44210', '44210', '44210']
#sysParams.LMFSHdRx =['14810', '14810', '14810', '14810']
# The 2nd and 4th are valid only for jesdSystemMode values in (2,6,7,8). For other modes, select 4 converter modes for 1st and 3rd.
sysParams.LMFSHdFb = ["22210","22210"]
#sysParams.LMFSHdTx = ["24410","24410","24410","24410"]
sysParams.LMFSHdTx = ["12410","12410","12410","12410"]
#sysParams.LMFSHdTx = ["44210","44210","44210","44210"]
sysParams.jesdTxProtocol = [0,0]
sysParams.jesdRxProtocol = [0,0]
sysParams.serdesFirmware = True # If you want to lead any firmware, please speify the path here. Otherwise it will not write any firmware
#sysParams.jesdTxLaneMux = [0,1,2,3,4,5,6,7]
sysParams.jesdTxLaneMux = [4,5,6,7,3,0,1,2]
# Enter which lanes you want in each location.
# Note that across 2T Mux is not possible in 0.5.
# 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]]
sysParams.jesdRxLaneMux = [0,1,2,3,4,5,6,7]
# Enter which lanes you want in each location.
# Note that across 2R Mux is not possible in 0.5.
# 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.txDataMux = [2,3,0,1,4,5,6,7]
sysParams.txDataMux = [0,1,2,3,4,5,6,7]
sysParams.jesdRxRbd = [4, 4]
sysParams.jesdTxRbd = [1, 1]
sysParams.rxJesdTxScr = [False,False,False,False]
sysParams.fbJesdTxScr = [False,False]
sysParams.jesdRxScr = [False,False,False,False]
sysParams.rxJesdTxK = [32,32,32,32]
sysParams.fbJesdTxK = [32,32]
sysParams.jesdRxK = [32,32,32,32]
sysParams.ncoFreqMode = "1KHz"
sysParams.txNco0 = [[800,800], #Band0, Band1 for TxA for NCO0
[800,800], #Band0, Band1 for TxB for NCO0
[800,800], #Band0, Band1 for TxC for NCO0
[800,800]] #Band0, Band1 for TxD for NCO0
sysParams.rxNco0 = [[800,800], #Band0, Band1 for RxA for NCO0
[800,800], #Band0, Band1 for RxB for NCO0
[800,800], #Band0, Band1 for RxC for NCO0#
[800,800]] #Band0, Band1 for RxD for NCO0
#sysParams.rxNco0 = [[200,200], #Band0, Band1 for RxA for NCO0
# [200,200], #Band0, Band1 for RxB for NCO0
# [200,200], #Band0, Band1 for RxC for NCO0
# [200,200]] #Band0, Band1 for RxD for NCO0
sysParams.fbNco0 = [2600,2600] #FBA, FBC for NCO0
sysParams.numBandsRx = [0]*4 # 0 for single, 1 for dual
sysParams.numBandsFb = [0,0]
sysParams.numBandsTx = [0,0,0,0]
sysParams.ddcFactorRx = [24,24,24,24] # DDC decimation factor for RX A, B, C and D
#sysParams.ddcFactorRx = [12,12,12,12] # DDC decimation factor for RX A, B, C and D
sysParams.ddcFactorFb = [6,6]
#sysParams.ducFactorTx = [36,36,36,36]
sysParams.ducFactorTx = [72,72,72,72]
## The following parameters sets up the LMK04828 clocking schemes
lmkParams.pllEn = True#False
lmkParams.inputClk = 1474.56#737.28
#lmkParams.inputClk = 1536.00
lmkParams.sysrefFreq = 3.84
#lmkParams.sysrefFreq = 1.92
lmkParams.lmkFrefClk = True
## The following parameters sets up the register and macro dumps
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat = 0x00
logDumpInst.rewriteFile = 1
logDumpInst.rewriteFileFormat4 = 1
device.optimizeWrites = 0
device.rawWriteLogEn = 1
## The following parameters sets up the SYNCIN and SYNCOUT to interface with the TSW14J57
sysParams.jesdABLvdsSync = 1
sysParams.jesdCDLvdsSync = 1
sysParams.rxJesdTxSyncMux = [0,0,0,0]
sysParams.fbJesdTxSyncMux = [0,0]
sysParams.jesdRxSyncMux = [0,0,0,0] #[0,0,1,1]
sysParams.syncLoopBack = True
## The following parameters sets up the AGC
#sysParams.agcParams[0].agcMode = 1 ##internal AGC
#sysParams.agcParams[0].gpioRstEnable = 0 ##disable GPIO based reset to AGC detector
#sysParams.agcParams[0].atken = [0, 1, 0] ##enable big and small step attack
#sysParams.agcParams[0].decayen = [0,1,0] ##enable big and small step decay
#sysParams.agcParams[0].atksize = [2,1,0] ## bigs step = 2dB, small step = 1dB
#sysParams.agcParams[0].decaysize = [2,1,0] ##big step = 2dB, small step = 1dB
#sysParams.agcParams[0].atkthreshold = [-1, -2, -14] ##attack threshold
#sysParams.agcParams[0].decaythreshold = [-14, -6, -20] ##decay threshold
#sysParams.agcParams[0].atkwinlength = [170, 170] ## detector time constant expressed inn absolute time in ns.
#sysParams.agcParams[0].decaywinlength = 87380 ##detector time constant expressed in absolute time in ns. All detectors use the same value for decay time constant
#sysParams.agcParams[0].atkNumHitsAbs = [8,8] ##absolute number of times signal crosses threshold. These crossing are with respect to the FADC/8 clock
#sysParams.agcParams[0].decayNumHitsAbs = [100,100] ##absolute number of times signal crosses threshold. These crossing are with respect to the FADC/8 clock
#sysParams.agcParams[0].minDsaAttn = 0 ##minimum DSA attenuation used by AGC
#sysParams.agcParams[0].maxDsaAttn = 22 ##maximum DSA attenuation used by AGC
#sysParams.agcParams[0].totalGainRange = 22 ##total gain range used by ALC for gain compensation
#sysParams.agcParams[0].minAttnAlc = 0 ##minimum attenuation used by ALC for compensation when useMinAttnAgc = 0
#sysParams.agcParams[0].useMinAttnAgc = 1 ##enable ALC to use minimum attenuation from AGC for which compensation is required.
#sysParams.agcParams[0].alcEn = 1
#sysParams.agcParams[0].alcMode = 0 ##floating point DGC
#sysParams.agcParams[0].fltPtMode = 0 ##if exponent > 0, dont send MSB
#sysParams.agcParams[0].fltPtFmt = 1 ##3 bit exponent
## The following parameters sets up the GPIOs
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']}
#AFE.systemParams.papParams[0]['enable'] = True
#AFE.systemParams.papParams[1]['enable'] = True
#AFE.systemParams.papParams[2]['enable'] = True
#AFE.systemParams.papParams[3]['enable'] = True
## Initiates LMK04828 and AFE79xx Bring-up
setupParams.skipLmk = False
AFE.initializeConfig()
lmkParams.sysrefFreq = AFE.systemStatus.sysrefFreq
lmkParams.lmkPulseSysrefMode = False
AFE.LMK.lmkConfig()
## Initiates AFE79xx Bring-up
setupParams.skipLmk = True
AFE.deviceBringup()
AFE.TOP.overrideTdd(15,0,15)
#AFE.JESD.ADCJESD[0].adcRampTestPattern(0,1,0)
#AFE.JESD.ADCJESD[0].adcRampTestPattern(1,1,0)
#AFE.JESD.ADCJESD[1].adcRampTestPattern(0,1,0)
#AFE.JESD.ADCJESD[1].adcRampTestPattern(1,1,0)
#AFE.JESD.DACJESD[0].dacJesdConstantTestPatternValue(1,0,0,16384,0)
#AFE.JESD.DACJESD[0].dacJesdConstantTestPatternValue(1,1,0,16384,0)
#AFE.JESD.DACJESD[1].dacJesdConstantTestPatternValue(1,0,0,16384,0)
#AFE.JESD.DACJESD[1].dacJesdConstantTestPatternValue(1,1,0,16384,0)
Block Diagram:

Ila:

TI IP Parameters:
`undef IP_8B10B
`undef IP_64B66B
`define IP_8B10B
`undef IP_TYPE
`define IP_TYPE "RXTX"
`undef ADC_RESOLUTION
`define ADC_RESOLUTION 16
`undef DAC_RESOLUTION
`define DAC_RESOLUTION 16
`undef NUMBER_OF_RX_LANES
`undef NUMBER_OF_TX_LANES
`define NUMBER_OF_RX_LANES 8
`define NUMBER_OF_TX_LANES 8
`undef NUMBER_OF_QUADS
`define NUMBER_OF_QUADS 2
`undef MGT_TYPE
`define MGT_TYPE "GTH"
`undef NUMBER_OF_REFCLK_BUFFERS
`define NUMBER_OF_REFCLK_BUFFERS 1
`undef LANE_ADC_TO_GT_MAP
`define LANE_ADC_TO_GT_MAP {5,4,6,7,3,0,1,2}
`undef LANE_DAC_TO_GT_MAP
`define LANE_DAC_TO_GT_MAP {4,5,6,7,3,0,1,2}
`undef RX_LANE_POLARITY
`define RX_LANE_POLARITY 8'b00110011
`undef TX_LANE_POLARITY
`define TX_LANE_POLARITY 8'b00001111
`undef RX_LANE_DATA_WIDTH
`define RX_LANE_DATA_WIDTH 64
`undef TX_LANE_DATA_WIDTH
`define TX_LANE_DATA_WIDTH 64
`undef RX_F_VAL
`define RX_F_VAL 2
`undef TX_F_VAL
`define TX_F_VAL 2
`undef RX_K_VAL
`define RX_K_VAL 16
`undef TX_K_VAL
`define TX_K_VAL 16
`undef RBD_COUNT_WIDTH
`define RBD_COUNT_WIDTH 10
`undef RX_BUFFER
`define RX_BUFFER "NORM"
`undef BUFFER_RATIO
`define BUFFER_RATIO 1
`undef TX_BUFFER
`define TX_BUFFER "NORM"