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:单环路模式- PLL2不支持#39;t LOCK

Guru**** 2540720 points
Other Parts Discussed in Thread: LMK04828

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/994039/lmk04828-single-loop-mode---pll2-doesn-t-lock

器件型号:LMK04828

您好!

我尝试在单环路模式下使用 LMK04828、以便从100MHz OCXO 生成1GHz 系统时钟。 OSCin 的输入为100MHz 正弦、1.5Vpp。 PLL2的配置为 R=1和 N=30 (预分频器中为/2、主分频器中为-15)。 我选择了 VCO1、它应锁定在3GHz、然后将其分频至1GHz、并在输出分频器中使用其他一些频率。 我具有如下环路滤波器

  • R2 = 560R 外部
  • 内部 R3 = R4 = 200R
  • C1 = 68pF 外部电容
  • C2 = 4.7nF 外部
  • C3 = C4 = 10pF 内部

时钟设计工具告诉我、这应该提供191kHz 的环路带宽和68.7度的相位裕度。 我自己在 SPICE 中对方框图进行的仿真得出的数字几乎完全相同。

问题是 PLL 拒绝锁定。 DLD 输出保持低电平、并且 CP2OUT 上的电压为~0.36V 斜坡波形、频率为1.2MHz、位于3.3V 电源轨正下方。

我尝试在 Status_LD1引脚上放置 PLL2_R 和 PLL2_N 信号。 PLL2_R 是一个干净的100MHz 方形。 PLL2_N 为101.2MHz、给出了/30的比率会将 VCO1置于3036MHz。 使用 FFT、您可以清楚地看到1.2MHz 调制的边带。 这在 PLL2_R 上不存在、这是死区清理。

这看起来像是环路不稳定、但我不明白为什么 CDT 显示我有足够的相位裕度。 我已经检查了 PLL2是否设置为负斜率(PLL2_CP_POL=0)、OSCin_FREQ=1是否设置为100MHz 输入。

我还注意到、即使应该启用 DCLKx 和 SDCLKx 输出、我也不会获得任何结果。 在 PLL 锁定之前、我在数据表中看不到任何表明这些被禁用的内容。 这是正常的、还是可以指出一些更大的问题?

谢谢、

Tom

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

    您好、Tom、

    感谢您检查状态引脚上的 PLL2 R 和 N /2信号。  我感觉它与环路滤波器无关。  我很少看到它会导致锁定问题。
     -您是否已确认所有 Vcc 引脚上的电源电压正确?

    这是新设计吗?  多个电路板有问题?

    可能值得发布您正在使用的确切编程...  您是否使用了 TICS Pro 来生成编程?

    请确保 OSCin_FREQ=1设定正确(或者2、或者4也是可接受的)。  这是 R0x162[4:2]。  我最近注意到、您可能需要在原始寄存器中查看这一点、因为 TICS Pro 可能不会公开这一点。

    73、
    Timothy

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

    您好、Timothy、

    所有 Vcc 引脚的测量范围均为3.265-3.290V、因此符合规格。 所有引脚上的纹波都低于100mVpp、在大多数情况下远低于此值。

    这是现有设计的新版本。 之前的修订版在仅分频器模式下使用了'828、1GHz 时钟直接连接到 CLKin1。 我们在该设计中从未遇到过任何问题。 该版本将1GHz OCXO 替换为100MHz 单元、因此使用了 PLL。 遗憾的是、我现在只能使用1个原型卡进行测试。

    配置是通过手动编辑上一修订版中的现有设置来完成的 不确定原始的是如何制作的、那是我在这里开始之前。 我已经附加了对'828进行编程的部分代码。 阵列内容按照寄存器的写入顺序显示寄存器、包括作为 JESD204B 同步设置的一部分多次写入的寄存器。 有限公司我不知道为什么有些寄存器按它们的顺序写入、但我认为这不会影响 PLL。

    我已经检查了将 OSCIN_FREQ 设置为1的寄存器0x162 = 0x44。

    谢谢、

    Tom

    const UNSIGNED16 CClkDistLMK04828::m_u16RegArray[CLK_DIST_LMK04828_REG_ARRAY_LENGTH] = {
        0x000, 0x002, 0x100, 0x101, 0x103, 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10B,
        0x10C, 0x10D, 0x10E, 0x10F, 0x110, 0x111, 0x113, 0x114, 0x115, 0x116, 0x117, 0x118,
        0x119, 0x11B, 0x11C, 0x11D, 0x11E, 0x11F, 0x120, 0x121, 0x123, 0x124, 0x125, 0x126,
        0x127, 0x128, 0x129, 0x12B, 0x12C, 0x12D, 0x12E, 0x12F, 0x130, 0x131, 0x133, 0x134,
        0x135, 0x136, 0x137, 0x138, 0x139, 0x13A, 0x13B, 0x13C, 0x13D, 0x13E, 0x13F, 0x140,
        0x141, 0x142, 0x143, 0x144, 0x145, 0x146, 0x147, 0x148, 0x149, 0x14A, 0x14B, 0x14C,
        0x14D, 0x14E, 0x14F, 0x150, 0x151, 0x152, 0x153, 0x154, 0x155, 0x156, 0x157, 0x158,
        0x159, 0x15A, 0x15B, 0x15C, 0x15D, 0x15E, 0x15F, 0x160, 0x161, 0x162, 0x163, 0x164,
        0x165, 0X171, 0X172, 0X17c, 0X17d, 0x166, 0x167, 0x168, 0x169, 0x16A, 0x16B, 0x16C,
        0x16D, 0x16E, 0x171, 0x172, 0x173, 0x17C, 0x17D, 0x139, 0x143, 0x140, 0x144, 0x143,
        0x143, 0x143, 0x144, 0x139};
    
    const UNSIGNED8 CClkDistLMK04828::m_u8DataArray[CLK_DIST_LMK04828_REG_ARRAY_LENGTH] = {
        0x10,  0x00,  0x6C,  0x55,  0x01,  0x20,  0x00,  0xF0,  0x11,  0x63,  0x55,  0x01,
        0x20,  0x00,  0xF0,  0x66,  0x63,  0x55,  0x01,  0x20,  0x00,  0xF0,  0x66,  0x63,
        0x55,  0x01,  0x00,  0x00,  0xF1,  0x06,  0x08,  0x55,  0x00,  0x00,  0x00,  0xF9,
        0x01,  0x08,  0x55,  0x00,  0x00,  0x00,  0xF9,  0x01,  0x78,  0x55,  0x01,  0x00,
        0x00,  0xF1,  0x01,  0x20,  0x03,  0x03,  0x00,  0x00,  0x08,  0x03,  0x00,  0x00,
        0x00,  0x00,  0x11,  0xFF,  0x7F,  0x00,  0x1F,  0x02,  0x42,  0x02,  0x16,  0x00,
        0x00,  0x00,  0x7F,  0x03,  0x02,  0x00,  0x00,  0x78,  0x00,  0x7D,  0x00,  0x96,
        0x06,  0x00,  0xD4,  0x20,  0x00,  0x00,  0x13,  0x00,  0x01,  0x44,  0x00,  0x00,
        0x0C,  0xAA,  0x02,  0x15,  0x33,  0x00,  0x00,  0x0F,  0x59,  0x20,  0x00,  0x00,
        0x00,  0x3B,  0xAA,  0x02,  0x00,  0x15,  0x33,  0x00,  0x11,  0x00,  0x30,  0x11,
        0x31,  0x11,  0xFF,  0x03};

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

    您好、Tom、

    感谢您共享配置。  一般而言、它看起来应该正常工作。

    让我们试试这个。  请更新寄存器0x165 = 0x0F (之前为0x0c)。  这将导致 PLL2_N_CAL = 15、而不是当前的12值。  数据表指出、这仅用于0延迟模式、但我希望消除这一问题。  我注意到默认 EVM 配置具有相同的 PLL_N 和 PLL2_N_CAL。  如果这无法解决问题、我将尝试使用您的配置锁定电路板并进行调试。

    请注意、您还可以关闭 PLL1、寄存器0x140 = 0x80。

    73、
    Timothy

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

    您好、Timothy、

    进一步挖掘后、发现固件问题导致无法按照我们的预期对'828进行编程。 我现在发布的图像实际上可以正常工作。 很抱歉、您在这方面浪费了时间。

    谢谢、

    Tom

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

    很高兴你找到了根本原因 Tom。  如果需要任何其他支持、请告知我们。

    此外、请注意我们用于解决时钟树的新在线工具 时钟树架构

    73、
    Timothy