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.

[参考译文] LMK04828:非确定性动态数字延迟行为

Guru**** 2562120 points


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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/701646/lmk04828-non-deterministic-dynamic-digital-delay-behavior

器件型号:LMK04828

我正在调试使用 LMK04828B 的定制 PC 板。  我尝试使用动态数字延迟逻辑将输出时钟一次延迟一个 VCO 周期。  我将系统配置为0延迟模式、具有250MHz 参考时钟、500MHz VCXO、3000MHz PLL2 VCO 频率和125MHz 输出频率(24分频)。  DCLKout6用于0延迟模式的内部反馈、并从动态数字延迟中禁用。  启用了多个其他时钟以实现动态数字延迟。  PLL1输入分频器配置为 5MHz PFD 频率。  PLL 可以锁定并生成输出时钟、而不会出现任何问题。

当尝试一次调整一个输出时钟相位 VCO 时钟时、大约25%的时间相位变化远大于一个 VCO 时钟、并且看起来是随机的 VCO 时钟数。  有时、相位根本不会改变。  我已添加了未记录的 DCLKoutX_DDLYD_CNTH 和 DCLKoutX_DDLYD_CNTL 寄存器设置、并确保 CLKIN_OVERRIDE = 0和 DCLKoutX_DDLY_PD = 0、如先前对动态延迟问题的回答中所述。

板载 FPGA 写入 LMK04828B 的配置如下所示、从初始复位开始、到重复进行的寄存器写入结束、该写入本应一个时钟步进相位。  寄存器按照所示的顺序写入。  对于调试、PLL[x142]<= x01写入操作是为了响应消抖按钮的按压操作、结果会在示波器上观察到。

如何确保当我请求单步延迟时、它不会延迟一些随机的步长?

初始化/配置:
PLL[x000]<= x80
PLL[x100]<= x78
PLL[X101]<= XCD
PLL[x102]<= XCD
PLL[x106]<= X71
PLL[x107]<= x05
PLL[X108]<= x78
PLL[X109]<= XCD
PLL[x10A]<= XCD
PLL[x10E]<= X71
PLL[x010]<= xF0
PLL[X110]<= x78
PLL[x111]<= XCD
PLL[X112]<= XCD
PLL[x116]<= X71
PLL[x117]<= x05
PLL[x118]<= x78
PLL[x119]<= xCC
PLL[x11E]<= X71
PLL[x11F]<= x00
PLL[X120]<= x78
PLL[X121]<= XCD
PLL[x122]<= XCD
PLL[x126]<= X71
PLL[x127]<= x05
PLL[X128]<= x78
PLL[x129]<= XCD
PLL[x12A]<= XCD
PLL[x12E]<= X71
PLL[x12F]<= x00
PLL[X130]<= x78
PLL[x131]<= XCD
PLL[x132]<= XCD
PLL[x136]<= X71
PLL[X137]<= x05
PLL[x138]<= x20
PLL[x13F]<= x09
PLL[x140]<= x00
PLL[x141]<= X57
PLL[x143]<= x19
PLL[x144]<= x08
PLL[X145]<= x7f
PLL[x146]<= X3A
PLL[x147]<= X3A
PLL[x148]<= x02
PLL[X149]<= x02
PLL[X150]<= x00
PLL[x154]<= x32
PLL[x156]<= x02
PLL[x158]<= x02
PLL[x15A]<= x19
PLL[x15B]<= x15
PLL[x15F]<= x0B
PLL[X161]<= x04
PLL[x162]<= x90
PLL[X171]<= XAA
PLL[x172]<= x02
PLL[x17C]<= x15
PLL[x17D]<= X33
PLL[X168]<= x06
PLL[x16E]<= X13
PLL[x173]<= x00
PLL[x143]<= X13
PLL[X139]<= x02

重复到步骤阶段:
PLL[x142]<= x01

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

    您好 Chris、

    查看您发送的寄存器、我看不到有什么东西在我身上跳出来。  我将在明天(星期五)的实验中对此进行介绍。

    73、

    Timothy

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

    尊敬的 Chris:

    我尝试使用您发送的寄存器值、但没有发现任何问题。 我将让设置通宵运行、看看它是否显示出任何故障。 在您的情况下、两个 PLL 是否都锁定? 另请参见随附的 TICSpro 配置、该配置由您的寄存器值生成。 请在结尾处检查它是否显示类似行为!

    此致

    Puneet

    e2e.ti.com/.../cust_5F00_ticspro_5F00_gen.zip

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

    Puneet、

    您说您已经验证过使用我的设置,每次写入 PLL[x142]<= x01时,输出时钟相位都可靠地步进一个 VCO 时钟周期(333ps)?

    如果是、则必须在这一端存在差异、因为非单周期步进至少在10%的时间内发生。  可能没有必要隔夜运行、因为它不是低概率误差。  我将查看 TICSpro 文件并将其与寄存器设置进行比较。

    至于锁定、我还将介绍相移期间的 PLL 锁定状态。  由于我使用的时钟输出不是作为 PLL 反馈的相位步进、因此我不确定 PLL 为什么会在相移期间解锁。

    Chris

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

    Puneet、

    将您所连接的 TICSpro 寄存器设置与我的寄存器设置进行比较后、我没有看到任何明显的差异。  但是、我确实注意到我没有在 x11A 写入 DCLKout6_DDLYD_CNTH / DCLKout6_DDLYD_CNTL 未记录的寄存器。 我的初始化代码已经在 x119将 DCLKout6_DDLY_CNTH / DCLKout6_DDLY_CNTL 写入 xCC、这应该会使任何延迟更新无效、因为它与标准24分频设置相匹配。  但是、由于未启用 DCLKout6的延迟调整、因此该寄存器设置实际上无关紧要。

    一时兴起、我更改了代码、将 DCLKout6_DDLYd_CNTH / DCLKout6_DDLYd_CNTL 写入 x11A 到 xCC。 执行此操作后、相位调整工作正常。  我唯一能解释的是、有时 DCLKout6上的数字延迟会被调整、即使它未启用。  由于 DCLKout6被用作 PLL 相位控制的反馈、步进其相位会导致异常行为。  无论出于何种原因、DCLKout6的相位可能会与其他启用的时钟相位一起被错误地调整。

    请注意、我有一个将 x11A 寄存器写入 xCC 的 FPGA 映像、还有一个根本不写入 x11A 寄存器的 FPGA 映像。  这是两个图像之间的唯一区别。   将 x11A 写入 xCC 的映像始终如一地工作、而另一个映像始终失败。  写入任何内容到 x11A 寄存器可能会使相位调整工作、因为您的代码写入 X55、但我没有麻烦地进行测试。  也许您可以通过不写任何 x11A 寄存器来测试您的代码。

    Chris

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

    当使用动态数字延迟时、您需要使 DDLY 和 DDLYd 寄存器匹配。

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

    >>>使用动态数字延迟时,您需要使 DDLY 和 DDLYd 寄存器匹配。

    根据发送的 TICSpro 文件、Puneet 在 DCLKout6上运行了 DDLY 和 DDLYd 测试、不匹配、并且工作正常。  请注意、DCLKout6未启用以进行延迟调整。

    无论出于何种原因、将 DCLKout6 DDLY 和 DDLYd 值设置为不会实际改变相位的设置、即与未延迟的高/低时钟计数相同的值、 是我所遇到的问题的修复方式。  我没有尝试将 DDLYd 写入其他值。  

    对于未为延迟更新启用的时钟、需要设置 DDLY 和 DDLYd、这似乎很奇怪。  情况确实如此吗?

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

     Chris、

    在 TICSPro 中、我看到寄存器0x11A 正在被编程。  您可以进入 TICSPro 中的"Registers"选项卡、然后单击寄存器并获取一些更多信息。  这就是我得到的(附件)。

    此致、

    Dean