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.
Hi expert,
Customer measured Rx EVM of AFE7799 on their board and got over 2.5%. Would you please advise possible methods to improve Rx EVM?
256QAM |
SG input power (dBm) |
||||||||
-50 |
-45 |
-40 |
-35 |
-30 |
-25 |
-20 |
|
||
RXATT |
10 |
5.75 |
4.23 |
3.05 |
2.75 |
2.49 |
3.3 |
3.371 |
|
Thanks,
Allan
Hi expert,
May I have your help to provide some insight how to improve Rx EVM?
Thanks,
Allan
Hi Allan,
Please advise the exact test setup and block diagram. Please advise the SG model number.
Please ask customer to plug in the SG directly into the spectrum analyzer 256QAM analysis to see the raw EVM% measured and compare against the AFE7799 raw EVM% performance. Thank you
-Kang
Hi Kang,
Please see below comments;
Thanks,
Allan
Hello Allan,
A few ideas:
Customer to please advise the two actions above
Per our discussion, we will do the following:
def synch(val): device.JESD.ADC_TX[0].ADC_TX.JESD_TX_CONFIG83.sync_override=12 device.JESD.ADC_TX[0].ADC_TX.JESD_TX_CONFIG83.sync=12*val device.JESD.ADC_TX[1].ADC_TX.JESD_TX_CONFIG83.sync_override=12 device.JESD.ADC_TX[1].ADC_TX.JESD_TX_CONFIG83.sync=12*val device.hardReadAlways=True device.currentPageSelected.setValue(0) device.logEn=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG72.loop_back_mode_tx1=1 # 0 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG72.loop_back_mode_tx0=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.serdes_fifo_read_dly=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.loop_back_fifo_init_state=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.loop_back_fifo_init_state=0 for chNo in range(2): for offset in range(4): device.JESD.SERDES[chNo].laneRegisters[offset].TIMING_PHASE12_OVERWRITE.OWEN_PHASE1_ACC=1 synch(1) synch(0) device.currentPageSelected.setValue(0) device.logEn=0 AFE.JESDRX[0].getJesdAlarms(1) AFE.JESDRX[1].getJesdAlarms(1) device.currentPageSelected.setValue(0) raise # change lane mux sysParams.jesdTxLaneMux = [0,1,2,3,4,5,6,7] AFE.JESD.SUBCHIP.configJesdTxLaneMux(sysParams.jesdTxLaneMux) sysParams.jesdRxLaneMux = [0,1,2,3,4,5,6,7] AFE.JESD.SUBCHIP.configJesdRxLaneMux(sysParams.jesdRxLaneMux) device.currentPageSelected.setValue(0) # changing lane mux device.writeReg(0x15,0x08) device.writeReg(0xC4,0x10) device.writeReg(0xC4,0x10) device.writeReg(0xC5,0x32) device.writeReg(0xC5,0x32) device.writeReg(0xC6,0x54) device.writeReg(0xC6,0x54) device.writeReg(0xC7,0x76) device.writeReg(0xC7,0x76) device.writeReg(0xC8,0x10) device.writeReg(0xC8,0x10) device.writeReg(0xC9,0x32) device.writeReg(0xC9,0x32) device.writeReg(0xCA,0x54) device.writeReg(0xCA,0x54) device.writeReg(0xCB,0x76) device.writeReg(0xCB,0x76) device.writeReg(0xCC,0x10) device.writeReg(0xCC,0x10) device.writeReg(0xCD,0x32) device.writeReg(0xCD,0x32) device.writeReg(0xCE,0x54) device.writeReg(0xCE,0x54) device.writeReg(0xCF,0x76) device.writeReg(0xCF,0x76) device.writeReg(0xD0,0x10) device.writeReg(0xD0,0x10) device.writeReg(0xD1,0x32) device.writeReg(0xD1,0x32) device.writeReg(0xD2,0x54) device.writeReg(0xD2,0x54) device.writeReg(0xD3,0x76) device.writeReg(0xD3,0x76) device.writeReg(0x15,0x00) # enable FB to TX JESD loopback device.writeReg(0x15,0x08) device.writeReg(0x48,0x05) device.writeReg(0x48,0x05) device.writeReg(0x49,0x02) device.writeReg(0x49,0x03) device.writeReg(0x49,0x02) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.writeReg(0x4687,0x80) device.writeReg(0x4686,0x00) device.writeReg(0x4487,0x80) device.writeReg(0x4486,0x00) device.writeReg(0x4087,0x80) device.writeReg(0x4086,0x00) device.writeReg(0x4287,0x80) device.writeReg(0x4286,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.writeReg(0x4287,0x80) device.writeReg(0x4286,0x00) device.writeReg(0x4087,0x80) device.writeReg(0x4086,0x00) device.writeReg(0x4487,0x80) device.writeReg(0x4486,0x00) device.writeReg(0x4687,0x80) device.writeReg(0x4686,0x00) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x01) device.writeReg(0x15,0x01) device.writeReg(0x72,0xC0) device.writeReg(0x72,0xCC) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.writeReg(0x72,0xC0) device.writeReg(0x72,0xCC) device.writeReg(0x15,0x11) device.writeReg(0x15,0x01) device.writeReg(0x72,0xCC) device.writeReg(0x72,0xC0) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.writeReg(0x72,0xCC) device.writeReg(0x72,0xC0) device.writeReg(0x15,0x10) device.writeReg(0x15,0x00) # read alarms device.writeReg(0x15,0x02) device.writeReg(0x81,0xFF) device.writeReg(0x81,0x00) device.writeReg(0x2D,0xDB) device.writeReg(0x2D,0x9B) device.writeReg(0x190,0x01) device.writeReg(0x190,0x00) device.writeReg(0x190,0x04) device.writeReg(0x190,0x00) device.readReg(0x00000163) device.readReg(0x00000162) device.readReg(0x00000161) device.readReg(0x00000160) device.readReg(0x00000167) device.readReg(0x00000166) device.readReg(0x00000165) device.readReg(0x00000164) device.readReg(0x0000012A) # expected 0xa device.readReg(0x0000012C) # expected 0x5 device.writeReg(0x15,0x20) device.writeReg(0x81,0xFF) device.writeReg(0x81,0x00) device.writeReg(0x2D,0xDB) device.writeReg(0x2D,0x9B) device.writeReg(0x190,0x01) device.writeReg(0x190,0x00) device.writeReg(0x190,0x04) device.writeReg(0x190,0x00) device.readReg(0x00000163) device.readReg(0x00000162) device.readReg(0x00000161) device.readReg(0x00000160) device.readReg(0x00000167) device.readReg(0x00000166) device.readReg(0x00000165) device.readReg(0x00000164) device.readReg(0x0000012A) # expected 0xa device.readReg(0x0000012C) # expected 0x5 device.writeReg(0x15,0x00)
Thank you.
Hi Kang,
Customer originally use -50Mhz to -30Mhz bandwidth from LO and now move to -40Mhz to -20Mhz. The EVM improved from -7% to -2%.
They are still doing test to enable RXTDD 2us before Rx.
In the meantime, customer also tried to use loopback followed your steps. Some questions,
Q1. how to boot up the AFE7769EVM using the configCustom2_4849.86 configuration text file in Latte?
Customer add loopback script directly into Latte, and show errors and sync failed.
Q2: please advise what might goes wrong when customer implement the loopback script?
Here is the test setup and result by plugging SG directly into the spectrum analyzer 256QAM analysis to see the raw EVM%.
Q3: customer is TDD system, but for loopback, want to clarify shall we use FDD instead?
Thanks,
Allan
Hi Allan,
Please advise which plot is below: is it loopback or is it directly captured from the RX? The EVM% is very good and less than 2%. We would like to double check how did the customer arrive to this?
Regarding your other questions:
Customer originally use -50Mhz to -30Mhz bandwidth from LO and now move to -40Mhz to -20Mhz. The EVM improved from -7% to -2%.
Could the customer please double check if the RX interface rate is currently set to 122.88MSPS. If the interface rate is at 122.88MSPS, the DDC bandwidth is only 100MHz (i.e. 122.88MSPS*80%). Therefore, the utilization of the -50MHz at the band edge may be pushing towards the edge of the DDC filter.
They are still doing test to enable RXTDD 2us before Rx.
For now, please ensure RXTDD pin is always in logic HI in FDD mode so we can have the RX signal chain enabled all the time. This will prevent additional variable introduced to the EVM% from the RX signal chain switching characteristics.
Q1. how to boot up the AFE7769EVM using the configCustom2_4849.86 configuration text file in Latte?
We are currently looking into a native boot of the configuration file sequence for you. We will upload the code once we find it.
Q2: please advise what might goes wrong when customer implement the loopback script?
Here is the test setup and result by plugging SG directly into the spectrum analyzer 256QAM analysis to see the raw EVM%.
We are still working on this and will get back to you.
Q3: customer is TDD system, but for loopback, want to clarify shall we use FDD instead?
Please keep RXTDD pin is always in logic HI in FDD mode for now to prevent additional transient variables.
Hi Kang,
The 0.57% EVM is just a directly captured from the RX as a good reference to approve the Rx signal is good.
RX interface rate is set to 122.88MSPS.
One thing want to correct is the test did yesterday the EVM improved from -7% to -2% only happened once.
Customer did some further different tests shifting the carrier but don't see EVM much different.
p.s. SG to AFE7799 Rx and RxTDD set to 10dB.
1. Start PRB0 and RXTDD is TDD mode
2. Start PRB0 and RXTDD is always On in FDD mode.
3. Start PRB25 and RXTDD is TDD mode
4. Start PRB111 and RXTDD is TDD mode
Also wondering, is there any possible HW design e.g. power, clocks may impact the Rx EVM as well? If so, could you please point out something for customer to check?
Regards,
Allan
One thing want to correct is the test did yesterday the EVM improved from -7% to -2% only happened once.
Allan,
Please advise ask the customer to backtrack the steps done to get to 2% EVM%
Kang,
Customer clarified the test history. EVM was good by changing the RF start trigger timing from 1588 application to DU emulator 1pps signal. But the EVM 2% was the best case and hard to duplicate at the same environment.
p.s. in the previous tests that SG to AFE7799 Rx and RxTDD set to 10dB.
Thanks,
Allan
Kang,
Some further comments from customer below.
I don’t think it is LO leakage issue, because you can see I/Q offset value already low to -45dB.
Normally, EVM contributes factor are: non-linearity, LO leakage (I/Q offset), image signal (I/Q imbalance), phase noise and noise floor.
I guess it is noise floor issue by DDC setting.
If DDC (digital down convert) setting not good, the noise will into in band signal. You can check test figure, some spurious is very close wanted signal.
Non-linearity: already had did all range of RX input power
LO leakage: from test result table, <-45dB
Phase noise: TX EVM already be proved by TX chain (5W RU TX EVM can <2%)
Image rejection: i believe QEC already default be enabled
Regards,
Allan
Hi Allan,
could you please advise how the 1pps signal is connected to the AFE7799? This will help provide some insight on improving the EVM% measurement.
By changing RF start trigger timing from 1588 application to 1pps signal, I believe only the demodulation frame start changes (i.e. on the DU emulator timing). I do not think any AFE7799 hardware connection and software had been changed. Please advise.
Hi Allen,
Can you please advise the customer the following steps for the loopback mode?
1) Bringup the EVM with the below script. For loopback mode, LMFS should be same thus we modified a script and attached below. sysParams.syncLoopBack should be False to ensure the link for EVM testing.
''' Case RX TX FB CLK Notes ---- ----------------- ----------------- ----------------- ----------- ------------ 2 245.76Msps, 24410 245.76Msps, 24410 245.76Msps, 12410 FS=2949.12M SerDes=9830.4Mbps SerDes=9830.4Mbps SerDes=9830.4Mbps REF=491.52M PLL0, LO=3500M PLL0, LO=3500M NCO=3500M ''' sysParams.__init__() #Resets sysParams settings to default values set in "mAfeParameters.py" setupParams.selectedDut=1 if boardType in ("EVM","HSC1373"): if setupParams.selectedDut==1: AFE=AFE1 device=device1 logDumpInst=logDumpInst1 else: AFE=AFE0 device=device0 logDumpInst=logDumpInst0 else: setupParams.selectedDut=0 sysParams=AFE.systemParams device.hardReadAlways=False # Consult Latte user's guide for more info on paremeters and working with config files: http://www.ti.com/lit/pdf/sbau340 ##### PLL & LO curr_lo = 4849.86 sysParams.rxAdcBw=100 #Comment out if final RX sampling rate is < 245.76MHz 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 = [curr_lo,sysParams.Fs,3501.06,1800.24,3400.0] #PLL Frequencies for PLLs [0,1,2,3,4] sysParams.setTxLoFbNcoFreqForTxCalib = True #Latte sets FB NCO to TX LO value & ignores sysParams.fbNco ## In below parameters, first in the array is for first 2T2R1F and second 2T2R1F. # JESD and Serdes Parameters sysParams.useSpiSysref = False sysParams.LMFSHdRx = ["24410","24410"] sysParams.LMFSHdFb = ["12410","12410"] sysParams.LMFSHdTx = ["24410","24410"] sysParams.systemMode = [1]*2 # 0-Identical, 1-FDD, 2-TDD sysParams.dedicatedLaneMode = [1]*2 sysParams.jesdProtocol = 0#1#0 # -0:B; 1:H; 2:C sysParams.serdesFirmware = True sysParams.jesdTxLaneMux = [0,1,4,5,2,3,6,7] # RX1...RX4 & FB1...FB2 on STX1...STX4 in shared mode. sysParams.jesdRxLaneMux = [0,1,4,5,2,3,6,7] # TX1...TX4 on SRX1...SRX4. sysParams.jesdRxRbd = [15, 15] sysParams.jesdScr = [True,True] sysParams.serdesTxLanePolarity = [False,False,False,False,False,False,False,False] #This is to undo polarity inversion in AFE EVM. sysParams.serdesRxLanePolarity = [False,False,False,False,False,False,False,False] #This is to undo polarity inversion in AFE EVM. sysParams.jesdK = [32,32] sysParams.syncLoopBack = False sysParams.jesdLoopbackEn = 0 sysParams.jesdTxRxABSyncMux = 0 sysParams.jesdTxRxCDSyncMux = 0 sysParams.jesdTxFBABSyncMux = 0 sysParams.jesdTxFBCDSyncMux = 0 sysParams.jesdRxABSyncMux = 0 sysParams.jesdRxCDSyncMux = 0 sysParams.jesdABLvdsSync = 1 sysParams.jesdCDLvdsSync = 1 # Decimation and interpolation Parameters sysParams.ddcFactorRx = [24]*2 sysParams.ddcFactorFb = [24]*2 sysParams.ducFactorTx = [24]*2 sysParams.fbNco = [curr_lo,curr_lo] sysParams.fbNcoBand1 = [curr_lo,curr_lo] #applicable only if using dual bands in FB. sysParams.lowIfNcoRx = [0,0] #Set a non-zero value (>=.001) if you want to enable LowIF NCO feature. sysParams.lowIfNcoTx = [0,0] sysParams.lowIfNcoFb = [0,0] sysParams.enableFbCd = True LMKParams.pllEn = True LMKParams.lmkFrefClk = True LMKParams.sysrefFreq = 3.84 if simulationMode==False: setupParams.skipFpga=0 setupParams.skipLmk=0 # Sets GPIO to a pre-defined mode. More details can be found in https://tidrive.ext.ti.com/u/_rBkAe6wZAjssGQA/Defining_GPIO_Mapping_in_Latte.docx?l sysParams.gpioMapping={ 'U18': u'tx_fb_loop_1', 'T18': u'tx_fb_loop_2', 'V18': u'tx_fb_loop_0', 'T13': u'tdd_1f_en_ab', 'E13': u'tdd_1f_en_cd', 'V13': u'tdd_2r_en_ab', 'C13': u'tdd_2r_en_cd', 'U14': u'tdd_2t_en_ab', 'U15': u'txiqmc_coeff_update', 'D14': u'tdd_2t_en_cd', 'V5': u'adc_sync_n_ab_0', 'V5': u'adc_sync_n_cd_0', 'U5': u'adc_sync_n_ab_1', 'U5': u'adc_sync_n_cd_1', 'Y5': u'dac_sync_n_ab_0', 'Y5': u'dac_sync_n_cd_0', 'W5': u'dac_sync_n_ab_1', 'W5': u'dac_sync_n_cd_1', 'E17': u'alarm_2', 'C17': u'alarm_1', 'E16': u'global_pdn', 'D15': u'fb_nco_sw', 'V6': u'rxa_dsa_gain_0', 'V10': u'rxb_dsa_gain_0', 'C6': u'rxc_dsa_gain_0', 'D7': u'rxd_dsa_gain_0', } sysParams.gpioConfigMode=3 ''' #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]['enable']=True device.TX.DAC_DIG_AB[0].tx_top.Register52409_410h.ModeMovingAvg=2 #JPL Mode device.TX.DAC_DIG_AB[0].tx_top.Register52409_410h.MovingAvgSamples=0 #32 samples device.TX.DAC_DIG_AB[0].tx_top.Register52409_410h.MAWindowCntr=256 device.TX.DAC_DIG_AB[0].tx_top.Register52409_410h.MAErrorCntr=16 device.TX.DAC_DIG_AB[0].tx_top.Register52409_410h.MAAccuThresh=2560 #Triggers for a CW >-10dBFs ''' #AGC Config for i in range(4): sysParams.agcRegConfigParams[i]['enableIa']=1 #Enable Internal AGC for RX sysParams.agcRegConfigParams[i]['dgcEnable']=1 sysParams.agcRegConfigParams[i]['dgcMode']=0 #IEEE Floating Point Mode after gain distribution sysParams.agcRegConfigParams[i]['floatingPointMode']= 0 # 0:"Don't Send MSB of Mantissa if Exp>0",1:"Send Mantissa Always" sysParams.agcRegConfigParams[i]['floatingPointFormat']=1 # 0:"2-bit Exp 13-bit Mantissa",1:"3-bit Exp 12 bit Mantissa",2:"4-bit Exp 11 bit Mantissa" sysParams.agcRegConfigParams[i]['enableEl']=0 sysParams.agcRegConfigParams[i]['thresholdSa']=-3 sysParams.agcRegConfigParams[i]['windowLenSa']=256 sysParams.agcRegConfigParams[i]['stepSizeSa']=1 sysParams.agcRegConfigParams[i]['numHitsSa']=32 sysParams.agcRegConfigParams[i]['enableSa']=1 sysParams.agcRegConfigParams[i]['thresholdSd']=-7 sysParams.agcRegConfigParams[i]['windowLenSd']=512 sysParams.agcRegConfigParams[i]['stepSizeSd']=1 sysParams.agcRegConfigParams[i]['numHitsSd']=32 sysParams.agcRegConfigParams[i]['enableSd']=1 sysParams.agcRegConfigParams[i]['thresholdBa']=-2 sysParams.agcRegConfigParams[i]['windowLenBa']=128 sysParams.agcRegConfigParams[i]['stepSizeBa']=3 sysParams.agcRegConfigParams[i]['numHitsBa']=32 sysParams.agcRegConfigParams[i]['enableBa']=1 sysParams.agcRegConfigParams[i]['thresholdBd']=-6 sysParams.agcRegConfigParams[i]['windowLenBd']=256 sysParams.agcRegConfigParams[i]['stepSizeBd']=3 sysParams.agcRegConfigParams[i]['numHitsBd']=32 sysParams.agcRegConfigParams[i]['enableBd']=1 ''' #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 = True sysParams.enableRxIqmcLolTrackingCorr = True sysParams.txIqMcCalibMode = 2 # 0 -Single Fb Mode FB AB ; 1 -Single Fb Mode FB CD ; 2- Dual Fb_Mode sysParams.txDsaCalibMode = 0 sysParams.rxDsaCalibMode = 0 sysParams.txIqmcFullBandEstimation = False logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"Case-2_Comba_20220121.txt") logDumpInst.logFormat=0x4 logDumpInst.rewriteFile=1 logDumpInst.enableReadCheck=True logDumpInst.enableReads= False device.rawWriteLogEn=1 device.rewriteFile=1 lmk.rawWriteLogEn=0 # AFE.initializeConfig() AFE.deviceBringup() device.rawWriteLogEn=1 lmk.rawWriteLogEn=0 engine.sampleNo=32768 AFE.TOP.overrideTdd(1, 1, 1) # (RX, FB, TX) forcing TDD TDD state through SPI. 1=enable;0=disable
2) Run the below script for the Rx->Tx loopback. If any link issue happens, please try calling AFE.adcDacSync(1)
def synch(val): device.JESD.ADC_TX[0].ADC_TX.JESD_TX_CONFIG83.sync_override=12 device.JESD.ADC_TX[0].ADC_TX.JESD_TX_CONFIG83.sync=12*val device.JESD.ADC_TX[1].ADC_TX.JESD_TX_CONFIG83.sync_override=12 device.JESD.ADC_TX[1].ADC_TX.JESD_TX_CONFIG83.sync=12*val device.hardReadAlways=True device.currentPageSelected.setValue(0) device.logEn=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG72.loop_back_mode_tx1=1 # 0 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG72.loop_back_mode_tx0=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.serdes_fifo_read_dly=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.loop_back_fifo_init_state=1 device.JESD.SUBCHIP.SUBCHIP.JESD_SUBCHIP_REG73.loop_back_fifo_init_state=0 for chNo in range(2): for offset in range(4): device.JESD.SERDES[chNo].laneRegisters[offset].TIMING_PHASE12_OVERWRITE.OWEN_PHASE1_ACC=1 synch(1) synch(0) device.currentPageSelected.setValue(0) device.logEn=0 AFE.JESDRX[0].getJesdAlarms(1) AFE.JESDRX[1].getJesdAlarms(1) device.currentPageSelected.setValue(0) #raise # change lane mux sysParams.jesdTxLaneMux = [0,1,2,3,4,5,6,7] AFE.JESD.SUBCHIP.configJesdTxLaneMux(sysParams.jesdTxLaneMux) sysParams.jesdRxLaneMux = [0,1,2,3,4,5,6,7] AFE.JESD.SUBCHIP.configJesdRxLaneMux(sysParams.jesdRxLaneMux) device.currentPageSelected.setValue(0) # changing lane mux device.writeReg(0x15,0x08) device.writeReg(0xC4,0x10) device.writeReg(0xC4,0x10) device.writeReg(0xC5,0x32) device.writeReg(0xC5,0x32) device.writeReg(0xC6,0x54) device.writeReg(0xC6,0x54) device.writeReg(0xC7,0x76) device.writeReg(0xC7,0x76) device.writeReg(0xC8,0x10) device.writeReg(0xC8,0x10) device.writeReg(0xC9,0x32) device.writeReg(0xC9,0x32) device.writeReg(0xCA,0x54) device.writeReg(0xCA,0x54) device.writeReg(0xCB,0x76) device.writeReg(0xCB,0x76) device.writeReg(0xCC,0x10) device.writeReg(0xCC,0x10) device.writeReg(0xCD,0x32) device.writeReg(0xCD,0x32) device.writeReg(0xCE,0x54) device.writeReg(0xCE,0x54) device.writeReg(0xCF,0x76) device.writeReg(0xCF,0x76) device.writeReg(0xD0,0x10) device.writeReg(0xD0,0x10) device.writeReg(0xD1,0x32) device.writeReg(0xD1,0x32) device.writeReg(0xD2,0x54) device.writeReg(0xD2,0x54) device.writeReg(0xD3,0x76) device.writeReg(0xD3,0x76) device.writeReg(0x15,0x00) # enable FB to TX JESD loopback device.writeReg(0x15,0x08) device.writeReg(0x48,0x05) device.writeReg(0x48,0x05) device.writeReg(0x49,0x02) device.writeReg(0x49,0x03) device.writeReg(0x49,0x02) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.writeReg(0x4687,0x80) device.writeReg(0x4686,0x00) device.writeReg(0x4487,0x80) device.writeReg(0x4486,0x00) device.writeReg(0x4087,0x80) device.writeReg(0x4086,0x00) device.writeReg(0x4287,0x80) device.writeReg(0x4286,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.writeReg(0x4287,0x80) device.writeReg(0x4286,0x00) device.writeReg(0x4087,0x80) device.writeReg(0x4086,0x00) device.writeReg(0x4487,0x80) device.writeReg(0x4486,0x00) device.writeReg(0x4687,0x80) device.writeReg(0x4686,0x00) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x01) device.writeReg(0x15,0x01) device.writeReg(0x72,0xC0) device.writeReg(0x72,0xCC) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.writeReg(0x72,0xC0) device.writeReg(0x72,0xCC) device.writeReg(0x15,0x11) device.writeReg(0x15,0x01) device.writeReg(0x72,0xCC) device.writeReg(0x72,0xC0) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.writeReg(0x72,0xCC) device.writeReg(0x72,0xC0) device.writeReg(0x15,0x10) device.writeReg(0x15,0x00) # read alarms device.writeReg(0x15,0x02) device.writeReg(0x81,0xFF) device.writeReg(0x81,0x00) device.writeReg(0x2D,0xDB) device.writeReg(0x2D,0x9B) device.writeReg(0x190,0x01) device.writeReg(0x190,0x00) device.writeReg(0x190,0x04) device.writeReg(0x190,0x00) device.readReg(0x00000163) device.readReg(0x00000162) device.readReg(0x00000161) device.readReg(0x00000160) device.readReg(0x00000167) device.readReg(0x00000166) device.readReg(0x00000165) device.readReg(0x00000164) device.readReg(0x0000012A) # expected 0xa device.readReg(0x0000012C) # expected 0x5 device.writeReg(0x15,0x20) device.writeReg(0x81,0xFF) device.writeReg(0x81,0x00) device.writeReg(0x2D,0xDB) device.writeReg(0x2D,0x9B) device.writeReg(0x190,0x01) device.writeReg(0x190,0x00) device.writeReg(0x190,0x04) device.writeReg(0x190,0x00) device.readReg(0x00000163) device.readReg(0x00000162) device.readReg(0x00000161) device.readReg(0x00000160) device.readReg(0x00000167) device.readReg(0x00000166) device.readReg(0x00000165) device.readReg(0x00000164) device.readReg(0x0000012A) # expected 0xa device.readReg(0x0000012C) # expected 0x5 device.writeReg(0x15,0x00)
3) Select the proper channels, for Rx and Tx. In our case we used Rx1->Tx1. Therefore,
AFE.selectCh(0,0)
AFE.selectCh(2,0)
4) Observe the signal on VSA.
Please let us know about the outcome of this experiment.
Thanks,
Serkan
Hi Kang,
could you please advise how the 1pps signal is connected to the AFE7799?
After clarifying, please see updated test setup,
Regards,
Allan
Dear Kang:
Today we test Alpha_EVM_bringup.py and loopback.py at two kinds of HW platform. Alpha_EVM_bringup.py has “AttributeError: 'NoneType' object has no attribute 'Reconnect'” issue. And loopback.py happen may serdes sync error. Please check with internal team and give us suggestions. Thanks a lot.
#Executing .. Files/TI_0210/Alpha_EVM_bringup.py
#Start Time 2024-02-12 15:29:14.432000
DONOT_OPEN_Afe77xxPG1p1_FULL - Device registers reset.
chipType: 0xa
chipId: 0x77
chipVersion: 0x11
2T2R1F Number: 0
Valid Configuration: True
laneRateRx: 4915.2
laneRateFb: 4915.2
laneRateTx: 4915.2
2T2R1F Number: 1
Valid Configuration: True
laneRateRx: 4915.2
laneRateFb: 4915.2
laneRateTx: 4915.2
Resetting FPGA.
#Error: 'NoneType' object has no attribute 'Reconnect'
# "Files/TI_0210/Alpha_EVM_bringup.py", line 203, in
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFuncDecorator.py", line 101, in inDecorator
# a=func(*args)
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mAfeLibrary.py", line 216, in deviceBringup
# self.FPGA.reset()
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFuncDecorator.py", line 101, in inDecorator
# a=func(*args)
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFPGA_J58.py", line 51, in reset
# r = self.regs.Reconnect()
# AttributeError: 'NoneType' object has no attribute 'Reconnect'
#
#
#Done executing .. Files/TI_0210/Alpha_EVM_bringup.py
#End Time 2024-02-12 15:29:15.950000
#Execution Time = 1.51800012589 s
#================ ERRORS:1, WARNINGS:0 ================#
#======
#Executing .. Files/TI_0210/loopback.py
#Start Time 2024-02-12 15:30:19.383000
device.writeReg(0x15,0x08)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000048,0x00000000)
device.writeReg(0x48,0x04)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000048,0x00000004)
device.writeReg(0x48,0x05)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000001)
device.writeReg(0x49,0x03)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000003)
device.writeReg(0x49,0x03)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000003)
device.writeReg(0x49,0x02)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004687,0x00000000)
device.readReg(0x00004687,0x00000000)
device.readReg(0x00004686,0x00000000)
device.readReg(0x00004686,0x00000000)
device.writeReg(0x4687,0x80)
device.writeReg(0x4686,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004486,0x00000000)
device.readReg(0x00004486,0x00000000)
device.writeReg(0x4487,0x80)
device.writeReg(0x4486,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004086,0x00000000)
device.readReg(0x00004086,0x00000000)
device.writeReg(0x4087,0x80)
device.writeReg(0x4086,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004286,0x00000000)
device.readReg(0x00004286,0x00000000)
device.writeReg(0x4287,0x80)
device.writeReg(0x4286,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004286,0x00000000)
device.readReg(0x00004286,0x00000000)
device.writeReg(0x4287,0x80)
device.writeReg(0x4286,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004086,0x00000000)
device.readReg(0x00004086,0x00000000)
device.writeReg(0x4087,0x80)
device.writeReg(0x4086,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004486,0x00000000)
device.readReg(0x00004486,0x00000000)
device.writeReg(0x4487,0x80)
device.writeReg(0x4486,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004687,0x00000080)
device.readReg(0x00004687,0x00000080)
device.readReg(0x00004686,0x00000000)
device.readReg(0x00004686,0x00000000)
device.writeReg(0x4687,0x80)
device.writeReg(0x4686,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x01)
device.writeReg(0x15,0x01)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x00000000)
device.writeReg(0x72,0xC0)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000C0)
device.writeReg(0x72,0xCC)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x10)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x00000000)
device.writeReg(0x72,0xC0)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000C0)
device.writeReg(0x72,0xCC)
device.writeReg(0x15,0x11)
device.writeReg(0x15,0x01)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xCC)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xC0)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x10)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xCC)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xC0)
device.writeReg(0x15,0x10)
device.writeReg(0x15,0x00)
###########Device DAC JESD-RX 0 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 0; Alarms: 0xf00
###################################
###########Device DAC JESD-RX 1 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 1; Alarms: 0xf00
###################################
#Done executing .. Files/TI_0210/loopback.py
#End Time 2024-02-12 15:30:39.292000
#Execution Time = 19.9090001583 s
#================ ERRORS:22, WARNINGS:0 ================#
#======
#Executing .. Files/TI_0210/Alpha_EVM_bringup.py
#Start Time 2024-02-12 14:59:18.753000
DONOT_OPEN_Afe77xxPG1p1_FULL - Device registers reset.
chipType: 0xa
chipId: 0x77
chipVersion: 0x11
2T2R1F Number: 0
Valid Configuration: True
laneRateRx: 4915.2
laneRateFb: 4915.2
laneRateTx: 4915.2
2T2R1F Number: 1
Valid Configuration: True
laneRateRx: 4915.2
laneRateFb: 4915.2
laneRateTx: 4915.2
Resetting FPGA.
#Error: 'NoneType' object has no attribute 'Reconnect'
# "Files/TI_0210/Alpha_EVM_bringup.py", line 203, in
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFuncDecorator.py", line 101, in inDecorator
# a=func(*args)
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mAfeLibrary.py", line 216, in deviceBringup
# self.FPGA.reset()
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFuncDecorator.py", line 101, in inDecorator
# a=func(*args)
# File "C:\Users\Michael Jang\Documents\Texas Instruments\Latte\lib\\Afe77xxLibraries\\AFE77xxLibraryPG1P1\mFPGA_J58.py", line 51, in reset
# r = self.regs.Reconnect()
# AttributeError: 'NoneType' object has no attribute 'Reconnect'
#
#
#Done executing .. Files/TI_0210/Alpha_EVM_bringup.py
#End Time 2024-02-12 14:59:20.456000
#Execution Time = 1.70300006866 s
#================ ERRORS:1, WARNINGS:0 ================#
#======
#Executing .. Files/TI_0210/loopback.py
#Start Time 2024-02-12 15:00:14.651000
device.writeReg(0x15,0x08)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000048,0x00000000)
device.writeReg(0x48,0x04)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000048,0x00000004)
device.writeReg(0x48,0x05)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000001)
device.writeReg(0x49,0x03)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000003)
device.writeReg(0x49,0x03)
device.readReg(0x0000004B,0x00000032)
device.readReg(0x0000004A,0x00000010)
device.readReg(0x00000049,0x00000003)
device.writeReg(0x49,0x02)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004687,0x00000000)
device.readReg(0x00004687,0x00000000)
device.readReg(0x00004686,0x00000000)
device.readReg(0x00004686,0x00000000)
device.writeReg(0x4687,0x80)
device.writeReg(0x4686,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004486,0x00000000)
device.readReg(0x00004486,0x00000000)
device.writeReg(0x4487,0x80)
device.writeReg(0x4486,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004086,0x00000000)
device.readReg(0x00004086,0x00000000)
device.writeReg(0x4087,0x80)
device.writeReg(0x4086,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x04)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000021,0x00000012)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004286,0x00000000)
device.readReg(0x00004286,0x00000000)
device.writeReg(0x4287,0x80)
device.writeReg(0x4286,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004287,0x00000080)
device.readReg(0x00004286,0x00000000)
device.readReg(0x00004286,0x00000000)
device.writeReg(0x4287,0x80)
device.writeReg(0x4286,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004087,0x00000080)
device.readReg(0x00004086,0x00000000)
device.readReg(0x00004086,0x00000000)
device.writeReg(0x4087,0x80)
device.writeReg(0x4086,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004487,0x00000080)
device.readReg(0x00004486,0x00000000)
device.readReg(0x00004486,0x00000000)
device.writeReg(0x4487,0x80)
device.writeReg(0x4486,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x40)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x08)
device.readReg(0x00000022,0x00000012)
device.readReg(0x00004687,0x00000080)
device.readReg(0x00004687,0x00000080)
device.readReg(0x00004686,0x00000000)
device.readReg(0x00004686,0x00000000)
device.writeReg(0x4687,0x80)
device.writeReg(0x4686,0x00)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x01)
device.writeReg(0x15,0x01)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x00000000)
device.writeReg(0x72,0xC0)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000C0)
device.writeReg(0x72,0xCC)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x10)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x00000000)
device.writeReg(0x72,0xC0)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000C0)
device.writeReg(0x72,0xCC)
device.writeReg(0x15,0x11)
device.writeReg(0x15,0x01)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xCC)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xC0)
device.writeReg(0x15,0x00)
device.writeReg(0x15,0x10)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xCC)
device.readReg(0x00000073,0x00000000)
device.readReg(0x00000072,0x000000CC)
device.writeReg(0x72,0xC0)
device.writeReg(0x15,0x10)
device.writeReg(0x15,0x00)
###########Device DAC JESD-RX 0 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 0; Alarms: 0xf00
###################################
###########Device DAC JESD-RX 1 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 1; Alarms: 0xf00
###################################
#Done executing .. Files/TI_0210/loopback.py
#End Time 2024-02-12 15:00:35.113000
#Execution Time = 20.4619998932 s
#================ ERRORS:22, WARNINGS:0 ================#
Regards,
TzuChung_Ke
Hi Allan,
After clarifying, please see updated test setup,
In regards to the diagram above, from TI's perspective, we will need clarification on the RF timer sync timing by 1588 application to the RXTDD pins for TDD control.
I would like to recommend Tzuchung to override the RXTDD to have the RX chain always enabled, as requested on Jan 29th, 2024.
void overrideTdd(int fd,int overrideEn,int rxTdd,int fbTdd,int txTdd){ /* overrideEn= 0:no override. control goes to pin, 1:TDD is forced acoording to rxTdd, fbTdd and txTdd. rxTdd=0:RX ABCD are off, 1:RX AB is on, 2:RX CD is on, 3:RX ABCD are on fbTdd=0:FB 1&2 are off, 1:FB 1 is on, 2:FB 2 is on, 3:FB 1&2 are on txTdd=0:TX ABCD are off, 1:TX AB is on, 2:TX CD is on, 3:TX ABCD are on */ AFE77xx_RegWrite(fd,0x0014,0x04); AFE77xx_RegWrite(fd,0x124,overrideEn); AFE77xx_RegWrite(fd,0x126,overrideEn); AFE77xx_RegWrite(fd,0x128,overrideEn); AFE77xx_RegWrite(fd,0x12a,overrideEn); AFE77xx_RegWrite(fd,0x12c,overrideEn); AFE77xx_RegWrite(fd,0x12e,overrideEn); AFE77xx_RegWrite(fd,0x125,(overrideEn&(txTdd&1))); AFE77xx_RegWrite(fd,0x127,(overrideEn&(rxTdd&1))); AFE77xx_RegWrite(fd,0x129,(overrideEn&(fbTdd&1))); AFE77xx_RegWrite(fd,0x12b,(overrideEn&((txTdd&2)>>1))); AFE77xx_RegWrite(fd,0x12d,(overrideEn&((rxTdd&2)>>1))); AFE77xx_RegWrite(fd,0x12f,(overrideEn&((fbTdd&2)>>1))); AFE77xx_RegWrite(fd,0x0014,0x00); }
Please use overrideTdd(int fd = 0, int overrideEN = 1, rxTdd = 3, fbtTdd = don't care, txTdd = don't care) function to always enable the RX chain. The impact from the RF timer sync timing by 1588 applications should no longer be a variable.
Once the 1588 applications to the AFE7799 device RXTDD control is no longer a variable, please report back the EVM%. The best EVM% will be the current best theoretical EVM%.
-Kang
Dear Kang:
Question 1:
We want to confirm configCustom2_4849p86.txt provided by us need to any modification or not for RX EVM improvement? Because all test and measurement depend on AFE7799 configuration is valid without error.
Question 2:
If we hope to use the “void overrideTdd” function to do the test, we must translate overrideTdd function to txt mode.Beside we have done EVM measurement by FPGA always configure RXATT is High. So TI want to measure the EVM again by overrideTdd function again or not?
Dear Serkan:
1. ALPHA_EVM_bringup.py has #Error: 'NoneType' object has no attribute 'Reconnect'. Can we ignore it?
2. loopback.py has the below error. Do we need to run "alling AFE.adcDacSync(1)". is right?
###########Device DAC JESD-RX 0 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 0; Alarms: 0xf00
###################################
###########Device DAC JESD-RX 1 Link Status###########
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 0
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 0
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 0
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 0
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.
CS State TX0: 0b00000000 . It is expected to be 0b00001010
FS State TX0: 0b00000000 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 1; Alarms: 0xf00
###################################
Hi Allen,
If Alpha hope to use the “void overrideTdd” function to do the test, we must translate overrideTdd function to txt mode.Beside we have done EVM measurement by FPGA always configure RXATT is High. So TI want to measure the EVM again by overrideTdd function again or not?
Customer can try the following register writes for Tdd enable. Additionally, we prepared loopback register writes for customer to try. With this customer can run on their own board.
\\START: Overriding TDD Pins internally for Rx,Fb,Tx enable SPIWrite 0124,01,0,7 //Property44708_0_0=0x1; Address(0x124[0:0],) SPIWrite 0126,01,0,7 //Property44709_16_16=0x1; Address(0x124[16:16],) SPIWrite 0128,01,0,7 //Property44710_0_0=0x1; Address(0x128[0:0],) SPIWrite 012a,01,0,7 //Property44711_16_16=0x1; Address(0x128[16:16],) SPIWrite 012c,01,0,7 //Property44712_0_0=0x1; Address(0x12c[0:0],) SPIWrite 012e,01,0,7 //Property44713_16_16=0x1; Address(0x12c[16:16],) SPIWrite 0125,01,0,7 //Property44714_8_8=0x1; Address(0x124[8:8],) SPIWrite 0127,01,0,7 //Property44715_24_24=0x1; Address(0x124[24:24],) SPIWrite 0129,00,0,7 //Property44716_8_8=0x0; Address(0x128[8:8],) SPIWrite 012b,01,0,7 //Property44717_24_24=0x1; Address(0x128[24:24],) SPIWrite 012d,01,0,7 //Property44718_8_8=0x1; Address(0x12c[8:8],) SPIWrite 012f,00,0,7 //Property44719_24_24=0x0; Address(0x12c[24:24],) \\END: Done overriding TDD Pins internally
SPIWrite 0014,00,2,2 //PAGE: TIMING_CON=0x0;(Meaning: ); Address(0x14[2:2],) SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) SPIWrite 0048,04,2,3 SPIWrite 0048,05,0,1 SPIWrite 0049,03,1,4 SPIWrite 0049,03,0,0 SPIWrite 0049,02,0,0 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,04,2,2 //PAGE: SERDES=0x1; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,04,6,6 SPIWrite 0015,00,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdesab_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[9:8],) SPIWrite 4687,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4686,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,04,2,2 //PAGE: SERDES=0x1; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,04,6,6 SPIWrite 0015,00,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdesab_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[9:8],) SPIWrite 4487,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4486,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,04,2,2 //PAGE: SERDES=0x1; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,04,6,6 SPIWrite 0015,00,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdesab_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[9:8],) SPIWrite 4087,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4086,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,04,2,2 //PAGE: SERDES=0x1; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,04,6,6 SPIWrite 0015,00,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdesab_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[9:8],) SPIWrite 4287,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4286,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,00,2,2 //PAGE: SERDES=0x2; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,40,6,6 SPIWrite 0015,40,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdescd_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[17:16],) SPIWrite 4287,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4286,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,00,2,2 //PAGE: SERDES=0x2; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,40,6,6 SPIWrite 0015,40,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdescd_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[17:16],) SPIWrite 4087,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4086,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,00,2,2 //PAGE: SERDES=0x2; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,40,6,6 SPIWrite 0015,40,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdescd_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[17:16],) SPIWrite 4487,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4486,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,00,2,2 //PAGE: SERDES=0x2; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,40,6,6 SPIWrite 0015,40,2,2 //PAGE: SERDES=0x0; Address(0x15[2:2],0x15[6:6],) SPIWrite 0015,00,6,6 SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) \\Read serdescd_apb_page_addr_index=0x2;(Meaning: ); Address(0x20[17:16],) SPIWrite 4687,80,0,7 //OWEN_PHASE1_ACC=0x1; Address(0x8043[15:15],) SPIWrite 4686,00,0,7 SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,01,0,0 //PAGE: rx_jesd=0x1; Address(0x15[0:0],0x15[4:4],) SPIWrite 0015,01,4,4 SPIWrite 0072,c0,4,7 //sync_override=0xc; Address(0x70[23:20],) SPIWrite 0072,cc,0,3 //sync=0xc; Address(0x70[19:16],) SPIWrite 0015,00,0,0 //PAGE: rx_jesd=0x2; Address(0x15[0:0],0x15[4:4],) SPIWrite 0015,10,4,4 SPIWrite 0072,c0,4,7 //sync_override=0xc; Address(0x70[23:20],) SPIWrite 0072,cc,0,3 //sync=0xc; Address(0x70[19:16],) SPIWrite 0015,11,0,0 //PAGE: rx_jesd=0x1; Address(0x15[0:0],0x15[4:4],) SPIWrite 0015,01,4,4 SPIWrite 0072,cc,4,7 //sync_override=0xc; Address(0x70[23:20],) SPIWrite 0072,c0,0,3 //sync=0x0; Address(0x70[19:16],) SPIWrite 0015,00,0,0 //PAGE: rx_jesd=0x2; Address(0x15[0:0],0x15[4:4],) SPIWrite 0015,10,4,4 SPIWrite 0072,cc,4,7 //sync_override=0xc; Address(0x70[23:20],) SPIWrite 0072,c0,0,3 //sync=0x0; Address(0x70[19:16],) SPIWrite 0015,10,0,0 //PAGE: rx_jesd=0x0; Address(0x15[0:0],0x15[4:4],) SPIWrite 0015,00,4,4 \\START: Reading the JESD RX states to check if link is established \\START: Clearing JESD RX Data and alarms SPIWrite 0015,02,1,1 //PAGE: tx_jesd=0x1; Address(0x15[1:1],0x15[5:5],) SPIWrite 0015,02,5,5 SPIWrite 0081,ff,0,7 //jesd_clear_data=0xff; Address(0x80[15:8],) SPIWrite 0081,00,0,7 //jesd_clear_data=0x0; Address(0x80[15:8],) SPIWrite 002d,db,6,6 //serdes_fifo_err_clear=0x1; Address(0x2c[14:14],) SPIWrite 002d,9b,6,6 //serdes_fifo_err_clear=0x0; Address(0x2c[14:14],) SPIWrite 0190,01,0,0 //clear_all_alarms=0x1; Address(0x190[0:0],) SPIWrite 0190,00,0,0 //clear_all_alarms=0x0; Address(0x190[0:0],) SPIWrite 0190,04,2,2 //clear_all_alarms_to_pap=0x1; Address(0x190[2:2],) SPIWrite 0190,00,2,2 //clear_all_alarms_to_pap=0x0; Address(0x190[2:2],) \\END: Done clearing JESD RX Data and alarms WAIT 0.001 SPIReadCheck 0163,0,7,00 SPIReadCheck 0162,0,7,00 SPIReadCheck 0161,0,7,00 SPIReadCheck 0160,0,7,00 SPIReadCheck 0167,0,7,00 SPIReadCheck 0166,0,7,00 SPIReadCheck 0165,0,7,00 SPIReadCheck 0164,0,7,00 \\Read alarms=0x0; Address(0x160[31:0],0x164[31:0],) SPIReadCheck 0135,4,4,10 \\Read comma_align_lock_lane0_monitor_flag=0x1; Address(0x134[12:12],) SPIReadCheck 0135,5,5,20 \\Read comma_align_lock_lane1_monitor_flag=0x1; Address(0x134[13:13],) SPIReadCheck 012a,0,7,0a \\Read jesd_cs_state_tx0=0xa; Address(0x128[23:16],) SPIReadCheck 012c,0,7,05 \\Read jesd_fs_state_tx0=0x5; Address(0x12c[7:0],) \\END: Done reading the JESD RX states to check if link is established \\START: Reading the JESD RX states to check if link is established \\START: Clearing JESD RX Data and alarms SPIWrite 0015,00,1,1 //PAGE: tx_jesd=0x2; Address(0x15[1:1],0x15[5:5],) SPIWrite 0015,20,5,5 SPIWrite 0081,ff,0,7 //jesd_clear_data=0xff; Address(0x80[15:8],) SPIWrite 0081,00,0,7 //jesd_clear_data=0x0; Address(0x80[15:8],) SPIWrite 002d,db,6,6 //serdes_fifo_err_clear=0x1; Address(0x2c[14:14],) SPIWrite 002d,9b,6,6 //serdes_fifo_err_clear=0x0; Address(0x2c[14:14],) SPIWrite 0190,01,0,0 //clear_all_alarms=0x1; Address(0x190[0:0],) SPIWrite 0190,00,0,0 //clear_all_alarms=0x0; Address(0x190[0:0],) SPIWrite 0190,04,2,2 //clear_all_alarms_to_pap=0x1; Address(0x190[2:2],) SPIWrite 0190,00,2,2 //clear_all_alarms_to_pap=0x0; Address(0x190[2:2],) \\END: Done clearing JESD RX Data and alarms WAIT 0.001 SPIReadCheck 0163,0,7,00 SPIReadCheck 0162,0,7,00 SPIReadCheck 0161,0,7,00 SPIReadCheck 0160,0,7,00 SPIReadCheck 0167,0,7,00 SPIReadCheck 0166,0,7,00 SPIReadCheck 0165,0,7,00 SPIReadCheck 0164,0,7,00 \\Read alarms=0x0; Address(0x160[31:0],0x164[31:0],) SPIReadCheck 0135,4,4,10 \\Read comma_align_lock_lane0_monitor_flag=0x1; Address(0x134[12:12],) SPIReadCheck 0135,5,5,20 \\Read comma_align_lock_lane1_monitor_flag=0x1; Address(0x134[13:13],) SPIReadCheck 012a,0,7,0a \\Read jesd_cs_state_tx0=0xa; Address(0x128[23:16],) SPIReadCheck 012c,0,7,05 \\Read jesd_fs_state_tx0=0x5; Address(0x12c[7:0],) \\END: Done reading the JESD RX states to check if link is established SPIWrite 0015,20,1,1 //PAGE: tx_jesd=0x0; Address(0x15[1:1],0x15[5:5],) SPIWrite 0015,00,5,5 \\START: Configuring JESD TX Lane Mux SPIWrite 0015,08,3,3 //PAGE: jesd_subchip=0x1;(Meaning: ); Address(0x15[3:3],) SPIWrite 004a,10,0,2 SPIWrite 004a,10,4,6 SPIWrite 004b,52,0,2 SPIWrite 004b,32,4,6 SPIWrite 004c,34,0,2 SPIWrite 004c,54,4,6 SPIWrite 004d,76,0,2 SPIWrite 004d,76,4,6 SPIWrite 004e,10,0,2 SPIWrite 004e,10,4,6 SPIWrite 004f,52,0,2 SPIWrite 004f,32,4,6 SPIWrite 0050,34,0,2 SPIWrite 0050,54,4,6 SPIWrite 0051,76,0,2 SPIWrite 0051,76,4,6 \\END: Done configuring JESD TX Lane Mux \\START: Configuring JESD RX Lane Mux SPIWrite 0068,10,0,2 SPIWrite 0068,10,4,6 SPIWrite 0069,52,0,2 SPIWrite 0069,32,4,6 SPIWrite 006a,34,0,2 SPIWrite 006a,54,4,6 SPIWrite 006b,76,0,2 SPIWrite 006b,76,4,6 SPIWrite 006c,10,0,2 SPIWrite 006c,10,4,6 SPIWrite 006d,52,0,2 SPIWrite 006d,32,4,6 SPIWrite 006e,34,0,2 SPIWrite 006e,54,4,6 SPIWrite 006f,76,0,2 SPIWrite 006f,76,4,6 \\END: Done configuring JESD RX Lane Mux SPIWrite 0015,00,3,3 //PAGE: jesd_subchip=0x0;(Meaning: ); Address(0x15[3:3],) SPIWrite 0015,08,0,7 SPIWrite 00c4,10,0,7 SPIWrite 00c4,10,0,7 SPIWrite 00c5,32,0,7 SPIWrite 00c5,32,0,7 SPIWrite 00c6,54,0,7 SPIWrite 00c6,54,0,7 SPIWrite 00c7,76,0,7 SPIWrite 00c7,76,0,7 SPIWrite 00c8,10,0,7 SPIWrite 00c8,10,0,7 SPIWrite 00c9,32,0,7 SPIWrite 00c9,32,0,7 SPIWrite 00ca,54,0,7 SPIWrite 00ca,54,0,7 SPIWrite 00cb,76,0,7 SPIWrite 00cb,76,0,7 SPIWrite 00cc,10,0,7 SPIWrite 00cc,10,0,7 SPIWrite 00cd,32,0,7 SPIWrite 00cd,32,0,7 SPIWrite 00ce,54,0,7 SPIWrite 00ce,54,0,7 SPIWrite 00cf,76,0,7 SPIWrite 00cf,76,0,7 SPIWrite 00d0,10,0,7 SPIWrite 00d0,10,0,7 SPIWrite 00d1,32,0,7 SPIWrite 00d1,32,0,7 SPIWrite 00d2,54,0,7 SPIWrite 00d2,54,0,7 SPIWrite 00d3,76,0,7 SPIWrite 00d3,76,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,08,0,7 SPIWrite 0048,05,0,7 SPIWrite 0048,05,0,7 SPIWrite 0049,02,0,7 SPIWrite 0049,03,0,7 SPIWrite 0049,02,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,04,0,7 SPIWrite 0015,04,0,7 SPIWrite 4687,80,0,7 SPIWrite 4686,00,0,7 SPIWrite 4487,80,0,7 SPIWrite 4486,00,0,7 SPIWrite 4087,80,0,7 SPIWrite 4086,00,0,7 SPIWrite 4287,80,0,7 SPIWrite 4286,00,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,40,0,7 SPIWrite 4287,80,0,7 SPIWrite 4286,00,0,7 SPIWrite 4087,80,0,7 SPIWrite 4086,00,0,7 SPIWrite 4487,80,0,7 SPIWrite 4486,00,0,7 SPIWrite 4687,80,0,7 SPIWrite 4686,00,0,7 SPIWrite 0015,40,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,01,0,7 SPIWrite 0015,01,0,7 SPIWrite 0072,c0,0,7 SPIWrite 0072,cc,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,10,0,7 SPIWrite 0072,c0,0,7 SPIWrite 0072,cc,0,7 SPIWrite 0015,11,0,7 SPIWrite 0015,01,0,7 SPIWrite 0072,cc,0,7 SPIWrite 0072,c0,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,10,0,7 SPIWrite 0072,cc,0,7 SPIWrite 0072,c0,0,7 SPIWrite 0015,10,0,7 SPIWrite 0015,00,0,7 SPIWrite 0015,02,0,7 SPIWrite 0081,ff,0,7 SPIWrite 0081,00,0,7 SPIWrite 002d,db,0,7 SPIWrite 002d,9b,0,7 SPIWrite 0190,01,0,7 SPIWrite 0190,00,0,7 SPIWrite 0190,04,0,7 SPIWrite 0190,00,0,7 SPIWrite 0015,20,0,7 SPIWrite 0081,ff,0,7 SPIWrite 0081,00,0,7 SPIWrite 002d,db,0,7 SPIWrite 002d,9b,0,7 SPIWrite 0190,01,0,7 SPIWrite 0190,00,0,7 SPIWrite 0190,04,0,7 SPIWrite 0190,00,0,7 SPIWrite 0015,00,0,7
1. ALPHA_EVM_bringup.py has #Error: 'NoneType' object has no attribute 'Reconnect'. Can we ignore it?
It refers that FPGA libs had some issue while loading, or cannot connect to FPGA again. We cannot ignore it
2. loopback.py has the below error. Do we need to run "alling AFE.adcDacSync(1)". is right?
Yes, you can run adcDacSync but if you have the #Error: 'NoneType', I do not think it will help resolving the link issue.
For the TI FPGA query:
TI 7769EVB + TI FPGA board. Test results are on the below.
from mDevice import Device from HSCEngines import HSCEngineWithILDDCDGC from HSCProcesses import HSCProcessWithILDDCDGC from mConnect import Connect import mCPLD_Device reload(mCPLD_Device) import sys import mAnupam_PG1 reload(mAnupam_PG1) from mAnupam_PG1 import ANUPAM import mlmkDevice reload(mlmkDevice) import globalDefs as Globals if boardType in ("BENCH","HSC1330"):# or simulationMode==True: if simulationMode==False: adcregProg.addressLen=16 adcregProg.packetLen=24 adcregProg.packetOrder=0 adcregProg.msbFirst=1 adcregProg.clkEdge=1 if boardType in ("BENCH",): adcregProg.pin0=5#0# adcregProg.pin1=5#1# adcregProg.pin2=5#6# adcregProg.pin3=5#2# adcregProg.pin4=0#5# adcregProg.pin5=1#5# adcregProg.pin6=6#5# adcregProg.pin7=2#5# else: adcregProg.pin0=0# adcregProg.pin1=1# adcregProg.pin2=6# adcregProg.pin3=2# adcregProg.pin4=5# adcregProg.pin5=5# adcregProg.pin6=5# adcregProg.pin7=3# boardType="BENCH" adcregProg.readClkEdge=1 if jesdH==True: fpgaregProg.addressLen=16 fpgaregProg.packetLen=24 fpgaregProg.packetOrder=0 fpgaregProg.msbFirst=1 fpgaregProg.clkEdge=1 fpgaregProg.pin0=5 fpgaregProg.pin1=1 fpgaregProg.pin2=2 fpgaregProg.pin3=0 fpgaregProg.pin4=6 fpgaregProg.pin5=5 fpgaregProg.pin6=5 fpgaregProg.pin7=5 else: fpgaregProg.addressLen=7 fpgaregProg.packetLen=39 fpgaregProg.packetOrder=0 fpgaregProg.msbFirst=1 fpgaregProg.clkEdge=1 fpgaregProg.pin0=5 fpgaregProg.pin1=0 fpgaregProg.pin2=6 fpgaregProg.pin3=2 fpgaregProg.pin4=3 fpgaregProg.pin5=5 fpgaregProg.pin6=5 fpgaregProg.pin7=1 lmkregProg.addressLen=16 lmkregProg.packetLen=24 lmkregProg.packetOrder=0 lmkregProg.msbFirst=1 lmkregProg.clkEdge=1 lmkregProg.pin0=5 lmkregProg.pin1=5 lmkregProg.pin2=5 lmkregProg.pin3=5 lmkregProg.pin4=3 lmkregProg.pin5=2 lmkregProg.pin6=0 lmkregProg.pin7=1 gpioProg.pin0=3 gpioProg.pin1=3 gpioProg.pin2=3 gpioProg.pin3=3 gpioProg.pin4=3 gpioProg.pin5=3 gpioProg.pin6=3 gpioProg.pin7=3 jtagregProg.pin0=5 jtagregProg.pin1=5 jtagregProg.pin2=5 jtagregProg.pin3=5 jtagregProg.pin4=5 jtagregProg.pin5=5 jtagregProg.pin6=5 jtagregProg.pin7=5 device=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=adcregProg,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL') if jesdH==True: from JESD204H import JESD204H myfpga=JESD204H(name="JESD204H_FPGA",fileName=Globals.libFolderPath+"\\resourceFiles\\JESD204H.dml", regProgDevice=fpgaregProg,captureDevice=capDev) info("Loading JESD 204H FPGA DML") else: import ANUPAM_FPGA reload(ANUPAM_FPGA) myfpga=ANUPAM_FPGA.ANUPAM_FPGA(regProgDevice=fpgaregProg,fileName=Globals.libFolderPath+"\\resourceFiles\\AFE77xx_FPGA.dml",captureDevice=capDev) myfpga.setResetProperty(myfpga.head.page.Common.Reset._Reset_all) info("Loading JESD 204B FPGA DML") elif boardType=='HSC1320': if simulationMode==False: dut0_spia.addressLen=16 dut0_spia.packetLen = 24 dut0_spia.pin0 = 0 dut0_spia.pin1 = 1 dut0_spia.pin2 = 5 dut0_spia.pin3 = 5 dut0_spia.pin4 = 6 dut0_spia.pin5 = 2 dut0_spia.pin6 = 5 dut0_spia.pin7 = 5 dut0_spia.clkEdge=1 dut0_spia.msbFirst = 1 dut1_spia.addressLen=16 dut1_spia.packetLen = 24 dut1_spia.pin0 = 0 dut1_spia.pin1 = 1 dut1_spia.pin2 = 6 dut1_spia.pin3 = 2 dut1_spia.pin4 = 5 dut1_spia.pin5 = 5 dut1_spia.pin6 = 5 dut1_spia.pin7 = 5 dut1_spia.clkEdge=1 dut1_spia.msbFirst = 1 dut0_spib.addressLen=16 dut0_spib.packetLen = 24 dut0_spib.pin0 = 0 dut0_spib.pin1 = 1 dut0_spib.pin2 = 5 dut0_spib.pin3 = 5 dut0_spib.pin4 = 6 dut0_spib.pin5 = 2 dut0_spib.pin6 = 5 dut0_spib.pin7 = 5 dut0_spib.clkEdge=1 dut0_spib.msbFirst = 1 dut1_spib.addressLen=16 dut1_spib.packetLen = 24 dut1_spib.pin0 = 0 dut1_spib.pin1 = 1 dut1_spib.pin2 = 6 dut1_spib.pin3 = 2 dut1_spib.pin4 = 5 dut1_spib.pin5 = 5 dut1_spib.pin6 = 5 dut1_spib.pin7 = 5 dut1_spib.clkEdge=1 dut1_spib.msbFirst = 1 lmkregProg.addressLen=16 lmkregProg.packetLen = 24 lmkregProg.pin0 = 6 lmkregProg.pin1 = 2 lmkregProg.pin2 = 0 lmkregProg.pin3 = 1 lmkregProg.pin4 = 5 lmkregProg.pin5 = 5 lmkregProg.pin6 = 5 lmkregProg.pin7 = 5 lmkregProg.msbFirst = 1 lmkregProg.clkEdge = 1 import j58Wrapper reload(j58Wrapper) from j58Wrapper import j58WrapperClass try: myfpga=j58WrapperClass() except: error("Reset the FPGA and rerun devInit.py") raise device0=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=dut0_spib,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL1') device1=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=dut1_spib,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL2') cpld=mCPLD_Device.CPLD(fileName=Globals.libFolderPath+"//"+"resourceFiles//EvmCpld.dml",regProgDevice="",name='CPLD') elif boardType in ('EVM-1Device',"EVM-1DeviceJ58"): lmkregProg.addressLen=16 lmkregProg.packetLen = 24 lmkregProg.pin0 = 6 lmkregProg.pin1 = 2 lmkregProg.pin2 = 0 lmkregProg.pin3 = 1 lmkregProg.pin4 = 5 lmkregProg.pin5 = 5 lmkregProg.pin6 = 5 lmkregProg.pin7 = 5 lmkregProg.msbFirst = 1 lmkregProg.clkEdge = 1 if MPSSE==True: adcregProg.chipSelect = 0 else: adcregProg.addressLen=16 adcregProg.packetLen=24 adcregProg.packetOrder=0 adcregProg.msbFirst=1 adcregProg.clkEdge=1 adcregProg.pin0=0 adcregProg.pin1=1 adcregProg.pin2=6 adcregProg.pin3=2 adcregProg.pin4=5 adcregProg.pin5=5 adcregProg.pin6=5 adcregProg.pin7=5 adcregProg.readClkEdge=1 cpldRegProg.addressLen=16 cpldRegProg.packetLen = 24 cpldRegProg.pin0 = 5 cpldRegProg.pin1 = 5 cpldRegProg.pin2 = 5 cpldRegProg.pin3 = 5 cpldRegProg.pin4 = 0 cpldRegProg.pin5 = 1 cpldRegProg.pin6 = 6 cpldRegProg.pin7 = 2 cpldRegProg.msbFirst = 1 cpldRegProg.clkEdge = 1 cpld=mCPLD_Device.CPLD(fileName=Globals.libFolderPath+"//"+"resourceFiles//EvmCpld.dml", regProgDevice=cpldRegProg,name='CPLD') device=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=adcregProg,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL') if boardType == "EVM-1DeviceJ58": import j58Wrapper reload(j58Wrapper) from j58Wrapper import j58WrapperClass try: myfpga=j58WrapperClass() except: error("Reset the FPGA and rerun devInit.py") raise else: myfpga=None else: info(boardType) if simulationMode==False: if MPSSE==False: dut0_spia.addressLen=16 dut0_spia.packetLen = 24 dut0_spia.pin0 = 0 dut0_spia.pin1 = 1 dut0_spia.pin2 = 6 dut0_spia.pin3 = 2 dut0_spia.pin4 = 4 dut0_spia.pin5 = 4 dut0_spia.pin6 = 4 dut0_spia.pin7 = 4 dut1_spia.addressLen=16 dut1_spia.packetLen = 24 dut1_spia.pin0 = 0 dut1_spia.pin1 = 1 dut1_spia.pin2 = 6 dut1_spia.pin3 = 4 dut1_spia.pin4 = 2 dut1_spia.pin5 = 4 dut1_spia.pin6 = 4 dut1_spia.pin7 = 4 dut0_spia.clkEdge=1 dut1_spia.clkEdge=1 dut0_spia.msbFirst = 1 dut1_spia.msbFirst = 1 dut0_spib.addressLen=16 dut0_spib.packetLen = 24 dut0_spib.pin0 = 0 dut0_spib.pin1 = 1 dut0_spib.pin2 = 6 dut0_spib.pin3 = 4 dut0_spib.pin4 = 4 dut0_spib.pin5 = 2 dut0_spib.pin6 = 4 dut0_spib.pin7 = 4 dut1_spib.addressLen=16 dut1_spib.packetLen = 24 dut1_spib.pin0 = 0 dut1_spib.pin1 = 1 dut1_spib.pin2 = 6 dut1_spib.pin3 = 4 dut1_spib.pin4 = 4 dut1_spib.pin5 = 4 dut1_spib.pin6 = 2 dut1_spib.pin7 = 4 dut0_spib.clkEdge=1 dut1_spib.clkEdge=1 dut0_spib.msbFirst = 1 dut1_spib.msbFirst = 1 else: dut0_spia.chipSelect = 0 dut1_spia.chipSelect = 1 dut0_spib.chipSelect = 2 dut1_spib.chipSelect = 3 lmkregProg.addressLen=16 lmkregProg.packetLen = 24 lmkregProg.pin0 = 6 lmkregProg.pin1 = 2 lmkregProg.pin2 = 0 lmkregProg.pin3 = 1 lmkregProg.pin4 = 5 lmkregProg.pin5 = 5 lmkregProg.pin6 = 5 lmkregProg.pin7 = 5 lmkregProg.msbFirst = 1 lmkregProg.clkEdge = 1 cpldRegProg.addressLen=16 cpldRegProg.packetLen = 24 cpldRegProg.pin0 = 5 cpldRegProg.pin1 = 5 cpldRegProg.pin2 = 5 cpldRegProg.pin3 = 5 cpldRegProg.pin4 = 0 cpldRegProg.pin5 = 1 cpldRegProg.pin6 = 6 cpldRegProg.pin7 = 2 cpldRegProg.msbFirst = 1 cpldRegProg.clkEdge = 1 import j58Wrapper reload(j58Wrapper) from j58Wrapper import j58WrapperClass try: myfpga=j58WrapperClass() except: error("Reset the FPGA and rerun devInit.py") raise else: myfpga=None device0=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=dut0_spib,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL1') device1=ANUPAM(fileName=Globals.libFolderPath+"//"+"resourceFiles//"+Afe77xxLibraries.folderDirDict[folderName]['dmlName'],regProgDevice=dut1_spib,name='DONOT_OPEN_'+Afe77xxLibraries.folderDirDict[folderName]['dmlName'][:-4]+'_FULL2') cpld=mCPLD_Device.CPLD(fileName=Globals.libFolderPath+"//"+"resourceFiles//EvmCpld.dml",regProgDevice=cpldRegProg,name='CPLD') lmk=mlmkDevice.LMK(name="LMK Clock Divider",fileName=ASTERIX_DIR+DEVICES_DIR+"LMK04828_form_new.dml",regProgDevice=lmkregProg) lmk.setResetProperty(lmk.head.page.System.Top_Modes._SW_RESET) if simulationMode==True: cpld=Device(fileName=Globals.libFolderPath+"//"+"resourceFiles//EvmCpld.dml",regProgDevice="",name='CPLD') #### clk sources DevClkSource.frequency=368.64e6 DevClkSource.amplitude=0 DevClkSource.frequencySynth=2949.12e6/2 DevClkSource.on=1 DevClkSource.onSynth=1 sigSource00.amplitude=-10 sigSource00.on=1 process=HSCProcessWithILDDCDGC() engine=HSCEngineWithILDDCDGC(device=myfpga,process=process,clockVariable=clkSource._frequency,inputVariable=sigSource00._frequency) if boardType!="EVM-1Device": myfpga.byte_swap=0 if simulationMode==True: if boardType!="EVM-1Device": myfpga.delay_time=0 if boardType in ("BENCH","EVM-1Device","EVM-1DeviceJ58"): device.delay_time=0 else: device0.delay_time=0 device1.delay_time=0 else: if boardType!="EVM-1Device": if jesdH==True: myfpga.delay_time=0.05 else: myfpga.delay_time=0.2 if boardType in ("BENCH","EVM-1Device","EVM-1DeviceJ58"): if MPSSE==False: device.delay_time=0.02 else: device.delay_time=0.005 else: if MPSSE==False: device0.delay_time=0.02 device1.delay_time=0.02 else: device0.delay_time=0.004 device1.delay_time=0.004 if boardType=="HSC1357": boardType="HSC1320" import mLogDump reload(mLogDump) if boardType in ("BENCH","EVM-1Device","EVM-1DeviceJ58"): logDumpInst=mLogDump.logDump(ASTERIX_DIR+DEVICES_DIR+r"\config.txt") device.logClassInst=logDumpInst if boardType=="BENCH": myfpga.logClassInst=logDumpInst lmk.logClassInst=logDumpInst else: logDumpInst0=mLogDump.logDump(ASTERIX_DIR+DEVICES_DIR+r"\configDevice0.txt") logDumpInst1=mLogDump.logDump(ASTERIX_DIR+DEVICES_DIR+r"\configDevice1.txt") device0.logClassInst=logDumpInst0 device1.logClassInst=logDumpInst1 myfpga.logClassInst=logDumpInst0 lmk.logClassInst=logDumpInst0 ########### Loading the Libraries import mSetupParams reload(mSetupParams) from mSetupParams import setupParams if boardType=="EVM": setupParams.boardType="HSC1320" else: setupParams.boardType=boardType setupParams.fpgaWriter=writer setupParams.engine=engine setupParams.process=process if simulationMode==True or setupParams.boardType=="EVM-1Device": setupParams.skipFpga=True setupParams.skipLmk=True else: setupParams.skipFpga=False setupParams.skipLmk=False from mSetupParams import fpgaParamsClass fpgaParams=fpgaParamsClass() from mSetupParams import lmkParamsClass LMKParams=lmkParamsClass() import mLmk reload(mLmk) from mLmk import lmkLib LMKlibInst=lmkLib(lmk,LMKParams) if boardType=="BENCH": import mFpga reload(mFpga) from mFpga import fpgaLib FPGAlibInst=fpgaLib(myfpga,fpgaParams) else: import mFPGA_J58 reload(mFPGA_J58) from mFPGA_J58 import fpgaLib_J58 FPGAlibInst=fpgaLib_J58(myfpga,fpgaParams) if boardType not in ("BENCH","EVM-1Device","EVM-1DeviceJ58","EVM"): import CurrentSenseAFE77xx reload(CurrentSenseAFE77xx) currSensor=CurrentSenseAFE77xx.CurrentSensor(currSenseI2C) setupParams.currSensor=currSensor setupParams.fpgaLib=FPGAlibInst setupParams.lmkLib=LMKlibInst if boardType not in ("HSC1320","BENCH","HSC1330"): setupParams.cpld=cpld import mFuncDecorator reload(mFuncDecorator) from mFuncDecorator import * def loadLibs(device,dutNo=0): import mAfeLibrary reload(mAfeLibrary) from mAfeLibrary import afeLibrary import mAfeParameters reload(mAfeParameters) from mAfeParameters import systemParams from mAfeParameters import systemStatus import numpy device1Refs=deviceRefs() sysParams=systemParams() sysStatus=systemStatus() sysParams.chipType=0x10 device1Refs.device=device device1Refs.engine=engine device1Refs.process=process device1Refs.systemParams=sysParams device1Refs.systemStatus=sysStatus device1Refs.gpioProg=gpioProg device1Refs.lmkParams=LMKParams sysParams.chipId=chipId sysParams.chipVersion=chipVersion sysParams.simulationMode=simulationMode afeInst=afeLibrary(device1Refs,dutNo) if len(setupParams.dutInstances)<dutNo: setupParams.dutInstances[dutNo]=afeInst else: setupParams.dutInstances.append(afeInst) return (sysParams,sysStatus,afeInst) if boardType in ("BENCH","EVM-1Device","EVM-1DeviceJ58"): (sysParams,sysStatus,AFE)=loadLibs(device,0) else: (sysParams0,sysStatus,AFE0)=loadLibs(device0,0) (sysParams1,sysStatus,AFE1)=loadLibs(device1,1) AFE=AFE1 from common.mMACROConst import MACROConst #################### ###################### if chipVersion>0x10: try: if boardType in ("BENCH","EVM-1DeviceJ58","EVM-1Device"): imlPath = Globals.libFolderPath+r"\\resourceFiles\\afeiGui\\iGuiTreeBench.iml" elif boardType in ("HSC1373"): imlPath = Globals.libFolderPath+r"\\resourceFiles\\afeiGui\\iGuiTree.iml" imlFile=open(imlPath,'r') imlFileLines= imlFile.readlines() imlFile.close() libFolderPath = Globals.libFolderPath.split("Afe77xxLibraries")[0] imlFile=open(imlPath,'w') imlFile.close() imlFile = open(imlPath,'a') for line in imlFileLines: if "Afe77xxLibraries" in line: split = line.split("Afe77xxLibraries") prefix = split[0].split("path")[0] + 'path="' split[0] = libFolderPath new = 'Afe77xxLibraries'.join(split) new = prefix + new imlFile.write(new) else: imlFile.write(line) imlFile.close() from iGui import iGui import afeiGui reload(afeiGui) import afeiGui.mAfe77xxSystemParamsiGui reload(afeiGui.mAfe77xxSystemParamsiGui) from afeiGui.mAfe77xxSystemParamsiGui import afe77xxSystemParamsiGui import afeiGui.afe77xxSystemStatusRegs reload(afeiGui.afe77xxSystemStatusRegs) from afeiGui.afe77xxSystemStatusRegs import afe77xxSystemStatusRegs import afeiGui.afe77xxCustomConfig reload(afeiGui.afe77xxCustomConfig) from afeiGui.afe77xxCustomConfig import afe77xxCustomConfig import afeiGui.mAfe77xxPowerMeasurements reload(afeiGui.mAfe77xxPowerMeasurements) from afeiGui.mAfe77xxPowerMeasurements import afe77xxCurrentSense import afeiGui.mAfe77xxGpioExternalAgc reload(afeiGui.mAfe77xxGpioExternalAgc) from afeiGui.mAfe77xxGpioExternalAgc import afe77xxGpioExternalAgc import afeiGui.mAfe77xxGpioInternalAgc reload(afeiGui.mAfe77xxGpioInternalAgc) from afeiGui.mAfe77xxGpioInternalAgc import afe77xxGpioInternalAgc import afeiGui.afe77xxAdditionalConfig reload(afeiGui.afe77xxAdditionalConfig) from afeiGui.afe77xxAdditionalConfig import afe77xxAdditionalConfig from mAfeConstants import gpioConstants import afeiGui.mAfeGuiController reload(afeiGui.mAfeGuiController) from afeiGui.mAfeGuiController import afeGuiControllerClass import afeiGui.afe77xxGpioFinalMapGuiCode reload(afeiGui.afe77xxGpioFinalMapGuiCode) from afeiGui.afe77xxGpioFinalMapGuiCode import gpioMap import afeiGui.genericSelection reload(afeiGui.genericSelection) from afeiGui.genericSelection import genericSelection import afeiGui.gpioTop reload(afeiGui.gpioTop) from afeiGui.gpioTop import gpioTop import afeiGui.mAfeGuiParams reload(afeiGui.mAfeGuiParams) from afeiGui.mAfeGuiParams import guiParams from PySide import QtGui if boardType in ("BENCH","EVM-1DeviceJ58","EVM-1Device","HSC1373"): guiCache = guiParams() afeiGuiController = afeGuiControllerClass(AFE,gpioConstants) gpioGenericSeliGuiClass = genericSelection(libInstance=AFE,guiControllerInstance=afeiGuiController) gpioStatusiGuiClass =gpioMap(libInstance=AFE,guiControllerInstance=afeiGuiController,cpld=cpld) afeiGuiController.gpioStatusiGuiClass = gpioStatusiGuiClass afeiGuiController.gpioGenericSeliGuiClass = gpioGenericSeliGuiClass afeiGuiController.gpioStatusiGuiClass = gpioStatusiGuiClass gpioGroupSelection = gpioTop(libInstance=AFE,guiControllerInstance=afeiGuiController) systemParamClassiGui = afe77xxSystemParamsiGui(libInstance=AFE, cache=guiCache, gpio=cpld,guiControllerInstance=afeiGuiController,lmkParams=LMKParams,FPGA=myfpga) afeiGuiController.sysParamClassInst = systemParamClassiGui customConfig=afe77xxCustomConfig(libInstance=AFE, cache=guiCache,guiControllerInstance=afeiGuiController) additionalConfig = afe77xxAdditionalConfig(libInstance=AFE, cache = guiCache,guiControllerInstance=afeiGuiController) statusRegisters=afe77xxSystemStatusRegs(libInstance=AFE,guiControllerInstance=afeiGuiController) afe77xxiGui= iGui(fileName = Globals.libFolderPath+"//"+"resourceFiles//"+r"/afeiGui/iGuiTreeBench.iml") guiCache.guiInst = afe77xxiGui afeiGuiController.guiInstance = afe77xxiGui for i in [1,2,3,4,5,6]: eval("afe77xxiGui.mainWindow.changeTab("+str(i)+")") eval("afe77xxiGui.mainWindow.stackWidget.currentWidget().svgWidget.resize(1600,950)") # eval("afe77xxiGui.mainWindow.resize(1642,992)") afe77xxiGui.mainWindow.stackWidget.currentWidget().scrollArea.setWidgetResizable(False) Globals.mainWindowOpen=True def closeMainWindow(): if Globals.mainWindowOpen: mainWindow.hide() Globals.mainWindowOpen = False else: mainWindow.show() Globals.mainWindowOpen = True a = QtGui.QAction(afe77xxiGui.mainWindow) a.setShortcut("ctrl+L") a.triggered.connect(closeMainWindow) afe77xxiGui.mainWindow.listWidget.hide() afe77xxiGui.mainWindow.resize(1642,992) afe77xxiGui.mainWindow.setMaximumWidth(1643) afe77xxiGui.mainWindow.setMaximumHeight(992) afe77xxiGui.mainWindow.changeTab(2) afe77xxiGui.mainWindow.setWindowTitle("AFE77xx iGui") afe77xxiGui.mainWindow.addAction(mainWindow.actionClearLog) afe77xxiGui.mainWindow.addAction(a) afe77xxiGui.show() elif boardType in ("HSC1373",): guiCache0 = guiParams() guiCache1 = guiParams() afeiGuiController = afeGuiControllerClass(AFE0,gpioConstants) gpioGenericSeliGuiClass = genericSelection(libInstance=AFE0,guiControllerInstance=afeiGuiController) gpioStatusiGuiClass =gpioMap(libInstance=AFE0,guiControllerInstance=afeiGuiController) afeiGuiController.gpioStatusiGuiClass = gpioStatusiGuiClass afeiGuiController.gpioGenericSeliGuiClass = gpioGenericSeliGuiClass systemParamClassiGui0 = afe77xxSystemParamsiGui(libInstance=AFE0, cache=guiCache0, gpio=cpld) systemParamClassiGui1 = afe77xxSystemParamsiGui(libInstance=AFE1, cache=guiCache1, gpio=cpld) additionalConfig0 = afe77xxAdditionalConfig(libInstance=AFE0, cache = guiCache0) additionalConfig1 = afe77xxAdditionalConfig(libInstance=AFE1, cache = guiCache1) customConfig0=afe77xxCustomConfig(libInstance=AFE0, cache=guiCache0) customConfig1=afe77xxCustomConfig(libInstance=AFE1, cache=guiCache1) statusRegisters0=afe77xxSystemStatusRegs(libInstance=AFE0) statusRegisters1=afe77xxSystemStatusRegs(libInstance=AFE1) powerMeasurements = afe77xxCurrentSense(cache=guiCache0) gpioInternal = afe77xxGpioInternalAgc(libInstance=AFE0,gpio=cpld) gpioExternal = afe77xxGpioExternalAgc(libInstance=AFE0,gpio=cpld) gpioStatusiGuiClass =gpioMap(fileName = r"PATH_TO_SVG_FILE",libInstance=AFE0,guiControllerInstance=afeiGuiController) gpioGroupSelection = gpioTop(libInstance=AFE0,guiControllerInstance=afeiGuiController) afe77xxiGui= iGui(fileName = Globals.libFolderPath+"//resourceFiles//"+r"\\afeiGui\iGuiTree.iml") afeiGuiController.guiInstance = afe77xxiGui except: error("Couldn't load iGui") ########### if boardType in ("BENCH",): mainWindow.restoreSession(PROJECTS_DIR+r"\AFE77xx\bringup\customGui.astx") elif boardType in ("EVM-1DeviceJ58","EVM-1Device"): mainWindow.restoreSession(PROJECTS_DIR+r"\AFE77xx\bringup\customGui1XEvm.astx") else: mainWindow.restoreSession(PROJECTS_DIR+r"\AFE77xx\bringup\customGuiEvm.astx") Connect(process.fftImdParams._fin1,sigSource00._frequency,1,1) engine.sampleNo=32768 process.complexfftParam.ignoreImdBinsForSnr=1 process.complexfftParam.finSkipBins=200 process.complexfftParam.ignoreBinsAroundFin1AndFin2ForSnr=1 process.complexfftParam.ignoreImdBinsForSnr=1 process.complexfftParam.finSkipBins=200 process.complexfftParam.ignoreFinImage=1 process.complexfftPlot.harmonicsNo=1 info(gc.collect()) device.rawWriteLogsFile=ASTERIX_DIR+DEVICES_DIR+r"\test.txt"#"D:\AFE77xx_config/testBroadcast.txt" #myfpga.rawWriteLogsFile=device.rawWriteLogsFile lmk.rawWriteLogsFile=device.rawWriteLogsFile
import gc gc.collect() from mDummySignalSource import DummySignalSource from HSCProgrammer import QPort from KintexProgrammer import KintexSPIProgrammer from JESDCapture import JESDCapture import d2xx from USBCaptureTrig import USBCaptureTrig from USBHSCProgrammer import USBQPort try: from USBHSCProgrammer import i2cPort except: pass from basicPlots import BasicPlot import numpy as np import time from logPlots import Log import globalDefs as Globals from mKeysightVectorSignalGenerator import KeysightE8267D from mKeithleyPowerSupply import Keithley2230G import fpgawrite import sys,os import mpsseSPI reload(mpsseSPI) boardType="EVM-1DeviceJ58"#"HSC1373"##"EVM"#"EVM-1DeviceJ58"# #"HSC1320"#"EVM-1Device"#"HSC1330"# jesdH=False#True# chipId=0x77 chipVersion=0x11 import Afe77xxLibraries reload(Afe77xxLibraries) folderName=Afe77xxLibraries.getFolderName(chipId,chipVersion) info(folderName) #### signal and clock source sigSource00=DummySignalSource(addr="Null",name="Signal Source") DevClkSource=DummySignalSource(addr="Null",name="Device Source clk") clkSource=DummySignalSource(addr="Null",name="RF Source clk") MPSSE=True#True# # FPGA reset and reload def fpgaHandleInstance(): if("fpgaResetHandle" not in globals()): for i in range(d2xx.createDeviceInfoList()): identifier=d2xx.getDeviceInfoDetail(i)['description'] if(identifier=="TSW14J58_CTRL B"): qportAddr="TSW14J58_CTRL B" fpgaResetFtdi=USBQPort(name="FPGA reset",addr=qportAddr) fpgaResetFtdi.pin0=4 #fpga resetZ=1 fpgaResetFtdi.pin1=5 fpgaResetFtdi.pin2=4 #program sel=1 fpgaResetFtdi.pin3=5 fpgaResetFtdi.pin4=4 #fpga progZ=1 fpgaResetFtdi.pin5=5 fpgaResetFtdi.pin6=5 fpgaResetFtdi.pin7=5 Globals.fpgaResetFtdi = fpgaResetFtdi fpgaResetCheck = 0 return fpgaResetFtdi else: fpgaResetCheck = 1 if fpgaResetCheck:#(i==d2xx.createDeviceInfoList()-1): warning("Automatic reset of fpga will not be supported.") try: if boardType=="EVM-1DeviceJ58": fpgaHandleInstance() else: warning("Automatic reset of fpga will not be supported.") except: warning("Automatic reset of fpga will not be supported.") pass def reloadFpga(): if("fpgaResetFtdi" in globals()): log("Programing FPGA ....") Globals.fpgaResetFtdi.pin4=3 delay(0.3) Globals.fpgaResetFtdi.pin4=4 delay(0.2) log("Programing FPGA Done") else: error("FPGA Reset device not found") def resetFpga(ver=0): if("fpgaResetFtdi" in globals()): log("Resetting FPGA ....") for i in range(2): if(ver==1): fpgaResetFtdi.pin0=3 delay(0.5) fpgaResetFtdi.pin0=4 delay(0.8) else: fpgaResetFtdi.pin0=4 delay(0.5) fpgaResetFtdi.pin0=3 delay(0.8) log("Resetting FPGA Done") if("myfpga" in globals()): myfpga.Reconnect() else: error("FPGA Reset device not found") for qportId in ('A','B','C','D'): exec("qportName"+qportId+"=np.array([])") for i in range(d2xx.createDeviceInfoList()): try: identifier=d2xx.getDeviceInfoDetail(i)['description'][-1] except: identifier="" if(identifier==qportId): exec("qportName"+qportId+"=np.append(qportName"+qportId+",d2xx.getDeviceInfoDetail(i)['description'][:-2])") for qportName in qportNameA: if(qportName in ['Anupam Main USB','Quad RS232-HS']): if((qportName in qportNameB) and (qportName in qportNameC) and (qportName in qportNameD)): break try: if boardType=="BENCH": jtagregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB C") adcregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB D") lmkregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB B") fpgaregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB B") # capture_port = USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") capDev = USBCaptureTrig(name="Kintex Capture Card");#,addrB="Quad RS232-HS B",addrC="Quad RS232-HS C") writer=fpgawrite.fpgaWriter() gpioProg= USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB C") elif boardType=="HSC1330": jtagregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB C") adcregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB B") lmkregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB D") fpgaregProg = USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB D") # capture_port = USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") capDev = USBCaptureTrig(name="Kintex Capture Card");#,addrB="Quad RS232-HS B",addrC="Quad RS232-HS C") writer=fpgawrite.fpgaWriter() gpioProg= USBQPort(name="Kintex RegProgrammer",addr="Anupam Main USB C") elif boardType in ("EVM-1DeviceJ58","EVM-1Device"): if MPSSE==True: adcregProg = mpsseSPI.spi(addr=qportName+" A")#"Anupam Main USB A" adcregProg.clockDivider=4 else: adcregProg = USBQPort(name="Kintex RegProgrammer",addr=qportName+" A")#"Anupam Main USB A" lmkregProg = USBQPort(name="LMK RegProgrammer",addr=qportName+" D")#"Anupam Main USB D" capDev="" fpgaregProg="" writer="" cpldRegProg=USBQPort(name="CPLD RegProgrammer",addr=qportName+" C")#"Anupam Main USB D" gpioProg="" # regProgBusC=USBQPort(name="regProgBus RegProgrammer",addr=qportName+" C")#"Anupam Main USB C" else: if boardType=="HSC1320": dut0_spia= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS B") dut1_spia= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS B") dut0_spib= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS C") dut1_spib= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS C") else: if MPSSE==True: dut0_spia= mpsseSPI.spi(addr="Quad RS232-HS A") dut1_spia= mpsseSPI.spi(addr="Quad RS232-HS A") dut0_spib= mpsseSPI.spi(addr="Quad RS232-HS A") dut1_spib= mpsseSPI.spi(addr="Quad RS232-HS A") dut0_spia.clockDivider=4 dut0_spib.clockDivider=4 dut1_spia.clockDivider=4 dut1_spib.clockDivider=4 else: dut0_spia= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") dut1_spia= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") dut0_spib= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") dut1_spib= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS A") try: currSenseI2C = i2cPort(name="i2c Programmer",addr="Quad RS232-HS B", CLK_pin = 0, SDAI_pin = 2, SDAO_pin = 1) currSenseI2C.pin0 = 0 currSenseI2C.pin1 = 1 currSenseI2C.pin2 = 5 except: currSenseI2C="" cpldRegProg=USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS D") info("Device handles instantiated") writer="Dummy" sys.path.append(ASTERIX_DIR+r"\lib\projectsRootDir") lmkregProg = USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS D") gpioProg="" simulationMode=False except: error("Got an error Connecting to hardware. Running in Simulation Mode.") boardType="BENCH" writer="Dummy" if boardType=="BENCH": adcregProg = "" fpgaregProg = "" capDev="" else: dut0_spia= "" dut1_spia= "" dut0_spib= "" dut1_spib= "" lmkregProg = "" simulationMode=True gpioProg="" cpldRegProg="" class HWReset(object): """docstring for HWReset""" def __init__(self, regProgDevice=None, pin_no=None): super(HWReset, self).__init__() self.regProgDevice = regProgDevice self.pin_no = pin_no if self.regProgDevice!=None: for pin in range(8): exec("self.regProgDevice.pin" + str(pin) + "=5") else: pass def toggle(self): if self.regProgDevice!=None: exec("self.regProgDevice.pin" + str(self.pin_no) + "=3") delay(0.1) exec("self.regProgDevice.pin" + str(self.pin_no) + "=4") else: pass if boardType == "HSC1373": hwResetQPort= USBQPort(name="Kintex RegProgrammer",addr="Quad RS232-HS C") hwResetHandle = HWReset(regProgDevice = hwResetQPort, pin_no=0) else: hwResetHandle = HWReset() Globals.simulationMode = simulationMode
1) If the TI FPGA board is TSW14J58, run setup first. Then follow the bringup steps for TI FPGA.
HI Serken:
we answer and confirmations are on the below. Please check and response.
1.Which FPGA board you are using for TI FPGA? TWS14J56
2.Are your running setup and devinit before the bringup file? setup and devinit files are specific to FPGA board versions.
Latee procedures should be on the below. If the below procedures are not correct, please clarify us. Thanks a lot.
a. Run devinit_j58.py
b. Setup_j58.py
c. Alpha_EVM_bringup.py
d. Loopback.py
3.confirm the overwritetdd.txt setup.
we plan to use upper setup to run overwritetdd.txt by the below procedures. If procedures are not correct, please clarify us.
a. FPGA ARM CPU use configCustom2_4849p86.txt to communicate with AFE7799 by SPI interface.
b. FPGA ARM CPU use txt to communicate with AFE7799 by SPI interface.
4. confirm the loopback.txt setup
a. Rx1 and Tx1 porting mapping
Rx1 is right picture 1RxB or not?
Tx1 is right picture 1TX or not?
b. loopback.txt can run at TDD mode or not?
Alpha configCustom2_4849p86.txt file is TDD mode. Loopback.txt can run at TDD mode or not? If AFE7799 can not run at TDD mode, how to force 7799 at TDD mode before run loopback.txt
c. procedures confirm
If loopback.txt can run after tdd mode configCustom2_4849p86.txt, please confirm below procedures are correct or not?
c.1 FPGA ARM CPU use configCustom2_4849p86.txt to communicate with AFE7799 by SPI interface
c.2 FPGA ARM CPU use loopback.txt to communicate with AFE7799 by SPI interface
Hi Serkan,
Which FPGA board you are using for TI FPGA?
Originally they used 'J56EVM to test but they also have 'J58EVM on hand and in order to make us easier to debug/compare and to have as small difference as with your provided script files.
1) If the TI FPGA board is TSW14J58, run setup first. Then follow the bringup steps for TI FPGA.
Here are some result from their test with 'J58EVM with AFE7769EVM followed your suggested steps. But showing some error and need your help to advise.
Power Supply 5.5V (Fail) :JESD204 sync failure, K code sync failure.
a. Setup_j58.py
b. Run devinit_j58.py
c. Alpha_EVM_bringup.py
d. Loopback.py
#====== #Executing .. AFE77xx/J58_initial/setup_J58.py #Start Time 2024-02-15 15:34:33.477000 AFE77xxLibraryPG1P1 Automatic reset of fpga will not be supported. spi - USB Instrument created. resetDevice Purge MPSSE mode set LMK RegProgrammer - USB Instrument created. CPLD RegProgrammer - USB Instrument created. #Done executing .. AFE77xx/J58_initial/setup_J58.py #End Time 2024-02-15 15:34:39.374000 #Execution Time = 5.89700007439 s #================ ERRORS:0, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/devInit_J58.py #Start Time 2024-02-15 15:34:41.050000 Version : 0x104204b Connected to Capture Card Successfully Loaded the Libraries. Could not find attribute _logWidget in systemParamClassiGui Couldn't load iGui 13 #Done executing .. AFE77xx/J58_initial/devInit_J58.py #End Time 2024-02-15 15:35:23.750000 #Execution Time = 42.7000000477 s #================ ERRORS:1, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #Start Time 2024-02-15 15:35:32.142000 DONOT_OPEN_Afe77xxPG1p1_FULL - Device registers reset. chipType: 0xff chipId: 0xffff chipVersion: 0xff 2T2R1F Number: 0 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 2T2R1F Number: 1 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 SPI not working. #Done executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #End Time 2024-02-15 15:35:34.307000 #Execution Time = 2.16499996185 s #================ ERRORS:1, WARNINGS:0 ================# #====== #Executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #Start Time 2024-02-15 15:35:41.834000 DONOT_OPEN_Afe77xxPG1p1_FULL - Device registers reset. chipType: 0xa chipId: 0x77 chipVersion: 0x11 2T2R1F Number: 0 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 2T2R1F Number: 1 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 Resetting FPGA. Reset the FPGA and try again. LMK Clock Divider - Device registers reset. lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) LMK Clock Divider - Device registers reset. lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) lmk.writeReg(330,0x00000003) lmk.writeReg(330,0x00000033) lmk.writeReg(000,0x00000000) lmk.writeReg(002,0x00000000) lmk.writeReg(256,0x0000000C) lmk.writeReg(256,0x0000000C) lmk.writeReg(256,0x0000000C) lmk.writeReg(257,0x00000055) lmk.writeReg(257,0x00000055) lmk.writeReg(259,0x00000001) lmk.writeReg(259,0x00000001) lmk.writeReg(259,0x00000001) lmk.writeReg(260,0x00000000) lmk.writeReg(260,0x00000000) lmk.writeReg(260,0x00000020) lmk.writeReg(260,0x00000020) lmk.writeReg(261,0x00000000) lmk.writeReg(261,0x00000000) lmk.writeReg(262,0x00000018) lmk.writeReg(262,0x00000018) lmk.writeReg(262,0x00000010) lmk.writeReg(262,0x00000010) lmk.writeReg(262,0x00000090) lmk.writeReg(263,0x00000001) lmk.writeReg(263,0x00000001) lmk.writeReg(263,0x00000011) lmk.writeReg(263,0x00000011) lmk.writeReg(264,0x00000006) lmk.writeReg(264,0x00000026) lmk.writeReg(264,0x00000066) lmk.writeReg(265,0x00000055) lmk.writeReg(265,0x00000055) lmk.writeReg(267,0x00000001) lmk.writeReg(267,0x00000001) lmk.writeReg(267,0x00000001) lmk.writeReg(268,0x00000000) lmk.writeReg(268,0x00000000) lmk.writeReg(268,0x00000020) lmk.writeReg(268,0x00000020) lmk.writeReg(269,0x00000000) lmk.writeReg(269,0x00000000) lmk.writeReg(270,0x00000018) lmk.writeReg(270,0x00000018) lmk.writeReg(270,0x00000010) lmk.writeReg(270,0x00000010) lmk.writeReg(270,0x00000090) lmk.writeReg(271,0x00000004) REFCLOCK is used from LMK source, ensure board connections are ok to do the same lmk.writeReg(271,0x00000004) lmk.writeReg(271,0x00000014) lmk.writeReg(271,0x00000014) lmk.writeReg(272,0x00000008) lmk.writeReg(272,0x00000008) lmk.writeReg(272,0x00000008) lmk.writeReg(273,0x00000055) lmk.writeReg(273,0x00000055) lmk.writeReg(275,0x00000000) lmk.writeReg(275,0x00000000) lmk.writeReg(275,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(277,0x00000000) lmk.writeReg(277,0x00000000) lmk.writeReg(278,0x00000011) lmk.writeReg(278,0x00000011) lmk.writeReg(278,0x00000019) lmk.writeReg(278,0x00000019) lmk.writeReg(278,0x00000099) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(280,0x00000018) lmk.writeReg(280,0x00000018) lmk.writeReg(280,0x00000018) lmk.writeReg(281,0x00000055) lmk.writeReg(281,0x00000055) lmk.writeReg(283,0x00000000) lmk.writeReg(283,0x00000000) lmk.writeReg(283,0x00000000) lmk.writeReg(284,0x00000000) lmk.writeReg(284,0x00000000) lmk.writeReg(284,0x00000020) lmk.writeReg(284,0x00000020) lmk.writeReg(285,0x00000000) lmk.writeReg(285,0x00000000) lmk.writeReg(286,0x00000011) lmk.writeReg(286,0x00000011) lmk.writeReg(286,0x00000019) lmk.writeReg(286,0x00000019) lmk.writeReg(286,0x00000099) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(288,0x0000000C) lmk.writeReg(288,0x0000000C) lmk.writeReg(288,0x0000000C) lmk.writeReg(289,0x00000055) lmk.writeReg(289,0x00000055) lmk.writeReg(291,0x00000000) lmk.writeReg(291,0x00000000) lmk.writeReg(291,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(293,0x00000000) lmk.writeReg(293,0x00000000) lmk.writeReg(294,0x00000011) lmk.writeReg(294,0x00000011) lmk.writeReg(294,0x00000019) lmk.writeReg(294,0x00000019) lmk.writeReg(294,0x00000099) lmk.writeReg(295,0x00000001) lmk.writeReg(295,0x00000001) lmk.writeReg(295,0x00000011) lmk.writeReg(295,0x00000011) lmk.writeReg(296,0x00000008) lmk.writeReg(296,0x00000008) lmk.writeReg(296,0x00000008) lmk.writeReg(297,0x00000055) lmk.writeReg(297,0x00000055) lmk.writeReg(299,0x00000000) lmk.writeReg(299,0x00000000) lmk.writeReg(299,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(301,0x00000000) lmk.writeReg(301,0x00000000) lmk.writeReg(302,0x00000011) lmk.writeReg(302,0x00000011) lmk.writeReg(302,0x00000019) lmk.writeReg(302,0x00000019) lmk.writeReg(302,0x00000099) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(304,0x0000000C) lmk.writeReg(304,0x0000000C) lmk.writeReg(304,0x0000000C) lmk.writeReg(305,0x00000055) lmk.writeReg(305,0x00000055) lmk.writeReg(307,0x00000000) lmk.writeReg(307,0x00000000) lmk.writeReg(307,0x00000000) lmk.writeReg(308,0x00000000) lmk.writeReg(308,0x00000000) lmk.writeReg(308,0x00000020) lmk.writeReg(308,0x00000020) lmk.writeReg(309,0x00000000) lmk.writeReg(309,0x00000000) lmk.writeReg(310,0x00000019) lmk.writeReg(310,0x00000019) lmk.writeReg(310,0x00000011) lmk.writeReg(310,0x00000011) lmk.writeReg(310,0x00000091) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(312,0x00000000) lmk.writeReg(312,0x00000000) lmk.writeReg(312,0x00000020) lmk.writeReg(313,0x00000003) lmk.writeReg(313,0x00000003) lmk.writeReg(315,0x00000000) lmk.writeReg(314,0x00000003) lmk.writeReg(317,0x00000008) lmk.writeReg(316,0x00000000) lmk.writeReg(318,0x00000003) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(320,0x00000006) lmk.writeReg(320,0x00000004) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(322,0x00000000) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000012) lmk.writeReg(324,0x00000001) lmk.writeReg(324,0x00000003) lmk.writeReg(324,0x00000007) lmk.writeReg(324,0x0000000F) lmk.writeReg(324,0x0000001F) lmk.writeReg(324,0x0000003F) lmk.writeReg(324,0x0000007F) lmk.writeReg(324,0x000000FF) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000010) lmk.writeReg(326,0x00000010) lmk.writeReg(326,0x00000010) lmk.writeReg(327,0x0000003A) lmk.writeReg(327,0x0000003A) lmk.writeReg(327,0x0000001A) lmk.writeReg(327,0x0000001A) lmk.writeReg(328,0x00000002) lmk.writeReg(328,0x00000002) lmk.writeReg(329,0x00000042) lmk.writeReg(329,0x00000042) lmk.writeReg(329,0x00000042) lmk.writeReg(332,0x00000000) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(333,0x00000000) lmk.writeReg(334,0x00000000) lmk.writeReg(334,0x000000C0) lmk.writeReg(335,0x0000007F) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000043) lmk.writeReg(338,0x00000000) lmk.writeReg(337,0x00000002) lmk.writeReg(340,0x00000078) lmk.writeReg(339,0x00000000) lmk.writeReg(342,0x0000007D) lmk.writeReg(341,0x00000000) lmk.writeReg(344,0x00000096) lmk.writeReg(343,0x00000000) lmk.writeReg(346,0x00000000) lmk.writeReg(345,0x00000006) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(349,0x00000000) lmk.writeReg(348,0x00000020) lmk.writeReg(350,0x00000000) lmk.writeReg(350,0x00000000) lmk.writeReg(351,0x0000000B) lmk.writeReg(351,0x0000000B) lmk.writeReg(353,0x00000001) lmk.writeReg(352,0x00000000) lmk.writeReg(354,0x0000005C) lmk.writeReg(354,0x0000005C) lmk.writeReg(354,0x00000044) lmk.writeReg(354,0x00000044) lmk.writeReg(357,0x0000000C) lmk.writeReg(356,0x00000000) lmk.writeReg(355,0x00000000) lmk.writeReg(358,0x00000000) lmk.writeReg(360,0x0000000C) lmk.writeReg(359,0x00000000) lmk.writeReg(358,0x00000000) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(363,0x00000000) lmk.writeReg(362,0x00000020) lmk.writeReg(364,0x00000000) lmk.writeReg(364,0x00000000) lmk.writeReg(365,0x00000000) lmk.writeReg(365,0x00000000) lmk.writeReg(366,0x00000013) lmk.writeReg(366,0x00000013) lmk.writeReg(380,0x00000015) lmk.writeReg(381,0x0000000F) Reset the FPGA and try again. Fuse farm load autoload done successful No autload error Purge Purge MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False Purge MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False SPIA has got control of PLL pages pll0: True; LO Frequency: 4849.86 pll1: True; LO Frequency: 2949.12 PLL Pages SPI control relinquished. FB DSA 4.9G Band Purge Purge Purge *TX IQMC Patch Apply* SPIA has got control of PLL pages PLL Pages SPI control relinquished. FW_VERSION=0x11119e attack_value: 2899.74593284 decay_value: 1829.61599345 attack_value: 3253.56844943 decay_value: 2052.86290894 attack_value: 2899.74593284 decay_value: 1829.61599345 attack_value: 3253.56844943 decay_value: 2052.86290894 SPIA has got control of PLL pages PLL Pages SPI control relinquished. Sysref to RX AB, Read: 3; expected: 3 Sysref to RX CD, Read: 3; expected: 3 Sysref to FB A, Read: 1; expected: 1 Sysref to FB D, Read: 1; expected: 1 Sysref to TX AB, Read: 255; expected: 7 Sysref to TX CD, Read: 255; expected: 7 Digital Clock, Read: True; expected: 1 Sysref to Digital, Read: True; expected: 1 Sysref to Analog, Read: 65535; expected: 7 lmk.writeReg(262,0x000000F0) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### lmk.writeReg(262,0x000000F1) lmk.writeReg(262,0x000000F0) ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### lmk.writeReg(262,0x000000F1) lmk.writeReg(262,0x000000F0) lmk.writeReg(262,0x000000F1) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### SPIA has got control of PLL pages PLL Pages SPI control relinquished. MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: True MACRO_ERROR_IN_OPCODE: True MACRO_ERROR_OPCODE_NOT_ALLOWED: True MACRO_ERROR_IN_OPERAND: True MACRO_ERROR_IN_EXECUTION: True MACRO_ERROR_OPCODE: 255 MACRO_ERROR_EXTENDED: 65535 MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: True MACRO_ERROR_IN_OPCODE: True MACRO_ERROR_OPCODE_NOT_ALLOWED: True MACRO_ERROR_IN_OPERAND: True MACRO_ERROR_IN_EXECUTION: True MACRO_ERROR_OPCODE: 255 MACRO_ERROR_EXTENDED: 65535 TX IQMC: TX-FB loopback selection is in SPI mode. To change to pin, use "AFE.TOP.txIqmcFbLoopbackControl(1)" #Done executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #End Time 2024-02-15 15:46:01.884000 #Execution Time = 620.049999952 s #================ ERRORS:85, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/loopback.py #Start Time 2024-02-15 15:46:39.417000 device.writeReg(0x15,0x08) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000048,0x000000FF) device.writeReg(0x48,0xF7) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000048,0x000000FF) device.writeReg(0x48,0xFD) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xE3) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xFF) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xFE) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004686,0x000000FF) device.readReg(0x00004686,0x000000FF) device.writeReg(0x4687,0xFF) device.writeReg(0x4686,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004486,0x000000FF) device.readReg(0x00004486,0x000000FF) device.writeReg(0x4487,0xFF) device.writeReg(0x4486,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004086,0x000000FF) device.readReg(0x00004086,0x000000FF) device.writeReg(0x4087,0xFF) device.writeReg(0x4086,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004286,0x000000FF) device.readReg(0x00004286,0x000000FF) device.writeReg(0x4287,0xFF) device.writeReg(0x4286,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004286,0x000000FF) device.readReg(0x00004286,0x000000FF) device.writeReg(0x4287,0xFF) device.writeReg(0x4286,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004086,0x000000FF) device.readReg(0x00004086,0x000000FF) device.writeReg(0x4087,0xFF) device.writeReg(0x4086,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004486,0x000000FF) device.readReg(0x00004486,0x000000FF) device.writeReg(0x4487,0xFF) device.writeReg(0x4486,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004686,0x000000FF) device.readReg(0x00004686,0x000000FF) device.writeReg(0x4687,0xFF) device.writeReg(0x4686,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x01) device.writeReg(0x15,0x01) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xFC) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xFC) device.writeReg(0x15,0x11) device.writeReg(0x15,0x01) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xF0) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xF0) device.writeReg(0x15,0x10) device.writeReg(0x15,0x00) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### #Done executing .. AFE77xx/J58_initial/loopback.py #End Time 2024-02-15 15:47:13.332000 #Execution Time = 33.9149999619 s #================ ERRORS:34, WARNINGS:0 ================#
Not sure if the supply matters, they did another test with 6V.
Power Supply 6V (Fail) : JESD204 sync failure, K code sync failure.
a. Setup_j58.py
b. Run devinit_j58.py
c. Alpha_EVM_bringup.py
d. Loopback.py
Switch_A_a_B_6V_latte_infor.txt
#====== #Executing .. AFE77xx/J58_initial/setup_J58.py #Start Time 2024-02-15 16:45:49.937000 AFE77xxLibraryPG1P1 Automatic reset of fpga will not be supported. spi - USB Instrument created. resetDevice Purge MPSSE mode set LMK RegProgrammer - USB Instrument created. CPLD RegProgrammer - USB Instrument created. #Done executing .. AFE77xx/J58_initial/setup_J58.py #End Time 2024-02-15 16:45:55.729000 #Execution Time = 5.79200005531 s #================ ERRORS:0, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/devInit_J58.py #Start Time 2024-02-15 16:46:12.428000 Version : 0x104204b Connected to Capture Card Successfully Loaded the Libraries. Could not find attribute _logWidget in systemParamClassiGui Couldn't load iGui 13 #Done executing .. AFE77xx/J58_initial/devInit_J58.py #End Time 2024-02-15 16:46:53.245000 #Execution Time = 40.8169999123 s #================ ERRORS:1, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #Start Time 2024-02-15 16:47:04.933000 DONOT_OPEN_Afe77xxPG1p1_FULL - Device registers reset. chipType: 0xa chipId: 0x77 chipVersion: 0x11 2T2R1F Number: 0 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 2T2R1F Number: 1 Valid Configuration: True laneRateRx: 4915.2 laneRateFb: 4915.2 laneRateTx: 4915.2 Resetting FPGA. Version : 0x104204b Connected to Capture Card LMK Clock Divider - Device registers reset. lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) LMK Clock Divider - Device registers reset. lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) lmk.writeReg(000,0x00000080) lmk.writeReg(000,0x00000000) lmk.writeReg(330,0x00000003) lmk.writeReg(330,0x00000033) lmk.writeReg(000,0x00000000) lmk.writeReg(002,0x00000000) lmk.writeReg(256,0x0000000C) lmk.writeReg(256,0x0000000C) lmk.writeReg(256,0x0000000C) lmk.writeReg(257,0x00000055) lmk.writeReg(257,0x00000055) lmk.writeReg(259,0x00000001) lmk.writeReg(259,0x00000001) lmk.writeReg(259,0x00000001) lmk.writeReg(260,0x00000000) lmk.writeReg(260,0x00000000) lmk.writeReg(260,0x00000020) lmk.writeReg(260,0x00000020) lmk.writeReg(261,0x00000000) lmk.writeReg(261,0x00000000) lmk.writeReg(262,0x00000018) lmk.writeReg(262,0x00000018) lmk.writeReg(262,0x00000010) lmk.writeReg(262,0x00000010) lmk.writeReg(262,0x00000090) lmk.writeReg(263,0x00000001) lmk.writeReg(263,0x00000001) lmk.writeReg(263,0x00000011) lmk.writeReg(263,0x00000011) lmk.writeReg(264,0x00000006) lmk.writeReg(264,0x00000026) lmk.writeReg(264,0x00000066) lmk.writeReg(265,0x00000055) lmk.writeReg(265,0x00000055) lmk.writeReg(267,0x00000001) lmk.writeReg(267,0x00000001) lmk.writeReg(267,0x00000001) lmk.writeReg(268,0x00000000) lmk.writeReg(268,0x00000000) lmk.writeReg(268,0x00000020) lmk.writeReg(268,0x00000020) lmk.writeReg(269,0x00000000) lmk.writeReg(269,0x00000000) lmk.writeReg(270,0x00000018) lmk.writeReg(270,0x00000018) lmk.writeReg(270,0x00000010) lmk.writeReg(270,0x00000010) lmk.writeReg(270,0x00000090) lmk.writeReg(271,0x00000004) REFCLOCK is used from LMK source, ensure board connections are ok to do the same lmk.writeReg(271,0x00000004) lmk.writeReg(271,0x00000014) lmk.writeReg(271,0x00000014) lmk.writeReg(272,0x00000008) lmk.writeReg(272,0x00000008) lmk.writeReg(272,0x00000008) lmk.writeReg(273,0x00000055) lmk.writeReg(273,0x00000055) lmk.writeReg(275,0x00000000) lmk.writeReg(275,0x00000000) lmk.writeReg(275,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(276,0x00000000) lmk.writeReg(277,0x00000000) lmk.writeReg(277,0x00000000) lmk.writeReg(278,0x00000011) lmk.writeReg(278,0x00000011) lmk.writeReg(278,0x00000019) lmk.writeReg(278,0x00000019) lmk.writeReg(278,0x00000099) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(279,0x00000000) lmk.writeReg(280,0x00000018) lmk.writeReg(280,0x00000018) lmk.writeReg(280,0x00000018) lmk.writeReg(281,0x00000055) lmk.writeReg(281,0x00000055) lmk.writeReg(283,0x00000000) lmk.writeReg(283,0x00000000) lmk.writeReg(283,0x00000000) lmk.writeReg(284,0x00000000) lmk.writeReg(284,0x00000000) lmk.writeReg(284,0x00000020) lmk.writeReg(284,0x00000020) lmk.writeReg(285,0x00000000) lmk.writeReg(285,0x00000000) lmk.writeReg(286,0x00000011) lmk.writeReg(286,0x00000011) lmk.writeReg(286,0x00000019) lmk.writeReg(286,0x00000019) lmk.writeReg(286,0x00000099) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(287,0x00000000) lmk.writeReg(288,0x0000000C) lmk.writeReg(288,0x0000000C) lmk.writeReg(288,0x0000000C) lmk.writeReg(289,0x00000055) lmk.writeReg(289,0x00000055) lmk.writeReg(291,0x00000000) lmk.writeReg(291,0x00000000) lmk.writeReg(291,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(292,0x00000000) lmk.writeReg(293,0x00000000) lmk.writeReg(293,0x00000000) lmk.writeReg(294,0x00000011) lmk.writeReg(294,0x00000011) lmk.writeReg(294,0x00000019) lmk.writeReg(294,0x00000019) lmk.writeReg(294,0x00000099) lmk.writeReg(295,0x00000001) lmk.writeReg(295,0x00000001) lmk.writeReg(295,0x00000011) lmk.writeReg(295,0x00000011) lmk.writeReg(296,0x00000008) lmk.writeReg(296,0x00000008) lmk.writeReg(296,0x00000008) lmk.writeReg(297,0x00000055) lmk.writeReg(297,0x00000055) lmk.writeReg(299,0x00000000) lmk.writeReg(299,0x00000000) lmk.writeReg(299,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(300,0x00000000) lmk.writeReg(301,0x00000000) lmk.writeReg(301,0x00000000) lmk.writeReg(302,0x00000011) lmk.writeReg(302,0x00000011) lmk.writeReg(302,0x00000019) lmk.writeReg(302,0x00000019) lmk.writeReg(302,0x00000099) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(303,0x00000000) lmk.writeReg(304,0x0000000C) lmk.writeReg(304,0x0000000C) lmk.writeReg(304,0x0000000C) lmk.writeReg(305,0x00000055) lmk.writeReg(305,0x00000055) lmk.writeReg(307,0x00000000) lmk.writeReg(307,0x00000000) lmk.writeReg(307,0x00000000) lmk.writeReg(308,0x00000000) lmk.writeReg(308,0x00000000) lmk.writeReg(308,0x00000020) lmk.writeReg(308,0x00000020) lmk.writeReg(309,0x00000000) lmk.writeReg(309,0x00000000) lmk.writeReg(310,0x00000019) lmk.writeReg(310,0x00000019) lmk.writeReg(310,0x00000011) lmk.writeReg(310,0x00000011) lmk.writeReg(310,0x00000091) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(311,0x00000001) lmk.writeReg(312,0x00000000) lmk.writeReg(312,0x00000000) lmk.writeReg(312,0x00000020) lmk.writeReg(313,0x00000003) lmk.writeReg(313,0x00000003) lmk.writeReg(315,0x00000000) lmk.writeReg(314,0x00000003) lmk.writeReg(317,0x00000008) lmk.writeReg(316,0x00000000) lmk.writeReg(318,0x00000003) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(319,0x00000000) lmk.writeReg(320,0x00000006) lmk.writeReg(320,0x00000004) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(320,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(321,0x00000000) lmk.writeReg(322,0x00000000) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000092) lmk.writeReg(323,0x00000012) lmk.writeReg(324,0x00000001) lmk.writeReg(324,0x00000003) lmk.writeReg(324,0x00000007) lmk.writeReg(324,0x0000000F) lmk.writeReg(324,0x0000001F) lmk.writeReg(324,0x0000003F) lmk.writeReg(324,0x0000007F) lmk.writeReg(324,0x000000FF) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000018) lmk.writeReg(326,0x00000010) lmk.writeReg(326,0x00000010) lmk.writeReg(326,0x00000010) lmk.writeReg(327,0x0000003A) lmk.writeReg(327,0x0000003A) lmk.writeReg(327,0x0000001A) lmk.writeReg(327,0x0000001A) lmk.writeReg(328,0x00000002) lmk.writeReg(328,0x00000002) lmk.writeReg(329,0x00000042) lmk.writeReg(329,0x00000042) lmk.writeReg(329,0x00000042) lmk.writeReg(332,0x00000000) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(331,0x00000016) lmk.writeReg(333,0x00000000) lmk.writeReg(334,0x00000000) lmk.writeReg(334,0x000000C0) lmk.writeReg(335,0x0000007F) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000003) lmk.writeReg(336,0x00000043) lmk.writeReg(338,0x00000000) lmk.writeReg(337,0x00000002) lmk.writeReg(340,0x00000078) lmk.writeReg(339,0x00000000) lmk.writeReg(342,0x0000007D) lmk.writeReg(341,0x00000000) lmk.writeReg(344,0x00000096) lmk.writeReg(343,0x00000000) lmk.writeReg(346,0x00000000) lmk.writeReg(345,0x00000006) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(347,0x000000D4) lmk.writeReg(349,0x00000000) lmk.writeReg(348,0x00000020) lmk.writeReg(350,0x00000000) lmk.writeReg(350,0x00000000) lmk.writeReg(351,0x0000000B) lmk.writeReg(351,0x0000000B) lmk.writeReg(353,0x00000001) lmk.writeReg(352,0x00000000) lmk.writeReg(354,0x0000005C) lmk.writeReg(354,0x0000005C) lmk.writeReg(354,0x00000044) lmk.writeReg(354,0x00000044) lmk.writeReg(357,0x0000000C) lmk.writeReg(356,0x00000000) lmk.writeReg(355,0x00000000) lmk.writeReg(358,0x00000000) lmk.writeReg(360,0x0000000C) lmk.writeReg(359,0x00000000) lmk.writeReg(358,0x00000000) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(361,0x00000058) lmk.writeReg(363,0x00000000) lmk.writeReg(362,0x00000020) lmk.writeReg(364,0x00000000) lmk.writeReg(364,0x00000000) lmk.writeReg(365,0x00000000) lmk.writeReg(365,0x00000000) lmk.writeReg(366,0x00000013) lmk.writeReg(366,0x00000013) lmk.writeReg(380,0x00000015) lmk.writeReg(381,0x0000000F) Version : 0x104204b Connected to Capture Card Fuse farm load autoload done successful No autload error Purge Purge MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False Purge MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: False SPIA has got control of PLL pages pll0: True; LO Frequency: 4849.86 pll1: True; LO Frequency: 2949.12 PLL Pages SPI control relinquished. FB DSA 4.9G Band Purge Purge Purge *TX IQMC Patch Apply* SPIA has got control of PLL pages PLL Pages SPI control relinquished. FW_VERSION=0x11119e attack_value: 2899.74593284 decay_value: 1829.61599345 attack_value: 3253.56844943 decay_value: 2052.86290894 attack_value: 2899.74593284 decay_value: 1829.61599345 attack_value: 3253.56844943 decay_value: 2052.86290894 SPIA has got control of PLL pages PLL Pages SPI control relinquished. Sysref to RX AB, Read: 3; expected: 3 Sysref to RX CD, Read: 3; expected: 3 Sysref to FB A, Read: 1; expected: 1 Sysref to FB D, Read: 1; expected: 1 Sysref to TX AB, Read: 255; expected: 7 Sysref to TX CD, Read: 255; expected: 7 Digital Clock, Read: True; expected: 1 Sysref to Digital, Read: True; expected: 1 Sysref to Analog, Read: 65535; expected: 7 lmk.writeReg(262,0x000000F0) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### lmk.writeReg(262,0x000000F1) lmk.writeReg(262,0x000000F0) ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### lmk.writeReg(262,0x000000F1) lmk.writeReg(262,0x000000F0) lmk.writeReg(262,0x000000F1) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### SPIA has got control of PLL pages PLL Pages SPI control relinquished. MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: True MACRO_ERROR_IN_OPCODE: True MACRO_ERROR_OPCODE_NOT_ALLOWED: True MACRO_ERROR_IN_OPERAND: True MACRO_ERROR_IN_EXECUTION: True MACRO_ERROR_OPCODE: 255 MACRO_ERROR_EXTENDED: 65535 MACRO_READY: True MACRO_ACK: True MACRO_DONE: True MACRO_ERROR: True MACRO_ERROR_IN_OPCODE: True MACRO_ERROR_OPCODE_NOT_ALLOWED: True MACRO_ERROR_IN_OPERAND: True MACRO_ERROR_IN_EXECUTION: True MACRO_ERROR_OPCODE: 255 MACRO_ERROR_EXTENDED: 65535 TX IQMC: TX-FB loopback selection is in SPI mode. To change to pin, use "AFE.TOP.txIqmcFbLoopbackControl(1)" #Done executing .. AFE77xx/J58_initial/Alpha_EVM_bringup.py #End Time 2024-02-15 16:57:20.246000 #Execution Time = 615.312999964 s #================ ERRORS:83, WARNINGS:1 ================# #====== #Executing .. AFE77xx/J58_initial/loopback.py #Start Time 2024-02-15 16:58:21.842000 device.writeReg(0x15,0x08) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000048,0x000000FF) device.writeReg(0x48,0xF7) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000048,0x000000FF) device.writeReg(0x48,0xFD) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xE3) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xFF) device.readReg(0x0000004B,0x000000FF) device.readReg(0x0000004A,0x000000FF) device.readReg(0x00000049,0x000000FF) device.writeReg(0x49,0xFE) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004686,0x000000FF) device.readReg(0x00004686,0x000000FF) device.writeReg(0x4687,0xFF) device.writeReg(0x4686,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004486,0x000000FF) device.readReg(0x00004486,0x000000FF) device.writeReg(0x4487,0xFF) device.writeReg(0x4486,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004086,0x000000FF) device.readReg(0x00004086,0x000000FF) device.writeReg(0x4087,0xFF) device.writeReg(0x4086,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000021,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x04) device.writeReg(0x15,0x04) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004286,0x000000FF) device.readReg(0x00004286,0x000000FF) device.writeReg(0x4287,0xFF) device.writeReg(0x4286,0xFF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004287,0x000000FF) device.readReg(0x00004286,0x000000FF) device.readReg(0x00004286,0x000000FF) device.writeReg(0x4287,0xFF) device.writeReg(0x4286,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004087,0x000000FF) device.readReg(0x00004086,0x000000FF) device.readReg(0x00004086,0x000000FF) device.writeReg(0x4087,0xFF) device.writeReg(0x4086,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004487,0x000000FF) device.readReg(0x00004486,0x000000FF) device.readReg(0x00004486,0x000000FF) device.writeReg(0x4487,0xFF) device.writeReg(0x4486,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x08) device.readReg(0x00000022,0x000000FF) device.writeReg(0x15,0x00) device.writeReg(0x15,0x00) device.writeReg(0x15,0x40) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004687,0x000000FF) device.readReg(0x00004686,0x000000FF) device.readReg(0x00004686,0x000000FF) device.writeReg(0x4687,0xFF) device.writeReg(0x4686,0xFF) device.writeReg(0x15,0x40) device.writeReg(0x15,0x00) device.writeReg(0x15,0x01) device.writeReg(0x15,0x01) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xFC) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xFC) device.writeReg(0x15,0x11) device.writeReg(0x15,0x01) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xF0) device.writeReg(0x15,0x00) device.writeReg(0x15,0x10) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xCF) device.readReg(0x00000073,0x000000FF) device.readReg(0x00000072,0x000000FF) device.writeReg(0x72,0xF0) device.writeReg(0x15,0x10) device.writeReg(0x15,0x00) ###########Device DAC JESD-RX 0 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L ################################### ###########Device DAC JESD-RX 1 Link Status########### LOS Indicator for (Serdes Loss of signal) lane 0: 1 Frame Sync error (unexpected k28.5) for lane 0: 1 LOS Indicator for (Serdes Loss of signal) lane 1: 1 Frame Sync error (unexpected k28.5) for lane 1: 1 LOS Indicator for (Serdes Loss of signal) lane 2: 1 Frame Sync error (unexpected k28.5) for lane 2: 1 LOS Indicator for (Serdes Loss of signal) lane 3: 1 Frame Sync error (unexpected k28.5) for lane 3: 1 lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state); lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error; CS State TX0: 0b11111111 . It is expected to be 0b00001010 FS State TX0: 0b11111111 . It is expected to be 0b00000101 Couldn't get the link up for device RX: 1; Alarms: 0xfffffffffffffff7L ################################### #Done executing .. AFE77xx/J58_initial/loopback.py #End Time 2024-02-15 16:58:53.835000 #Execution Time = 31.9930000305 s #================ ERRORS:34, WARNINGS:0 ================#
Both two tests stop at the same stage. The error message:
LOS Indicator for (Serdes Loss of signal) lane 0: 1
Frame Sync error (unexpected k28.5) for lane 0: 1
LOS Indicator for (Serdes Loss of signal) lane 1: 1
Frame Sync error (unexpected k28.5) for lane 1: 1
LOS Indicator for (Serdes Loss of signal) lane 2: 1
Frame Sync error (unexpected k28.5) for lane 2: 1
LOS Indicator for (Serdes Loss of signal) lane 3: 1
Frame Sync error (unexpected k28.5) for lane 3: 1
lane0 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state);
lane1 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state);
lane2 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state);
lane3 FIFO Errors=0b1111; Got errors: read_empty : FIFO is empty; read_error : High if read request with empty FIFO (NOTE: only released when JESD block is initialized with init_state); write_full : FIFO is FULL; write_error : High if write request and FIFO is full (NOTE: only released when JESD block is initialized with init_state);
lane0 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error;
lane1 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error;
lane2 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error;
lane3 Errors=0b11111111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values; elastic buffer overflow (bad RBD value); link configuration error; frame alignment error; multiframe alignment error;
CS State TX0: 0b11111111 . It is expected to be 0b00001010
FS State TX0: 0b11111111 . It is expected to be 0b00000101
Couldn't get the link up for device RX: 0; Alarms: 0xfffffffffffffff7L
I would like to recommend Tzuchung to override the RXTDD to have the RX chain always enabled, as requested on Jan 29th, 2024.
Per Kang's advice, they had done a test to override the RXTDD by FPGA GPIO instead of using overrideTdd() function.
Start PRB0 and RXTDD is always On in FDD mode.
Not sure what might be difference but they will try with overrideTdd() function again and update the result.
Thanks,
Allan
Hi Kang, Serkan,
Customer optimized the Keysight DU emulator environment to do the different input power EVM test. The test setup is on the below.
https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/220/UL-256QAM-EVM_5F00_AFE7799_5F00_RX_5F00_input.7z
Below was UL 256Q EVM test data comparison from different input power measurement points by Keysight generator and SG.
When measured at AFE input, the range of amplitude is -25dBm to -45dBm and expect to see -55dBm to -75dBm at LNA.
From the result, EVM is still over 3% with -60dBm after LNA.
Regards,
Allan
Hi Serkan,
Finally, we had setup loopback successfully using brand new AFE77xxEVM C version + TSW14J58EVM but the noise floor seems quite high so 256QAM can't be demodulated. Could you please advise what can we do?
1. loopback without any signal. the noise floor is about -12dBm
2. loopback with single tone
3. loopback with 5G NR TM3.1a 256Q but failed to demodulation.
p.s. SG to SA directly without through EVMs. ACLR is good about -53/-54dBc. (need to below -45dBc)
Regards,
Allan
Allan,
The input and output signal may be digitally saturated. Please ask the customer team to refer to the AFE7799 datasheet, section 8.6 to understand the RX line-up and full-scale input power to ensure proper attenuation is set to not saturate the input.
The same applies to the TX output
Kang,
loopback without any signal. the noise floor is about -12dBm
This is a loopback setup without input signal and AFE Tx connect directly to the SA. So we thought the Rx input power should be no problem but don't know why output noise floor seems quite high and over the spec. Anything else that we can check/adjust?
Regards,
Allan