Thread 中讨论的其他器件: AFE7950
工具与软件:
早上好。
我们的团队正在尝试使用 Latte 软件配置连接到 TSW14J58的 AFE7950EVM 板。 我们希望对 ADC 进行配置、使一个块的 ADC 抽取值为3、另一个块的 ADC 抽取值为2、如数据表中所示的选项。
选择的系统模式为 rrfmode 0、其中 Rx、Tx 和 FB 处于 FDD 模式
但是、一旦 Latte 编译了配置、就 会返回错误消息"Current RX DDC Factor setting 在 FDD 模式下不受支持"。 查看 Latte 的 python 代码、可在软件上将该限制硬编码、其中表示当输出速率为1000和1500、ADC 采样率为3,000,2500或2000时、FFD 模式不可用。
这是为什么? 是否有办法在其他配置中实现类似行为?
预期行为如下:4Rx 和4Tx 无反馈、64b/66b、3600MHz 单频带、两个 ADC 输出速率为1000Msps、两个 ADC 输出速率为1500Msps、2个 DAC 输入速率为1000Msps、其他2个 DAC 输入速率为1500Msps。 为了避免 DAC 出现错误、我们设计中的有效 DAC 采样率将为6000和12000MSPS。
Latte 中使用的当前启动文件如下所示:
############## Read me ############## #In HSDC Pro DAC tab, Select AFE79xx_2x2TX_44210; Data Rate = 491.52M #In HSDC Pro ADC tab, Select AFE79xx_2x2RX_24410; Data Rate = 245.76M ---> To capture 4 RX channels #In HSDC Pro ADC tab, Select AFE79xx_1x2FB_44210; Data Rate = 491.52M ---> To capture 2 FB channels sysParams=AFE.systemParams sysParams.__init__();sysParams.chipVersion=chipVersion setupParams.skipFpga = 0 # setup FPGA (TSW14J58) ############## Top Level ############## sysParams.FRef = 491.52 # Recommended 2949.12/6 (interno o externo, ahora es interno) sysParams.FadcRx = 2949.12 # Dependen de si el reloj es interno o externo (ahora mismo es interno ) sysParams.FadcFb = 2949.12 # Dependen de si el reloj es interno o externo (ahora mismo es interno ) sysParams.Fdac = 2949.12*2 # Dependen de si el reloj es interno o externo (ahora mismo es interno ) sysParams.externalClockRx=False # Dependen de si el reloj es interno o externo (ahora mismo es interno ) sysParams.externalClockTx=False # Dependen de si el reloj es interno o externo (ahora mismo es interno) ############## Digital Chain ############## sysParams.RRFMode = 0 # FDD Mode. This is a typical FDD mode with 4TX, 4RX chains and 2 FB chains, # where all RX and FB chains have independent ADCs sysParams.ncoFreqMode = "FCW" # Its possible to configur number of NCO by band ##### RX ##### sysParams.ddcFactorRx = [3,3,2,2] #DDC decimation factor for RX A, B, C and D sysParams.numBandsRx = [0,0,0,0] # Single band # Rx A B BW 500MHz -> Relacion 1000/3000 Msps - 3 # Rx B C BW 1GHz -> Relacion 1500/3000 Msps - 2 sysParams.rxNco0 = [[3600,3600], #Band0, Band1 for RXA (media entre 3.3-3.9 GHz) [3600,3600], #Band0, Band1 for RXB (media entre 3.3-3.9 GHz) [3600,3600], #Band0, Band1 for RXC [3600,3600]] #Band0, Band1 for RXD ##### FB ##### sysParams.fbEnable = [False,False] sysParams.ddcFactorFb = [3,3] #DDC decimation factor for FB 1 and 2 sysParams.fbNco0 = [3600,3600] #Band0 for FB1 and FB2 ##### TX ##### sysParams.ducFactorTx = [6,6,4,4] #DUC interpolation factor for TX A, B, C and D sysParams.numBandsTx = [0,0,0,0] # Single band sysParams.txNco0 = [[4450,3600], #Band0, Band1 for TXA [4450,3600], #Band0, Band1 for TXB [4450,3600], #Band0, Band1 for TXC [4450,3600]] #Band0, Band1 for TXD ############## JESD ############## ##### ADC-JESD ##### sysParams.jesdSystemMode= [3,3] # case where, FB is not needed and only both channels of the RX # are to be treated as a single JESD mapper sysParams.jesdTxProtocol= [2,2] # 0 - 8b/10b encoding; 2 - 64b/66b encoding sysParams.LMFSHdRx = ["44210","44210","44210","44210"] sysParams.LMFSHdFb = ["22210","22210"] sysParams.rxJesdTxScr = [False,False,False,False] sysParams.fbJesdTxScr = [False,False] sysParams.rxJesdTxK = [1,1,1,1] # Multiblock para 64b - 1 sysParams.fbJesdTxK = [1,1] # Multiblock para 64b - 1 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= [2,2] 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 = [False,False,False,False] sysParams.jesdRxK = [1,1,1,1] # Multiblock para 64b - 1 ##### JESD Common ##### sysParams.jesdABLvdsSync= True sysParams.jesdCDLvdsSync= True sysParams.syncLoopBack = False #JESD Sync signal is connected to FPGA ############## GPIO ############## sysParams.gpioMapping = { 'H8': 'ADC_SYNC0', 'H7': 'ADC_SYNC1', 'N8': 'ADC_SYNC2', 'N7': 'ADC_SYNC3', 'H9': 'DAC_SYNC0', 'G9': 'DAC_SYNC1', 'N9': 'DAC_SYNC2', 'P9': 'DAC_SYNC3', 'P14': 'GLOBAL_PDN', 'K14': 'FBABTDD', 'R6': 'FBCDTDD', 'H15': ['TXATDD','TXBTDD'], 'V5': ['TXCTDD','TXDTDD'], 'E7': ['RXATDD','RXBTDD'], 'R15': ['RXCTDD','RXDTDD']} ############## LMK Params ############## lmkParams.pllEn = True lmkParams.inputClk = 983.04 # Valid only when lmkParams.pllEn = False lmkParams.lmkFrefClk = True setupParams.fpgaRefClk = 245.76 # 2949.12/12 ############## Logging ############## logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt") logDumpInst.logFormat=0x1 #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 #-------------------------------------------------------------------------------------------------# AFE.deviceBringup() AFE.TOP.overrideTdd(15,0,15) # bit-wise; 4R,0F,4T
希望有任何帮助。
感谢你能抽出时间。
Jose