大家好、
我希望寻求帮助、以通过 GPIO 实现 RX NCO 切换。 我已经成功通过这种方式更改了 TX NCO、如本主题中所述:
https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1295365/afe7900evm-nco-frequency-configuration
然后我尝试用 RX 相关的内容(device.tt->device.rf、TXDIG->RXDIG 等)替换代码的 TX 特定部分。 尽管已加载 RX NCO 阵列的第一个元素、其他元素似乎没有效果、我甚至无法通过 IOWRAP.OverrideFunction 控制 GPIO 函数。 LMK 配置如下:
############## Read me ##############
#In HSDC Pro DAC tab, Select AFE79xx_2x2TX_44210; Data Rate = 491.52M
#In HSDC Pro ADC tab, Select AFE79xx_2x2RX_44210; Data Rate = 491.52M ---> To capture 4 RX channels
sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion
setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro
############## Top Level ##############
sysParams.FRef = 506
sysParams.FadcRx = 2530
sysParams.FadcFb = 2530
sysParams.Fdac = 2530*4
sysParams.externalClockRx=False
sysParams.externalClockTx=False
############## Digital Chain ##############
##### RX #####
sysParams.ncoFreqMode="FCW"
sysStatus.rxChainDirectCtrl=True
sysParams.rxChainDirectCtrl=True
sysParams.broadcastRxNcoSel=1
sysParams.numRxNco=16
sysParams.ncoRxMode=[6,6]
sysParams.ddcFactorRx = [5,5,5,5] #DDC decimation factor for RX A, B, C and D
sysParams.rxNco0 = [[1800,5400], #Band0, Band1 for RXA
[750,750], #Band0, Band1 for RXB
[3000,2500], #Band0, Band1 for RXC
[1800,1800]] #Band0, Band1 for RXD
##### FB #####
sysParams.fbEnable = [False,False]
sysParams.ddcFactorFb = [5,5] #DDC decimation factor for FB 1 and 2
sysParams.fbNco0 = [750,750] #Band0 for FB1 and FB2
##### TX #####
sysParams.ducFactorTx = [20,20,20,20] #DUC interpolation factor for TX A, B, C and D
sysParams.txNco0 = [[875.5,1800], #Band0, Band1 for TXA
[1987.5,1800], #Band0, Band1 for TXB
[3605,2500], #Band0, Band1 for TXC
[1800,1800]] #Band0, Band1 for TXD
############## JESD ##############
##### ADC-JESD #####
sysParams.jesdSystemMode= [3,3]
#SystemMode 0: 2R1F-FDD ; rx1-rx2-fb -fb
#SystemMode 1: 1R1F-FDD ; rx -rx -fb -fb
#SystemMode 2: 2R-FDD ; rx1-rx1-rx2-rx2
#SystemMode 3: 1R ; rx -rx -rx -rx
#SystemMode 4: 1F ; fb -fb- fb -fb
#SystemMode 5: 1R1F-TDD ; rx/fb-rx/fb-rx/fb-rx/fb
sysParams.jesdTxProtocol= [0,0] # 0 - 8b/10b encoding; 2 - 64b/66b encoding
sysParams.LMFSHdRx = ["44210","44210","44210","44210"]
# The 2nd and 4th are valid only for jesdSystemMode values in (0,2).
# For other modes, select 4 converter modes for 1st and 3rd.
sysParams.LMFSHdFb = ["22210","22210"]
sysParams.rxJesdTxScr = [True,True,True,True]
sysParams.fbJesdTxScr = [True,True]
sysParams.rxJesdTxK = [16,16,16,16]
sysParams.fbJesdTxK = [16,16]
sysParams.jesdTxLaneMux = [0,1,2,3,4,5,6,7] # Enter which lanes you want in each location.
# For example, if you want to exchange the first two lines of each 2T,
# this should be [[1,0,2,3],[5,4,6,7]]
##### DAC-JESD #####
sysParams.jesdRxProtocol= [0,0]
sysParams.LMFSHdTx = ["44210","44210","44210","44210"]
sysParams.jesdRxLaneMux = [0,1,2,3,4,5,6,7] # Enter which lanes you want in each location.
# For example, if you want to exchange the first two lines of each 2R
# this should be [[1,0,2,3],[5,4,6,7]]
sysParams.jesdRxRbd = [4, 4]
sysParams.jesdRxScr = [True,True,True,True]
sysParams.jesdRxK = [16,16,16,16]
##### JESD Common #####
sysParams.jesdABLvdsSync= False
sysParams.jesdCDLvdsSync= False
sysParams.syncLoopBack = True #JESD Sync signal is connected to FPGA
############## GPIO ##############
sysParams.gpioMapping = {
'H8': 'ADC_SYNC0',
'H7': 'DAC_SYNC0',
'N8': 'ADC_SYNC2',
'N7': 'ADC_SYNC3',
'H9': 'ADC_SYNC1',
'G9': 'DAC_SYNC1',
'N9': 'DAC_SYNC2',
'P9': 'DAC_SYNC3',
'P14': 'GLOBAL_PDN',
'K14': 'FBABTDD',
'R6': 'FBCDTDD',
'H15': ['TXATDD','TXBTDD'],
'V5': ['TXCTDD','TXDTDD'],
'E7': ['RXATDD','RXBTDD'],
'R15': ['RXCTDD','RXDTDD'],
'L14': ['RX_NCOSEL_3'],
'M14': ['RX_NCOSEL_2'],
'P13': ['RX_NCOSEL_1'],
'N12': ['RX_NCOSEL_0']}
############## LMK Params ##############
lmkParams.pllEn = False
lmkParams.inputClk = 506 #983.04 # Valid only when lmkParams.pllEn = False
lmkParams.lmkFrefClk = True
setupParams.fpgaRefClk = 126.5 # Should be equal to LaneRate/40 for TSW14J56
############## Logging ##############
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat=0x21 #Modify to 0x1 to save register scequence to log file. Script takes more time to execute.
logDumpInst.rewriteFile=1
logDumpInst.rewriteFileFormat4=1
device.optimizeWrites=0
device.rawWriteLogEn=1
device.delay_time = 0
#-------------------------------------------------------------------------------------------------#
setupParams.skipLmk = False
AFE.initializeConfig()
lmkParams.sysrefFreq = AFE.systemStatus.sysrefFreq
lmkParams.lmkPulseSysrefMode = False
AFE.LMK.lmkConfig()
AFE 配置如下:
## Initiates AFE79xx Bring-up setupParams.skipLmk = True AFE.deviceBringup() AFE.TOP.overrideTdd(15,3,15) #for i in range(4): AFE.DSA.setRxDsa(i,4) ### ADC Ramp Out # for i in range(3): # AFE.JESD.ADCJESD[0].adcRampTestPattern(i,1,1) # AFE.JESD.ADCJESD[1].adcRampTestPattern(i,1,1) #chNo, En, RampInc ### RX NCO Update rx_nco_freqs_ch_A=[ 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690] rx_nco_freqs_ch_B=[ 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690] rx_nco_freqs_ch_C=[ 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690] rx_nco_freqs_ch_D=[ 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690, 920.5,1185,290,690] id_ch_A=0 id_ch_B=1 id_ch_C=2 id_ch_D=3 for i,freq in enumerate(rx_nco_freqs_ch_A): AFE.updateRxNcoInfiniteNcoMode(id_ch_A,freq,i) for i,freq in enumerate(rx_nco_freqs_ch_B): AFE.updateRxNcoInfiniteNcoMode(id_ch_B,freq,i) for i,freq in enumerate(rx_nco_freqs_ch_C): AFE.updateRxNcoInfiniteNcoMode(id_ch_C,freq,i) for i,freq in enumerate(rx_nco_freqs_ch_D): AFE.updateRxNcoInfiniteNcoMode(id_ch_D,freq,i) for i in range(2): for j in range(2): device.RRF[j].RXDIG[i].RXDIG.REGGROUP_4.config_fmixer_update_pulse=0 device.RRF[j].RXDIG[i].RXDIG.REGGROUP_4.config_fmixer_update_pulse=1
您认为缺少什么? 提前感谢您的帮助!
此致、
Norbert