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.

[参考译文] LMK04832:SCLK 上无 SYSREF 输出

Guru**** 2862450 points

Other Parts Discussed in Thread: LMK04832, LMK04826

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks

器件型号:LMK04832
主题中讨论的其他器件: LMK04826

我正在努力将采用现有 PCB 的设计从 LMK04826B 迁移到 LMK04832。 在更换 PLL 之前、电路板工作正常。 我们的源代码已更新、以匹配 PLL 寄存器映射中的更改、但似乎我们错过了一些内容、因为我在任何 SCLK 输出上都没有收到任何 SYSREF 信号。

我尝试了一些故障排除:

-已尝试从 SYSREF_MUX 进行连续和脉冲发生器输出、SCLK 输出均未显示
-尝试通过 CLKoutY_SRC_MUX 将 SCLK 输出切换到器件时钟、该操作正常并输出时钟信号
-已尝试为 SCLK 输出切换 SCLKX_Y_POL、这起作用并导致输出切换
-尝试使用 FB_MUX = SYSREF_DIV 和 OSCOUT_MUX = FB_MUX、通过 OSCOUT 测量 SYSREF_DIV 时钟。 这显示了正确的信号、占空比为50%的2.5MHz -尝试启用/禁用 SCLK 信号路径的某些部分(DDLY、模拟延迟等)、但任何更改都不会导致 SYSREF 输出

假设我已经通过 OSCout 验证了 SYSREF_DIV 是否正常、并且通过切换极性从 SCLKX_Y_POL 到 PCB 的信号路径是否正常、那么我假设它必须是介于两者之间的某种东西来停止信号? 当我进行这些测量时、SYSREF_CLR 会归零。

两个 PLL 都具有信号锁定检测功能。 我将一个10MHz 基准输入到 PLL1中、PLL1控制100MHz VCXO。 PLL2的频率范围为100MHz 至2.5GHz。 PLL1使用 SYSREF_DIV 作为反馈、PLL2使用通过预分频器的本地反馈。 SYSREF_DIV 除以1000即可获得2.5MHz。 我需要 SYSREF 输出的输出是 CLKout3、CLKout9和 CLKout13。

我附加了包含寄存器映射读数的文本文件以及解析版本、在该版本中、我提取了寄存器中各个字段的值、以便于读取。

e2e.ti.com/.../raw_5F00_register_5F00_map.txt

e2e.ti.com/.../register_5F00_map_5F00_parsed.txt

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

    Daniel、您好!

    在寄存器映射中、您似乎正确配置了输出(CLKout3、CLKout9、CLKout13)。 另一方面、我看到您有 SYNC_1SHOT_EN=1、我认为这可能是您问题的根源。 在 LMK0482x 中、针对每个 SDCLKoutY 路径分别复制了单次触发。 在 LMK04832中、单次触发现在对所有输出都是通用的、并且位于 SYSREF_MUX 之后的 SYSREF 分配路径的根。 请在 SYNC_1SHOT_EN=0时重试、看看这是否起作用。

    此致、

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

    尊敬的 Derek:

    感谢您的反馈! 将 SYNC_1SHOT_EN 更改为0后的结果是一个奇数。 CLKout13开始按预期工作(如果我将 SYSREF_MUX 设置为连续 SYSREF、它将输出2.5MHz)、但 CLKout3和 CLKout9保持静音状态。 我在寄存器映射中看不到输出之间的配置有任何显著差异。 尤其是在  具有相同输出配置寄存器(0x120-0x127和0x130-0x137)的 CLKout13和 CLKout9之间。

    实验一个位后、我尝试将 SCLKX_Y_DDLY 设置从8更改为0 (其 POR 默认值)。 在 LMK04826中、值0表示 BYPASS、不确定 LMK04832是否相同、寄存器映射不会明确声明它。 在这一变化之后、CLKout3和9上也出现了一些信号。 信号的周期为2.5MHz、输出为低电平的半个周期看起来正常、但输出应为高电平的半个周期看起来奇怪。 在这半个周期内、它未正确驱动输出、或者它切换速度过快、以至于我的示波器无法准确测量。  CLKout13在整个期间的行为仍然不同、看起来正常。 这与 SYNC_1SHOT_EN 更改后同步是否对电平敏感有关吗? 它是否在高半周期内不断复位某些内容? 寄存器0x144中的所有 SYNC_DIS 位均已设置。

    有什么想法、为什么输出会以这种方式不同? DDLY 0/8行为意味着什么?

    此致、

    Daniel

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

    一些额外的测试:我尝试更改 PLL 的所有输出以在连续 SYSREF 模式(DCLK 和 SCLK)下输出 SYSREF。 对于未在 PCB 上布线的任何输出、我将其输出格式设置为 CMOS、以便仍然可以在芯片的引脚上测量它们。 输出的测量结果如下:

    CLKout0正常
    CLKout1正常
    CLKout2错误
    CLKout3错误
    CLKout4错误
    CLKout5错误
    CLKout6错误
    CLKout7错误
    CLKout8错误
    CLKout9错误
    CLKout10错误
    CLKout11错误
    CLKout12正常
    CLKout13正常

    然后、我将所有输出切换为输出器件时钟、并修改了所有通道分频器、以获得与输出 SYSREF 时相同的器件时钟频率。 在此配置中、所有时钟输出都显示正常输出信号。

    我可以看到的唯一模式是工作输出0、1、12、13全部属于时钟组/Vcc 组0。 我在数据表中唯一可以找到的特定于时钟组的电源电压引脚是每个时钟组的电压引脚。 我测量到所有这些都提供3.3V 电压。 此外、CLKoutX_Y_PD 位在寄存器映射中的说明中包含"关闭整个时钟组"、但我可以告诉他们 不控制时钟组、而是控制时钟输出对。 此外、 在该测试期间、所有这些 PD 位都被调零。

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

    Daniel、您好!

    [引用 userid="479670" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3635158 #3635158"]I 尝试将 SCLKX_Y_DDLY 设置从8更改为0 (其 POR 默认值)。 在 LMK04826中、值为0意味着旁路、不确定 LMK04832是否相同、寄存器映射不会明确声明它。[/QUERP]

    LMK04832 SCLKX_Y_DDLY 用作 LMK0482x sysref 数字延迟寄存器。  LMK04832的 TICS Pro 配置文件在0 = BYPASS 时正确反映了这一点。  我在中添加了一条注释、用于修正 LMK04832寄存器映射。  LMK04832似乎使用 SYSREF_DDLY 的说明。

    [引用 userid="479670" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3636408 #36408]*我可以看到的唯一模式是工作输出0、1、12、13全部属于时钟组/Vcc 组0。 我在数据表中唯一可以找到的特定于时钟组的电源电压引脚是每个时钟组的电压引脚。 我测量到所有这些都提供3.3V 电压。 此外、CLKoutX_Y_PD 位在寄存器映射中的说明中包含"关闭整个时钟组"、但我可以告诉他们 不控制时钟组、而是控制时钟输出对。 此外、 在该测试期间、所有这些 PD 位都将调零。[/QUERP]

    您是否在多个电路板上尝试过此测试?  是否存在焊料降压问题?  您提到过、确认提供3.3V 电压。  您是否通过探测焊盘/迹线来检查是否使用为器件提供了3.3V 电压、或者通过实际探测 LMK04832外露引脚的小位进行了检查?

    当您设置旁路模式时、会跳过 SYSREF_CLR = 1保持在复位状态的 SYSREF 数字延迟。  您提到 SYSREF_CLR = 0。  但它确实建议该块阻止信号通过、不同的是、即使是在输出时、它的信号质量也与工作输出不同。

    LMK04832是否作为之前 LMK04826的返修产品?

    73、
    Timothy

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

    您好、Timothy、

    [报价 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3638155 #3638155"]您是否在多个电路板上尝试过此测试?

    昨天、我们发送了第二块要与 LMK04832一起安装的电路板、现在我已经对其进行了测试。 它显示了相同的行为、相同的工作/非工作输出数列表以及绕过 SCLK 数字延迟时的相同类型的输出波形问题。 这种感觉表明我们配置器件的方式存在系统问题、而不是硬件错误。 或者、IC 与我们的 PCB 设计不兼容、但这会奇怪、因为 LMK04826工作正常、应该是引脚兼容的。 我们不使用任何 CML 输出。

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3638155 #3638155"]是否存在焊料降问题?  您提到过、确认提供3.3V 电压。  您是否通过探测焊盘/迹线来检查是否使用为器件提供了3.3V 电压、或者是否通过实际探测 LMK04832暴露引脚的小位来检查?[/引述]

    我们用显微镜检查了焊接情况、发现 SYSREF 输出存在问题、一切看起来都正常。 3.3V 电源在    IC 的外露引脚上进行探测。  

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3638155 #3638155"]是否将 LMK04832作为之前 LMK04826的返工放置?

    是的、之前安装了 LMK04826的两块板(   在返修之前、已确认 LMK04826正常工作)。

    我在原始帖子中包含的寄存器映射在 PLL 最终设置后全部被读取。 如果 我们的寄存器写入顺序可能有问题、或者类似问题、我已经修改了 SPI 读取/写入代码、以便将所有读取和写入转储到文件中、并在结果中添加了一些注释。

    看起来我无法在此新论坛 UI 中附加文件(?) 但我已将其粘贴到下面:

    //软复位
    写入0x000 = 0x80

    //禁用3线制
    写入0x000 = 0x10

    //写入寄存器映射
    写入0x002 = 0x00
    写入0x15F = 0x3B
    写入0x100 = 0xE8
    写入0x101 = 0x08
    写入0x102 = 0x03
    写入0x103 = 0x60
    写入0x104 = 0x20
    写入0x105 = 0x00
    写入0x106 = 0x00
    写入0x107 = 0xF1
    写入0x108 = 0xE8
    写入0x109 = 0x08
    写入0x10A = 0x03
    写入0x10B = 0x60
    写入0x10C = 0x20
    写入0x10D = 0x00
    写入0x10E = 0x00
    写入0x10F = 0x11
    写入0x110 = 0xE8
    写入0x111 = 0x08
    写入0x112 = 0x03
    写入0x113 = 0x60
    写入0x114 = 0x20
    写入0x115 = 0x00
    写入0x116 = 0x00
    写入0x117 = 0x11
    写入0x118 = 0xE8
    写入0x119 = 0x08
    写入0x11A = 0x03
    写入0x11b = 0x60
    写入0x11C = 0x20
    写入0x11D = 0x00
    写入0x11E = 0x00
    写入0x11F = 0xF1
    写入0x120 = 0xE8
    写入0x121 = 0x08
    写入0x122 = 0x03
    写入0x123 = 0x60
    写入0x124 = 0x20
    写入0x125 = 0x00
    写入0x126 = 0x00
    写入0x127 = 0x44
    写入0x128 = 0xE8
    写入0x129 = 0x08
    写入0x12A = 0x03
    写入0x12B = 0x60
    写入0x12C = 0x20
    写入0x12D = 0x00
    写入0x12E = 0x00
    写入0x12F = 0xFF
    写入0x130 = 0xE8
    写入0x131 = 0x08
    写入0x132 = 0x03
    写入0x133 = 0x60
    写入0x134 = 0x20
    写入0x135 = 0x00
    写入0x136 = 0x00
    写入0x137 = 0x44
    写入0x138 = 0x18
    写入0x139 = 0x02
    写入0x13A = 0x03
    写入0x13B = 0xE8
    写入0x13E = 0x00
    写入0x13F = 0x0D
    写入0x140 = 0x00
    写入0x141 = 0x00
    写入0x142 = 0x00
    写入0x143 = 0x92
    写入0x144 = 0x00
    写入0x145 = 0x00
    写入0x146 = 0x00
    写入0x147 = 0x1A
    写入0x148 = 0x0B
    写入0x149 = 0x0B
    写入0x14A = 0x02
    写入0x14B = 0x16
    写入0x150 = 0x01
    写入0x151 = 0x02
    写入0x152 = 0x00
    写入0x153 = 0x00
    写入0x154 = 0x04
    写入0x155 = 0x00
    写入0x156 = 0x04
    写入0x157 = 0x00
    写入0x158 = 0x96
    写入0x159 = 0x00
    写入0x15A = 0x01
    写入0x15B = 0x14
    写入0x15C = 0x3F
    写入0x15D = 0xFF
    写入0x160 = 0x00
    写入0x161 = 0x01
    写入0x162 = 0xA4
    写入0x163 = 0x00
    写入0x164 = 0x00
    写入0x165 = 0x05
    写入0x173 = 0x0F
    写入0x166 = 0x00
    写入0x167 = 0x00
    写入0x168 = 0x05
    写入0x169 = 0x59
    写入0x16A = 0x3F
    写入0x16B = 0xFF
    写入0x16C = 0x00
    写入0x16D = 0x00
    写入0x173 = 0x0F

    // 500ms 睡眠、然后等待 PLL1 + PLL2锁定
    读取0x183 = 0x0F
    读取0x183 = 0x0F

    //将 SYSREF_MUX 设置为 SYNC 引脚、将 SYNC 模式设置为 SYNC 引脚
    读取0x139 = 0x02
    写入0x139 = 0x00
    读取0x143 = 0x92
    写入0x143 = 0x91

    //清除所有 SYNC_DIS 位
    写入0x144 = 0x00

    //切换 SYNC_POL
    读取0x143 = 0x91
    写入0x143 = 0xB1
    写入0x143 = 0x91

    //设置所有 SYNC_DIS 位
    写入0x144 = 0xFF

    //清除 SYSREF_CLR 位
    读取0x143 = 0x91
    写入0x143 = 0x11

    //将 SYSREF_MUX 设置为 SYSREF 连续、设置同步模式以防止同步事件
    读取0x139 = 0x00
    写入0x139 = 0x03
    读取0x143 = 0x11
    写入0x143 = 0x10

    //清除两个 PLL 的 LD_Lost
    写入0x182 = 0x03
    写入0x182 = 0x00

    //在此之后,我测量输出(这些输出都设置为输出连续 SYSREF,
    //并且只有输出0-1和12-13看起来正确,其余的波形为半损坏波形)

    此致、

    Daniel

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

    我从示波器中捕获了一些工作/非工作输出的图像、以防有用。 所有这些都是在 PLL 处于相同状态时获得的、两者之间不进行重新配置。

    这是 CLKout12的 P/N 引脚、LVPECL 输出看起来正常:

    这里是 CLKout8、也是 LVPECL 输出、但其中一个输出会产生损坏的波形。 当输出为逻辑低电平时、它在半个周期内看起来稳定、并在另半个周期内浮动到有噪声的中间电压。

    我将1GHz 示波器与无源探头配合使用、因此噪声也可能高于我可以捕获的频率范围。

    这里是 CLKout0、这是一个 LVDS 输出(尽管它当前在电路板上未端接)。 看起来正常:

    这里是 CLKout3、也是 LVDS 输出、但输出不良:

    对于 CLKout3、任何变化都不那么明显(与 CLKout8相比)、但这里是一个+输出图、示波器设置为交流耦合并大幅放大、 这表明输出在2.5MHz 时移动、 尽管仅相差几十毫伏:

    请注意、如果我将 CLKout3和 CLKout8切换为输出器件时钟而不是 SYSREF、则它们开始看起来像工作输出。

    我也探测了一些设置为 CMOS 的非工作输出、但它们看起来像保持0V 输出、没有任何明显的移动。

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

    Daniel、您好!

    LMK04832与 LMK04826引脚兼容。  但是、它不是100%编程兼容。  最大的区别在于输出缓冲器... 虽然我导入了这个、但配置看起来很合理... 我将在周一更近地了解一下。  我也会与 EVM 确认。

    同时、您能否确认...

    CLKin0/1 = 10MHz (我注意您没有启用 CLKin0/CLKin1)。
    VCXO = 100MHz
    VCO = 2500MHz
    OUT2 = 312.5MHz
    SYSREF 的 OUT3 = 2.5MHz。

    73、
    Timothy

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

    您好、Timothy、

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3641235 #3641235]LMK04832与 LMK04826引脚兼容。  但是、它不是100%编程兼容。[/QUERP]

    是的、 我一直使用修改后的编程序列进行测试、以适应 LMK04832寄存器映射、而不是我们用于 LMK04826的编程序列。  

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3641235 #3641235)]我将在星期一更接近。  我也会与 EVM 确认。[/quot]

    好极了!

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3641235 #3641235"]

    同时、您能否确认...

    CLKin0/1 = 10MHz (我注意您没有启用 CLKin0/CLKin1)。
    VCXO = 100MHz
    VCO = 2500MHz

    [/报价]

    我可以确认这些。 我正在使用 CLKin1、通过 CLKIN_SEL_MANUAL 进行选择。 已禁用通过 CLKIN_SEL 引脚进行 CLKIN 自动选择和选择的功能、 这意味 着 CLKIN_SEL_MANUAL 设置会根据 数据表覆盖 EN_CLKIN 位。

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3641235 #3641235"]OUT2 = 312.5MHz
    来自 SYSREF 的 OUT3 = 2.5MHz。[/引述]

    对于我最初发布的帖子中的寄存器值、这些是正确的。 OUT9和 OUT13也是来自 SYSREF 的2.5MHz。

    如果您使用原始的 POST 寄存器转储、可能需要确保根据 Derek 的建议将 SYNC_1SHOT_EN 设置为0、 此外、所有 SCLKX_Y_DDLY 寄存器(0x106、0x10E 等)都设为0、因为这样我就可以看到损坏的输出波形、否则输出是静默的。

    在我后面的帖子中、我尝试对 SYSREF 问题进行故障排除、因此在我最近发布的寄存器写入/读取序列中、 所有 OUT0-OUT13输出都是 SYSREF 的2.5MHz 输出。  

    此致、
    Daniel

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

    很抱歉 Daniel:

    我有一些延迟。  我将再次发布。

    73、
    Timothy

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

    Daniel、您好!

    我查看并找到了编程0x173 = 0x0F 的根本原因。  应为0x10。  该寄存器有一些应设置为0x10的保留位。

    话虽如此、我还发现有几个寄存器正在编程中、这些寄存器不在 LMK04832寄存器映射中。  我尚未对这些编程、TICS Pro 软件将丢弃这些无效的寄存器编程。

    我更新了设置0x17310的 RAW_REGISTER_MAP、包括1_SHOT 更新、还删除了寄存器映射中不包含的寄存器。  此外、根据编程序列的建议、我只需将0x166、0x167、0x168寄存器编程移动到末尾、以确保在开始 PLL2校准之前对所有必要的寄存器进行编程。  加载此值将为您提供所需的操作。

    e2e.ti.com/.../raw_5F00_register_5F00_map_2D00_fixed.txt

    73、
    Timothy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3643905 #3643905]I 审阅并找到编程0x173 = 0x0F 的根本原因。  应为0x10。  该寄存器有一些保留位、应设置为0x10。[/引用]

    感谢 Timothy、这似乎是问题所在、更改该值可修复输出。 我必须将默认值误读为15而不是16。

    [引用 userid="88444" URL"~/support/clock-and-timing/f/clock-timing-forum/983745/lmk04832-no-sysref-output-on-sclks/3643905 #3643905"]我还发现有几个寄存器正在编程中、这些寄存器不在 LMK04832寄存器映射中。  [/报价]

    在寄存器转储中、我从 IC 读取0x100和0x188之间的每个寄存器。 我们不会主动向 列出的所有寄存器写入值、 因此这应该是可以的。

    感谢您的帮助!

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

    很高兴大家都在为您服务。

    73、
    Timothy