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.

[参考译文] AFE7920EVM:识别和设置 LMK 分频器

Guru**** 2470720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1198692/afe7920evm-identifying-and-setting-the-lmk-dividers

器件型号:AFE7920EVM

大家好、

此问题与此处发布的问题有关: https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1189054/afe7920evm-afe7920evm-lmc-settings-issue

目前、在上述链接的介绍性问题中介绍的设置中、我们有一些问题需要了解 LMK 输出行为。

在下面的原理图中、我们分别在 GTXCLK 和 FPGA_REFCLK 引脚上看到 FPGA 侧的一半参考时钟和1/64参考时钟

我想知道是否有方法可以通过更新相关分频器来更改这些值并将其设置为参考时钟值。 此外、如果可以执行此操作、我不确定如何通过 Latte 或通过某些脚本执行此操作

您能就此提供一些指导吗?

此致、

Željko μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们将对此进行研究、我们将在本周结束前向您提供答案。

    此致、  

    Camilo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Željko、

    只需确保您仍在尝试在旁路模式下使用 LMK? 如果您对脚本进行了任何更改、您能否向我们提供一份脚本副本?

    要使用 LMK 分频器 、您必须在非旁路模式下使用 LMK。 您可以在启动部件后通过单击 Latte 右侧“Device list”(设备列表)下的“LMKClock Divider”来更新它们。 然后、您可以转到不同的选项卡来更改分频器、如下图所示:

    要读取这些值,您需要单击“View RegProgrammer”,并将读出模式设置为3线 SPI:

    这样、您就可以右键单击 LMK 时钟分频器上的值、并按如下所示读取它们:

    最棒的

    Camilo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Camilo、

    非常感谢您的回复。 根据您的请求、下面是我使用的 Latte 脚本的最新版本:

    ########## 电路板启动过程######

    #Mainwindow.clearSession()
    #base_directory ="C:\\users\a0217443\\Documents\Texas Instruments\Latte\\Projects\AFE79xx\\bringup\\"
    mainWindow.runFile(base_directory + r"setup.py")
    #mainWindow.runFile(base_directory + r"devInit.py")

    ########## 常规设置:##########

    # VLBI Tx 频率计划详细信息:
    custom_clk = 2

    ncoFreqModes =["1KHz "、"FCW"]
    Fnco_tx1 = 2245.0
    Fnco_rx1 = 500.0

    如果(custom_clk = 1):
    F0 = 163.68
    Nrx = 18
    NDDC = 6
    NTx = 4
    NFRef = 1
    NfpgaRefClk = 1.
    NinputClk = 1.
    LMFSHdRx =['22210'、'22210'、'22210'、'22210']#['44210'、'44210'、 '44210'、'44210']#
    LMFSHdFb =['22210'、'22210"]
    LMFSHdTx =['22210'、'22210'、'22210'、'22210']#['44210'、'44210'、 '44210'、'44210']#
    syncLoopBack =错误#True
    Elif custom_clk = 0:
    F0 = 122.88
    Nrx = 24
    NDDC = 12
    NTx = 3
    NFRef = 4
    NfpgaRefClk = 2
    NinputClk = 12
    LMFSHdRx =['24410'、'24410'、'24410'、'24410"]
    LMFSHdFb =['24410'、'24410"]
    LMFSHdTx =['24410'、'24410'、'24410'、'24410"]
    syncLoopBack =错误
    Elif custom_clk == 2:
    F0 = 163.68
    Nrx = 12
    NDDC = 6
    NTx = 3#6
    NFRef = 1
    NfpgaRefClk = 1.
    NinputClk = 1.
    LMFSHdRx =['22210'、'22210'、'22210'、'22210']#['44210'、'44210'、 '44210'、'44210'
    LMFSHdFb =['22210'、'22210"]
    LMFSHdTx =['22210'、'22210'、'22210'、'22210']#['44210'、'44210'、 '44210'、'44210'
    syncLoopBack =错误#True

    NDC = NDDC*NTX

    # AFE 常规设置
    AFE.systemStatus.loadTrigs = 1.
    setupParams.skipFpga = 1.
    setupParams.fpgaRefClk = f0*NfpgaRefClk
    sysParams = AFE.systemParams
    sysParams.FRef = f0*NFRef

    ########## 模拟设置:AFE 79XX EVM ######

    #常规系统设置
    sysParams.RRFMode = 0
    sysParams.modeTdd = 0
    sysParams.adcSelect0 =[0、1、2]
    sysParams.adcSelect1 =[0、1、2]
    sysParams.useSpiSysref = 0
    sysParams.sysrefTermination = 0
    sysParams.ncoFreqMode = ncoFreqModes[custom_clk!= 0]
    sysParams.spiMode = 1.

    # ADC 设置
    sysParams.FadcRx = f0*Nrx
    sysParams.rxEnable =[1、1、1]
    sysParams.externalClockRx = 0
    sysParams.halfRateModeRx =[0、0]
    sysParams.ddcFactorRx =[NDDC、NDDC、NDDC、NDDC]
    sysParams.numBandsRx =[0、0、0]
    sysParams.numRxNCO = 1.
    sysParams.ncoRxMode =[0、0]
    sysParams.broadcastRxNcoSel = 0
    sysParams.rxNco0 =[[Fnco_rx1、Fnco_rx1]、
    [870.0、870.0]、
    [637.5、637.5]、
    [637.5、637.5]]
    sysParams.rxNco1 =[[Fnco_rx1、Fnco_rx1]、
    [870.0、870.0]、
    [637.5、637.5]、
    [637.5、637.5]]

    # FB 设置
    sysParams.FadcFb = sysParams.FadcRx
    sysParams.fbEnable =[0、0]
    sysParams.halfRateModeFb =[0、0]
    sysParams.ddcFactorFb =[NDDC、NDDC]
    sysParams.numBandsFb =[0、0]
    sysParams.numFbNCO = 1.
    sysParams.ncoFbMode = 0
    sysParams.fbNco0 =[1000、1000]
    sysParams.fbNco1 =[1000、1000]
    sysParams.fbNco2 =[1000、1000]
    sysParams.fbNco3 =[1000、1000]

    DAC 设置
    # DAC 采样率必须处于以下频率范围之一(由于 PLL 限制):[7.2GHz、7.68GHz]或[8.8GHz、9.1GHz]或[9.7GHz、10.24GHz]或[11.6GHz、12.08GHz]
    sysParams.Fdac = sysParams.FadcRx*NTX
    sysParams.txEnable =[1、1、1]
    sysParams.externalClockTx = 0
    sysParams.halfRateModeTx =[0、0]
    sysParams.ducFactorTx =[Nduc、Ndc、Ndc、Nduc]
    sysParams.numBandsTx =[0、0、0]
    sysParams.numTxNCO = 1.
    sysParams.combineDucMode =[0、0]
    sysParams.enableDacInterleavedMode = 0
    sysParams.ncoTxMode =[0、0]
    sysParams.broadcastTxNcoSel = 0
    sysParams.txNco0 =[[Fnco_tx1、Fnco_tx1]、
    [5020.0、5020.0]、
    [8212.5、8212.5]、
    [6812.5、6812.5]]
    sysParams.txNco1 =[[Fnco_tx1、Fnco_tx1]、
    [5020.0、5020.0]、
    [8212.5、8212.5]、
    [6812.5、6812.5]]

    ########## 时钟分配模式设置######

    setupParams.skipLmk = 0
    lmkParams.pllEn =(custom_clk = 0)
    lmkParams.inputClk = f0*NinputClk
    lmkParams.sysrefFreq = lmkParams.inputClk#f0*Nrx/1024
    lmkParams.lmkFrefClk = 1.
    lmkParams.lmkPulseSysrefMode = 0
    #AFE.systemStatus.sysrefFreq = lmkParams.inputClk
    #AFE.LMK.lmkConfig()

    ########## JESD204设置 AFE 79XX EVM ##########

    sysParams.topLevelSystemMode ='StaticTDMode'
    sysParams.jesdSystemMode =[3、3]
    sysParams.serdesFirmware = 1.
    sysParams.jesdABLvdsSync = 1.
    sysParams.jesdCDLvdsSync = 1.
    sysParams.syncLoopBack = syncLoopBack
    sysParams.jesdLoopbackEn = 1#0#
    sysParams.setIlaParams = 1.
    sysParams.jesdTxIlaM =[8、8、2、8、8、 2个]
    sysParams.jesdTxIlaid =[0、1、2、3、4、 5、6、7]
    sysParams.jesdTxIlaL =[4、4、2、4、4、 2个]


    sysParams.LMFSHdRx = LMFSHdRx
    sysParams.jesdRxProtocol =[0、0]
    sysParams.jesdRxLaneMux =[0、1、2、3、4、 5、6、7]
    sysParams.jesdRxRbd =[4、4]
    sysParams.rxJesdTxScr =[1、1、1]
    sysParams.rxJesdTxK =[16、16、16]
    sysParams.rxJesdTxSyncMux =[0、0、0、0]
    sysParams.rxDataMux =[0、1、2、3、4、 5、6、7]
    sysParams.serdesRxLanePolarity =[0、0、0、0、0、 0、0、0]
    sysParams.adcDataMuxEn = 0


    sysParams.LMFSHdFb = LMFSHdFb
    sysParams.fbJesdTxScr =[1、1]
    sysParams.fbJesdTxK =[16、16]
    sysParams.fbJesdTxSyncMux =[0、0]
    sysParams.fbDataMux =[0、1]

    sysParams.LMFSHdTx = LMFSHdTx
    sysParams.jesdTxProtocol =[0、0]
    sysParams.jesdTxLaneMux =[0、1、2、3、4、 5、6、7]
    #sysParams.jesdTxRbd =[4、4]
    sysParams.jesdRxScr =[1、1、1]
    sysParams.jesdRxK =[16、16、16]
    sysParams.jesdRxSyncMux =[0、0、0、0]
    sysParams.txDataMux =[0、1、2、3、4、 5、6、7]
    sysParams.serdesTxLanePolarity =[0、0、0、0、0、 0、0、0]
    #sysParams.dacDataMuxEn = 0
    #sysParams.serdesTxPreCursor =[6、6、6、6、6、 6、6、6]
    #sysParams.serdesTxPostCursor =[0、0、0、0、0、 0、0、0]
    #sysParams.serdesTxMainCursor =[3、0、0、0、0、 0、0、3]


    ########## 虚拟 txt ##########

    sysParams.gpioMapping={'H8':'ADC_SYNC0'、
    'H7':'ADC_SYNC1'、
    'N8':'ADC_SYNC2'、
    'N7':'ADC_SYNC3'、
    'h9':'dac_SYNC0'、
    'G9':'dac_SYNC1'、
    'N9':'dac_SYNC2'、
    'P9':'DIC_SYNC3'、
    'P14':'global_PDN'、
    'K14':'FBABTDD'、
    'R6':'FBCDTDD'、
    'h15':['TXATDD'、'TXBTDD']、
    'V5':['TXCTDD'、'TXDTDD']、
    'E7':['RXATDD'、'RXBTDD']、
    'R15':['RXCTDD'、'RXDTDD']}

    lmk rawWriteLogEn = 1.
    lmk.logEn = 1.

    logDumpInst.setFileName(ASTERIX_DIR+DEVICES_DIR+r"\Afe79xxPg1.txt")
    logDumpInst.logFormat = 0x01
    logDumpInst.rewriteFile = 1.
    logDumpInst.rewriteFileFormat4 = 1

    device.optimizeWrites=0
    device.rawWriteLogEn = 1.
    device.delay_time = 0

    AFE.deviceBringup ()
    AFE.TOP.OverrideTdd (15、3、15)
    #强制 Latte 在旁路/分配模式下对 LMK 进行编程
    lmk head.page.dCLK0_SDCLK1_controls.Analog _Dig_Delay.dclk_mux_lt_1_0_gt_=2
    lmk head.page.dCLK12_SDCLK13_controls.Analog _Dig_Delay.dclk_mux_lt_1_0_gt_=2
    AFE.saveCAfeParamsFile()

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    卡米洛  

    另外一件事是、考虑到我在这里的第一篇文章中的原理图、以及具有 LMK 设置的 GUI 菜单、我仍然不了解时钟信号的频率不同于基准(ref/2和 ref/64)的原理图中的网对应的分频器。 您能帮我了解这一点吗?

    此外、我应该先将读出 SPI 模式设置为4根导线、然后更新分频器、还是此处的顺序无关紧要?

    此致、

    Željko μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Željko、

    • 我们测试了您发布的脚本、并看到了以下内容:

    GTXCLK 的频率为163.68MHz、等于基准。 您能否尝试使用示波器触摸 EVM 上的 C273焊盘进行测量?

    FPGA_SYSREF 和 Sysref 均已断电。

    而 FPGA_REFCLOCK2的频率错误、因为它没有设置为旁路模式。 要将其设置为旁路模式、请在脚本中包含以下行:

    lmk head.page.dCLK8_SDCLK9_controls.Analog _Dig_Delay.dclk_mux_lt_1_0_gt_=2

     

    • 对于您的问题:“另外一件事,根据我在这里的第一篇博文中的原理图,以及具有 LMK 设置的 GUI 菜单,我仍然不了解时钟信号频率与参考(ref/2和 ref/64)不同的原理图中的分频器与网络对应的是什么。 您能帮我了解这一点吗?”

    DCLKOUT 的分频器位于各自的选项卡上、Sysref 的分频器位于 Config_Sysref_Sync_Device 选项卡中。 例如、如下面所示、DCLKOUT0的分频器位于 DCLK0_SDCLK1选项卡上(分频器仅在您不处于旁路模式时适用):

    SDCLK1的分频器位于 Config_Sysref_Sync_Device 选项卡中、因为它设置为 sysref 输出:

    • 对于“此外,我是否应该先将读出 SPI 模式设置为4根导线,然后更新分频器,或者此处的顺序不相关?”的问题

    应将读出 SPI 模式设置为3根导线、以便可以读回这些值。 将其设置为3线 SPI 后、您将能够进行写入和读取。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢这种明确和详细的反应。 这对我有很大帮助。

    好的、我想我现在已经明白了。 只是从我的角度澄清最后一点。

    您提供的代码的特定行、应该将特定引脚上的 LMK 输出设置为旁路模式、对吧? 我们将其设置为2。 这里是否支持其他值、如果支持、它们的含义是什么? 我只是想更好地理解这一点、以确保 Latte 脚本的影响。

    此致、

    Željko μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    关于 C273电容器、在正确测量它时存在一些问题、但我可以确认、我们看到一个具有预期基准的良好周期性信号。 类似的信号也可以在其他 LMK 输出上看到、这些输出现在设置为旁路模式。  

    我非常感谢他们的投入,我相信他们能够解决这个问题下的问题。

    此致、

    Željko μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Željko、

    我很高兴我的答复解决了这些问题。 以回答您之前的问题。

    • "您提供给我的代码的特定行、应该将特定引脚上的 LMK 输出设置为旁路模式、对吧?"

    是的、这就是该代码行所做的事情。

    • "这里是否支持其他值、如果支持、它们的含义是什么?"

    可以,通过使用“LMKClock Divider”窗口可以看到支持的其他值。 在 DCLK 选项卡中、将其设置为 BYPASS (如下图所示)、您可以看到其他选项。 每个都对应于从上至下的0到3的值。 例如、下拉列表上的旁路模式对应于您看到的2值。

    另一种检查方法是双击下拉列表旁边的文本。 这将复制变量名称:

     

    然后可以将其粘贴到命令行窗口中、如下图所示:

    如果单击 Enter、它将在日志窗口中显示其当前值:

    但是,如果您不想处理这些值,您可以使用“LMKClock Divider”窗口按照我在前一个响应中所述进行读取和写入。

    最棒的

    Camilo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Camilo、

    再次感谢您的详细回答。 与每次在 GUI 中手动更改内容相比、这种脚本化方法在自动化方面似乎更好。 这是对了解如何控制 LMK 的重要补充。

    此致、

    Željko μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Željko、

    没问题。 祝你度过美好的一天!

    最棒的

    Camilo。