您好!
我有一个使用 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}上查看任何数据
--
此致
维韦克五世