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.

[参考译文] LMK04826:配置动态延迟时出现问题

Guru**** 1144270 points
Other Parts Discussed in Thread: LMK04826, LMK04828-EP
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/979536/lmk04826-issue-configuring-dynamic-delay

器件型号:LMK04826
主题中讨论的其他器件: LMK04828-EP

您好!

我一直在尝试使用 LMK04826生成两个时钟信号、并对其中一个信号动态应用延迟。 我一直在 DCLKout4和 DCLKout6上进行测试、尝试运行类似于 LMK0482x 文档第44页所示示示例的内容、但使用 DCLKout6作为静态时钟并动态更改 DCLKout4的相位。 两个时钟被24分频、从而将1966MHz 的 VCO 频率转换为81.92MHz。 为了将 DCLKout4延迟一个 VCO 周期、该文档建议设置 DCLKout4_DDLY_CNTH = 12和 DCLKout4_DDLY_CNTL = 13、如文档的第43页表3所示。 进行测量时、我能够验证我是否可以动态更新 DCLKout4的相位、但它不使用我设置的 CNTH 和 CNTL 值、而是使用 CNTH = 5和 CNTL = 5的 POR 默认值。  

我在这里阅读了一些有关动态延迟问题的其他论坛文章、一些论坛指出、在运行时无法更新 CNTH 和 CNTL、但应该在初始设置、并且只使用这些值。 我在下面添加了用于对芯片进行编程的寄存器写入序列。 尽管在初始设置期间只更改了 CNTH 和 CNTL 寄存器、但它们仍然看起来不会更新。 我已经尝试了很多操作、例如在所有寄存器写入期间将寄存器0x002中的断电值置为有效、然后在末尾将断电、在所有寄存器写入期间将复位保持在地址0x000、在末尾将复位取消置为有效、 为所有时钟写入 CNTH 和 CNTL 值、如示例中所示在 DCLKout0和 DCLKout2上进行测试、但这些都没有产生任何影响。 如果对此问题有任何帮助、我们将不胜感激。

以下是寄存器写入序列:

设置:

TI 时钟芯片寄存器:0x0:写入0x90
TI 时钟芯片寄存器:0x0:写入0x0
TI 时钟芯片寄存器:0x2:写入0x0
TI 时钟芯片寄存器:0x100:写入0x18
TI 时钟芯片寄存器:0x101:写入0xCD
TI 时钟芯片寄存器:0x103:写入0x0
TI 时钟芯片寄存器:0x104:写入0x2
TI 时钟芯片寄存器:0x105:写入0x0
TI 时钟芯片寄存器:0x106:写入0xF0
TI 时钟芯片寄存器:0x107:写入0x1
TI 时钟芯片寄存器:0x108:写入0x18
TI 时钟芯片寄存器:0x109:写入0xCD
TI 时钟芯片寄存器:0x10B:写入0x0
TI 时钟芯片寄存器:0x10C:写入0x2
TI 时钟芯片寄存器:0x10D:写入0x0
TI 时钟芯片寄存器:0x10E:写入0xF0
TI 时钟芯片寄存器:0x10F:写入0x1
TI 时钟芯片寄存器:0x110:写入0x18
TI 时钟芯片寄存器:0x111:写入0xCD
TI 时钟芯片寄存器:0x113:写入0x0
TI 时钟芯片寄存器:0x114:写入0x2
TI 时钟芯片寄存器:0x115:写入0x0
TI 时钟芯片寄存器:0x116:写入0xF0
TI 时钟芯片寄存器:0x117:写入0x1
TI 时钟芯片寄存器:0x118:写入0x18
TI 时钟芯片寄存器:0x119:写入0xCD
TI 时钟芯片寄存器:0x11B:写入0x0
TI 时钟芯片寄存器:0x11C:写入0x22
TI 时钟芯片寄存器:0x11D:写入0x1D
TI 时钟芯片寄存器:0x11E:写入0xF1
TI 时钟芯片寄存器:0x11F:写入0x1
TI 时钟芯片寄存器:0x120:写入0xC
TI 时钟芯片寄存器:0x121:写入0xCD
TI 时钟芯片寄存器:0x123:写入0x0
TI 时钟芯片寄存器:0x124:写入0x2
TI 时钟芯片寄存器:0x125:写入0x0
TI 时钟芯片寄存器:0x126:写入0xF9
TI 时钟芯片寄存器:0x127:写入0x0
TI 时钟芯片寄存器:0x128:写入0x18
TI 时钟芯片寄存器:0x129:写入0xCD
TI 时钟芯片寄存器:0x12B:写入0x0
TI 时钟芯片寄存器:0x12C:写入0x2
TI 时钟芯片寄存器:0x12D:写入0x0
TI 时钟芯片寄存器:0x12E:写入0xF1
TI 时钟芯片寄存器:0x12F:写入0x0
TI 时钟芯片寄存器:0x130:写入0x18
TI 时钟芯片寄存器:0x131:写入0xCD
TI 时钟芯片寄存器:0x133:写入0x0
TI 时钟芯片寄存器:0x134:写入0x2
TI 时钟芯片寄存器:0x135:写入0x0
TI 时钟芯片寄存器:0x136:写入0xF1
TI 时钟芯片寄存器:0x137:写入0x1
TI 时钟芯片寄存器:0x138:写入0x11
TI 时钟芯片寄存器:0x139:写入0x2
TI 时钟芯片寄存器:0x13A:写入0x0
TI 时钟芯片寄存器:0x13B:写入0x20
TI 时钟芯片寄存器:0x13C:写入0x0
TI 时钟芯片寄存器:0x13D:写入0x1
TI 时钟芯片寄存器:0x13E:写入0x0
TI 时钟芯片寄存器:0x13F:写入0x4
TI 时钟芯片寄存器:0x140:写入0xA
TI 时钟芯片寄存器:0x141:写入0x0
TI 时钟芯片寄存器:0x142:写入0x1
TI 时钟芯片寄存器:0x143:写入0x11
TI 时钟芯片寄存器:0x144:写入0xFF
TI 时钟芯片寄存器:0x145:写入0x7F
TI 时钟芯片寄存器:0x146:写入0x18
TI 时钟芯片寄存器:0x147:写入0x4A
TI 时钟芯片寄存器:0x148:写入0x2
TI 时钟芯片寄存器:0x149:写入0x2
TI 时钟芯片寄存器:0x14A:写入0x2
TI 时钟芯片寄存器:0x14B:写入0x16
TI 时钟芯片寄存器:0x14C:写入0x0
TI 时钟芯片寄存器:0x14D:写入0x0
TI 时钟芯片寄存器:0x14E:写入0xC0
TI 时钟芯片寄存器:0x14F:写入0x7F
TI 时钟芯片寄存器:0x150:写入0x3
TI 时钟芯片寄存器:0x151:写入0x2
TI 时钟芯片寄存器:0x152:写入0x0
TI 时钟芯片寄存器:0x153:写入0x0
TI 时钟芯片寄存器:0x154:写入0x78
TI 时钟芯片寄存器:0x155:写入0x0
TI 时钟芯片寄存器:0x156:写入0x78
TI 时钟芯片寄存器:0x157:写入0x0
TI 时钟芯片寄存器:0x158:写入0x96
TI 时钟芯片寄存器:0x159:写入0x0
TI 时钟芯片寄存器:0x15A:写入0x78
TI 时钟芯片寄存器:0x15B:写入0xD4
TI 时钟芯片寄存器:0x15C:写入0x20
TI 时钟芯片寄存器:0x15D:写入0x0
TI 时钟芯片寄存器:0x15E:写入0x0
TI 时钟芯片寄存器:0x15F:写入0xB
TI 时钟芯片寄存器:0x160:写入0x0
TI 时钟芯片寄存器:0x161:写入0x2
TI 时钟芯片寄存器:0x162:写入0x5
TI 时钟芯片寄存器:0x163:写入0x0
TI 时钟芯片寄存器:0x164:写入0x0
TI 时钟芯片寄存器:0x165:写入0x2
TI 时钟芯片寄存器:0x171:写入0xAA
TI 时钟芯片寄存器:0x172:写入0x2
TI 时钟芯片寄存器:0x174:写入0x0
TI 时钟芯片寄存器:0x17C:写入0x18
TI 时钟芯片寄存器:0x17D:写入0x77
TI 时钟芯片寄存器:0x166:写入0x0
TI 时钟芯片寄存器:0x167:写入0x0
TI 时钟芯片寄存器:0x168:写入0x2
TI 时钟芯片寄存器:0x169:写入0x59
TI 时钟芯片寄存器:0x16A:写入0x20
TI 时钟芯片寄存器:0x16B:写入0x0
TI 时钟芯片寄存器:0x16C:写入0x0
TI 时钟芯片寄存器:0x16D:写入0x0
TI 时钟芯片寄存器:0x16E:写入0x3B
TI 时钟芯片寄存器:0x173:写入0x0
TI 时钟芯片寄存器:0x1FFD:写入0x0
TI 时钟芯片寄存器:0x1FFE:写入0x0
TI 时钟芯片寄存器:0x1FFF:写入0x53
TI 时钟芯片寄存器:0x2:写入0x1
TI 时钟芯片寄存器:0x2:写入0x0

在运行时修改:

关闭除 clk4和 clk6之外的所有时钟
TI 时钟芯片寄存器:0x106:写入0xf8
TI 时钟芯片寄存器:0x10E:写入0xf8
TI 时钟芯片寄存器:0x126:写入0xf8
TI 时钟芯片寄存器:0x12E:写入0xf8
TI 时钟芯片寄存器:0x136:写入0xf8
为 clk4设置动态相位延迟
TI 时钟芯片寄存器:0x116:写入0x70
TI 时钟芯片寄存器:0x141:写入0x4
TI 时钟芯片寄存器:0x144:写入0xFB
TI 时钟芯片寄存器:0x143:写入0x13
TI 时钟芯片寄存器:0x143:写入0x12
TI 时钟芯片寄存器:0x139:写入0x2

相移:

TI 时钟芯片寄存器:0x142:写入0x1

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

    您好 Evan、

    LMK04826文档需要更新、因为动态数字延迟存在多个影子寄存器(例如 DCLKout4_DDLYd_CNTH)、这些寄存器实际上负责所选的动态延迟值。 有关更好的文档(相同的寄存器、不同的 VCO 范围)、请参阅 LMK04828-EP 数据表的第9.3.3.2节、以及记录 LMK04826中"缺失"的寄存器的9.7.2.3。 很抱歉、我已将其添加到下一轮数据表更正中。

    此致、

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

    尊敬的 Derek:

    感谢您的回答。 这确实是个问题、现在我可以选择时钟相位动态更新的量。

    然而,我现在在这些阶段拖延的一致性方面遇到另一个问题。 持续向 DDLYd_STEP_CNT 写入1会导致随机行为。 随机时钟会跳过1乘5次、而不是跳过1个 VCO 周期。 我观察到它跳过了4、7或10个 VCO 周期等。 相对于固定信号、这些并不总是出现在周期的同一部分。 由于这种情况的随机性质、我怀疑在我用于写入寄存器的 SPI 接口中可能会出现故障。 但是、在初始化期间、许多寄存器会按顺序写入、并且设置永远不会产生相同的结果、这与写入 DDLYD_STEP_CNT 时我观察到的错误率不一致。

    那么、我的问题是、您是否曾在动态相位延迟的情况下观察到这种行为? 我还想知道是否有其他方法可以触发这些动态延迟更新、而无需写入 DDLYd_STEP_CNT 寄存器?

    谢谢

    Evan

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

    您好 Evan、

    您是否已经将分频器与 DCLKoutX_DDLY_CNTH/CNTL 值设置为与 DDLYd 寄存器等效值相同的值同步、以便正确加载数字延迟值? 我在您的初始化过程中看不到这一点、因此应该需要同步过程来实现确定性输出分频器/SYSREF 相位。

    写入 DDLYD_STEP_CNT 寄存器之间大约需要等待多长时间? LMK04828-EP 数据表中的注释表明、您通常必须等待70ns + 1个最慢时钟周期(动态数字延迟处于活动状态)、该周期应约为85ns (小于执行 SPI 事务所需的时间); 如果以某种方式涉及 SYSREF 分频器、则可能会更长一些(根据您编程的分频器值判断)、但理论上、延迟生效所需的时间应小于一个 SPI 事务。

    此致、