您好!
我有一个使用 AFE9000 RF IC 的定制电路板、
我正在尝试使用外部 Latte SPI 模块进行配置(请参阅在安全文件夹中提供的 Vitis Format.doc 中生成 SPI 写入)。
能够读取和写入寄存器、但配置失败。
附加 SPI 模块的日志以供参考。
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.
e2e.ti.com/.../5126.spiwrites.c
Vijay、您好!
请在所附的 SPIWRITE 文件中
--
此致
维韦克五世
您好、Vivek、
感谢您共享您的 SPIWRITE 文件。 我们了解了您收到的错误、想要检查几个事项、以帮助缩小确切问题的范围。
1.您是否在使用 AFE79xx 安全文件夹中提供的最新版本的 AFE79xx GUI?
2.您收到的 JESD 警报的一部分表示 LOS、即信号丢失、这意味着这些通道在其 SerDes 通道上看不到任何数据。 您能否确认 FPGA 已配置为在正确通道上发送数据?
3.如果你可以分享你的 python 脚本,我们也可以在我们的实验中测试这个,以确保没有问题的配置。
此致、
大卫·查帕罗
1.我使用的是工具版本2.05、Latte Framework 版本;5.7.2、可在我的 AFE79XX 安全文件夹中找到

在 FPGA 中、我将 STX5、STX6用于 Rx_serial_data (1:0) 、STX1、STX2用于 TX_serial_data (1:0)
3.为我的应用修改了 S2_OnboardClk_RX_250M_TX_500M_FB_disabled.py
############## 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
sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion
setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro
############## Top Level ##############
sysParams.FRef = 245.76
sysParams.FadcRx = 2949.12
sysParams.FadcFb = 2949.12
sysParams.Fdac = 2949.12*2
sysParams.externalClockRx=False
sysParams.externalClockTx=False
############## Digital Chain ##############
##### RX #####
sysParams.ddcFactorRx = [12,12,12,12] #DDC decimation factor for RX A, B, C and D
sysParams.rxNco0 = [[5400,5400], #Band0, Band1 for RXA
[500,500], #Band0, Band1 for RXB
[2500,2500], #Band0, Band1 for RXC
[1800,1800]] #Band0, Band1 for RXD
##### FB #####
sysParams.fbEnable = [False,False]
sysParams.ddcFactorFb = [6,6] #DDC decimation factor for FB 1 and 2
sysParams.fbNco0 = [500,1800] #Band0 for FB1 and FB2
##### TX #####
sysParams.ducFactorTx = [24,24,24,24] #DUC interpolation factor for TX A, B, C and D
sysParams.txNco0 = [[5400,5400], #Band0, Band1 for TXA
[500,500], #Band0, Band1 for TXB
[2500,2500], #Band0, Band1 for TXC
[1800,1800]] #Band0, Band1 for TXD
############## JESD ##############
##### ADC-JESD #####
sysParams.jesdSystemMode= [5,5]
#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 = ["24410","24410","24410","24410"]
# 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 = [32,32,32,32]
sysParams.fbJesdTxK = [32,32]
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 = ["24410","24410","24410","24410"]
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 = [32,32,32,32]
##### JESD Common #####
sysParams.jesdABLvdsSync= True
sysParams.jesdCDLvdsSync= True
sysParams.syncLoopBack = True #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 # 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
#-------------------------------------------------------------------------------------------------#
AFE.deviceBringup()
AFE.TOP.overrideTdd(15,3,15) # bit-wise; 4R,2F,4T
注:
我们注意到 在我配置 AFE7900、CLK 和 FPGA 后、在 FPGA 中正在切换 rx_islockedtodata[1..0]。
此致
维韦克五世
您好、Vivek、
您共享的脚本没有任何问题。 我注意到的一点是 、您提到对串行器/解串器仅使用两个通道、但您的脚本启用了所有四个通道、这意味着您将使用四个串行器/解串器通道。 您是否计划在 ADC 和 DAC 侧仅使用2个通道?
如果只 想使用 TXA 和 TXB 、您应该将以下参数添加到脚本中:sysParams.txEnable =[True、True、False、False ]
RXC 和 RxD 的情况类似:sysParams.rxEnable =[False、False、True、True]
您可能面临的问题是、您在 AFE 端启用了四个 JESD 通道、但在 FPGA 端仅启用了两个。
此致、
大卫·查帕罗
尊敬的 David Chaparro:
我已附加了 SPI 日志。
FPGA 中的 JESD 链路参数
链路= 1、//链路数量,由多个通道组成的链路
L = 2、//每个转换器器件的通道数
m = 4、//每个转换器器件的转换器数
f = 4、//每帧八位位组数
S = 1、//每帧每个转换器的发送器样本数
n = 16、//每个转换器的转换位数
N_PRIME = 16、//每个样本中传输的位数
CS = 0、//每个转换样本的控制位数
k = 32、
换序="真"、(已启用)
e2e.ti.com/.../afe_5F00_spi_5F00_log.txt
--
此致
维韦克五世
您好!
谨致问候
维韦克五世
############## 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
sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion
setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro
############## Top Level ##############
sysParams.FRef = 245.76
sysParams.FadcRx = 2949.12
sysParams.FadcFb = 2949.12
sysParams.Fdac = 2949.12*2
sysParams.externalClockRx=False
sysParams.externalClockTx=False
############## Digital Chain ##############
##### RX #####
sysParams.rxEnable = [False,False,True,True]
sysParams.ddcFactorRx = [12,12,12,12] #DDC decimation factor for RX A, B, C and D
sysParams.rxNco0 = [[5400,5400], #Band0, Band1 for RXA
[500,500], #Band0, Band1 for RXB
[2500,2500], #Band0, Band1 for RXC
[1800,1800]] #Band0, Band1 for RXD
##### FB #####
sysParams.fbEnable = [False,False]
sysParams.ddcFactorFb = [6,6] #DDC decimation factor for FB 1 and 2
sysParams.fbNco0 = [500,1800] #Band0 for FB1 and FB2
##### TX #####
sysParams.txEnable = [True,True,False,False]
sysParams.ducFactorTx = [24,24,24,24] #DUC interpolation factor for TX A, B, C and D
sysParams.txNco0 = [[5400,5400], #Band0, Band1 for TXA
[500,500], #Band0, Band1 for TXB
[2500,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 = ["24410","24410","24410","24410"]
# 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 = [32,32,32,32]
sysParams.fbJesdTxK = [32,32]
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 = ["24410","24410","24410","24410"]
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 = [32,32,32,32]
##### JESD Common #####
sysParams.jesdABLvdsSync= True
sysParams.jesdCDLvdsSync= True
sysParams.syncLoopBack = True #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 # 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
#-------------------------------------------------------------------------------------------------#
AFE.deviceBringup()
#AFE.TOP.overrideTdd(15,3,15) # bit-wise; 4R,2F,4T您好、Vivek、
您能否验证您是否使用 AFE79xx 安全文件夹中提供的最新版本的 AFE79xx GUI?
我已经根据您在上面提供的脚本生成了一个 SPI 日志。 您能否尝试此文档、看看它是否可以修复您遇到的问题?
e2e.ti.com/.../6864.spiwrites.c
此致、
大卫·查帕罗
尊敬的 David Chaparro:
我正在
我将随附日志文件和在 PHY 和链路层拍摄的 FPGA 快照

e2e.ti.com/.../afe_5F00_spi_5F00_log_5F00_ti_5F00_30Aug.txt
--
此致
VivekV
您好、Vivek、
只是确认一下、您是否仅计划使用1个 Tx 和1个 Rx 或者您是否计划使用1个 Tx、1个 RX 和1个 FB? 您提供的脚本没有为此进行配置。
用于正确对 JESD 进行路由的通道多路复用器参数如下所示。
sysParams.jesdTxLaneMux =[4、1、5、3、0、2、6、7]
sysParams.jesdRxLaneMux =[1、0、2、3、4、5、6、7]
如果 需要1Tx、1RX 和1FB、则下面的脚本会将 AFE 配置为仅使用 TxB 并将其路由到 STX1和仅使用 RxA+FB1并将其数据路由到 STX5和 STX6。
############## 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
sysParams=AFE.systemParams
sysParams.__init__();sysParams.chipVersion=chipVersion
setupParams.skipFpga = 1 # setup FPGA (TSW14J56) using HSDC Pro
############## Top Level ##############
sysParams.FRef = 245.76
sysParams.FadcRx = 2949.12
sysParams.FadcFb = 2949.12
sysParams.Fdac = 2949.12*2
sysParams.externalClockRx=False
sysParams.externalClockTx=False
############## Digital Chain ##############
##### RX #####
sysParams.rxEnable = [True,False,False,False]
sysParams.ddcFactorRx = [12,12,12,12] #DDC decimation factor for RX A, B, C and D
sysParams.rxNco0 = [[5400,5400], #Band0, Band1 for RXA
[500,500], #Band0, Band1 for RXB
[2500,2500], #Band0, Band1 for RXC
[1800,1800]] #Band0, Band1 for RXD
##### FB #####
sysParams.fbEnable = [True,False]
sysParams.ddcFactorFb = [6,6] #DDC decimation factor for FB 1 and 2
sysParams.fbNco0 = [500,1800] #Band0 for FB1 and FB2
##### TX #####
sysParams.txEnable = [False,True,False,False]
sysParams.ducFactorTx = [24,24,24,24] #DUC interpolation factor for TX A, B, C and D
sysParams.txNco0 = [[5400,5400], #Band0, Band1 for TXA
[500,500], #Band0, Band1 for TXB
[2500,2500], #Band0, Band1 for TXC
[1800,1800]] #Band0, Band1 for TXD
############## JESD ##############
##### ADC-JESD #####
sysParams.jesdSystemMode= [1,1]
#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 = ["12410","12410","12410","12410"]
# 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 = ["12410","12410"]
sysParams.rxJesdTxScr = [True,True,True,True]
sysParams.fbJesdTxScr = [True,True]
sysParams.rxJesdTxK = [32,32,32,32]
sysParams.fbJesdTxK = [32,32]
sysParams.jesdTxLaneMux = [4,1,5,3,0,2,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 = ["12410","12410","12410","12410"]
sysParams.txDataMux = [2,3,0,1,4,5,6,7]
sysParams.jesdRxLaneMux = [1,0,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 = [32,32,32,32]
##### JESD Common #####
sysParams.jesdABLvdsSync= True
sysParams.jesdCDLvdsSync= True
sysParams.syncLoopBack = True #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 # 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
#-------------------------------------------------------------------------------------------------#
AFE.deviceBringup()
AFE.TOP.overrideTdd(15,3,15) # bit-wise; 4R,2F,4T
此致、
大卫·查帕罗
尊敬的 David Chaparro:
感谢您提供的信息。 这有助于我正确配置器件、并且所有同步信号都为"高电平"

我需要测试数据、才能做到这一点
输入:ADCJesdLib 类的 adcRampTestPattern
写入 0x0016值0x01
写入 0x0109值 0x02
写入 0x0109值0x0a

这些是我要监控的信号。 我看到 FPGA 中汇编器_DIN[63:0]和 JES_204_TX_datain[63:0]上的数据。
JES_204_Rx_dataout{63:0]上没有数据。 我在该过程中是否会犯任何错误。
我应该继续处理同一个线程、还是为数据打开一个新的线程。
--
此致
维韦克五世
尊敬的 David:
传输层数据 RX 上的上述查询是否有任何更新。
已使用下面的此应用手册链接在环回模式下测试 AFE。
https://www.ti.com/lit/ml/sbaa525/sbaa525.pdf
仍无法在 JES_204_Rx_dataout{63:0}上查看任何数据
--
此致
维韦克五世