Other Parts Discussed in Thread: AFE7950,
1、硬件设计:
参考的AFE7950,但是对于DAC端的输出信号设计的阻抗为100欧,经过巴伦转换至单端信号的阻抗为50欧,其他的电路设计几乎与开发板一致。电路设计如下图,画圈处与DAC的输出端直连,该点无信号输出。
,2、软件设计:
通过初始化配置,满足设计要求。


希望TI技术支持能给一些指导建议,期待你的回复,谢谢!
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.
您好
要确认的是、客户是使用 FPGA 来对 AFE 进行编程、而不是使用 Latte 软件吗? 他们能否共享用于测试的启动文件?
在启动 AFE 时、它们是否会接收到任何 JESD 警报?
客户还可以参考以下文档来调试问题。
https://www.ti.com/lit/an/sbaa637/sbaa637.pdf
他们是否还可以确认正在检查 Tx 侧的一个启用的通道? 对于 AFE7955、只有2个可用的发送通道、即 Tx1和 TX3。
############## Read me ##############
#In HSDC Pro DAC tab, Select AFE79xx_1x2TX_44210; Data Rate = 491.52M
#In HSDC Pro ADC tab, Select AFE79xx_3x1RX_22210; Data Rate = 491.52M
sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion
setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro
############## Top Level ##############
sysParams.FRef = 368.75
sysParams.FadcRx = 2950
sysParams.FadcFb = 2950
sysParams.Fdac = 2950*4
sysParams.externalClockRx=False
sysParams.externalClockTx=False
#sysParams.ncoFreqMode = "1KHz"
#sysParams.enableDacInterleavedMode = False
#sysParams.rxJesdTxScr = [False,False,False,False]
#sysParams.fbJesdTxScr = [False,False]
#sysParams.jesdRxScr = [False,False]
############## Digital Chain ##############
##### RX #####
sysParams.ddcFactorRx = [2]*4 #DDC decimation factor for RX A, B, C and D
sysParams.rxNco0 = [[4800,4800]]*4 #Band0, Band1 for RXA
sysParams.rxEnable = [True,False,True,False]
##### FB #####
sysParams.fbEnable = [False,False]
sysParams.ddcFactorFb = [8]*2 #DDC decimation factor for FB 1 and 2
sysParams.fbNco0 = [4800,4800] #Band0 for FB1 and FB2
##### TX #####
#sysParams.txEnable = [False,True,False,True]
sysParams.ducFactorTx = [8]*4 #DUC lx 24 interpolation factor for TX A, B, C and D
sysParams.txNco0 = [[4800,4800]]*4 #Band0, Band1 for TXA
sysParams.txEnable = [True,False,True,False]
#for i in [0,1]:
# for j in [0,1]: #AFE.JESD.DACJESD[i].dacJesdConstantTestPatternValue(1,j,0,16384,0) # enable, channelNum, bandNum, Ival, Qval
############## 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 = ["42220"]*4
# 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 = ["42220"]*2
sysParams.rxJesdTxScr = [True,True,True,True]
sysParams.fbJesdTxScr = [True,True]
sysParams.rxJesdTxK = [16,16,16,16]
sysParams.fbJesdTxK = [16,16]
#sysParams.rxDataMux = [0,1,2,3,4,5,6,7]
#sysParams.jesdTxLaneMux = [0,1,4,5,2,3,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 = ["42220"]*4
#sysParams.txDataMux = [2,3,0,1,6,7,4,5]
#sysParams.txDataMux = [0,1,2,3,4,5,6,7]
#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= 0
sysParams.jesdCDLvdsSync= 0
sysParams.syncLoopBack = True #JESD Sync signal is connected to FPGA
#sysParams.jesdLoopBackEn = True
sysParams.rxJesdTxSyncMux = [0]*4
sysParams.jesdRxSyncMux = [0]*4
#AFE.FPGA.dacTones['TXA_B0_SIG']=10
#AFE.FPGA.dacTones['TXB_B0_SIG']=10
#AFE.FPGA.dacTones['TXC_B0_SIG']=10
#AFE.FPGA.dacTones['TXD_B0_SIG']=10
############## 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 = False
lmkParams.pllEn = True
lmkParams.inputClk = 100 # Valid only when lmkParams.pllEn = False
lmkParams.lmkFrefClk = True
setupParams.fpgaRefClk = 368.75 # Should be equal to LaneRate/40 for TSW14J56
lmkParams.xtalFreq = 100
lmkParams.lmkVcoFreq = 2950
sysParams.RRFMode = 5
#-----------------------------------------------------------#
setupParams.skipLmk = False
AFE.initializeConfig()
lmkParams.sysrefFreq = AFE.systemStatus.sysrefFreq
lmkParams.lmkpulseSysrefMode = False
AFE.LMK.lmkConfig()
#--------------Initiates AFE79xx Bring-up--------------#
############## Logging ##############
logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
logDumpInst.logFormat=0xff #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
lmklogDumpInst=mLogDump.logDump(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1_LMK.txt")
lmklogDumpInst.logFormat=0xff
lmk.logClassInst = lmklogDumpInst
lmk.rawWriteLogEn=1
#for i in [0,1]:
# AFE.JESD.DACJESD[i].dacJesdSendRampTestPattern(15)
#for i in [0,1]:
# for j in [0,1]: #AFE.JESD.DACJESD[i].dacJesdConstantTestPatternValue(1,j,0,16384,0) # enable, channelNum, bandNum, Ival, Qval
device.delay_time = 0
#-------------------------------------------------------------------------------------------------#
setupParams.skipLmk = True
AFE.deviceBringup()
AFE.TOP.overrideTdd(5,0,5) # bit-wise; 4R,2F,4T
#AFE.TOP.overrideTddPins(1,0,1) # bit-wise; 4R,2F,4T