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.

[参考译文] LMK03328:输入和输出规格的寄存器值

Guru**** 2560240 points
Other Parts Discussed in Thread: LMK03328, CODELOADER

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/676513/lmk03328-register-values-for-the-input-and-output-specifications

器件型号:LMK03328
主题中讨论的其他器件: CODELOADER

您好!

我们在设计中使用2个 LMK03328RHST。 我们已经装配了 PCB。 我们正在使用 Code Loader Ver 4.20.2、并尝试使用软件工具获取正确的寄存器值。了解每个选项并获取适当的寄存器值需要更多的时间、但该团队正在详细地进行设计。 但是、对于 FPGA 的初始测试、我们需要快速生成时钟并并行开始测试。
因此、我们需要您的支持来获取正确的寄存器值、以便我们在设计中使用它并从测试开始。 同时、我们将使用该工具将寄存器值与我们生成的寄存器值进行比较、并尝试了解它们。如果我们需要更改任何内容、这将避免您将来的依赖。

我已附上 LMK03328RHST 部分的原理图。下面仅提供了一些有关原理图的注释、以供更好地理解

1.输入:
二次输入引脚的晶振输入为25MHz (为初级输入的 LVDS 振荡器提供了 PCB 封装、但未安装)。 没有为板上的两个输入提供交流电容。

2.输出:
所有8个输出上的200MHz LVDS (板上提供交流耦合)。 这些时钟用于 Xilinx FPGA 高速收发器部分的引脚以运行10Gig 接口。

3.很少有 GPIO 连接到 FPGA 1.8V IO 引脚(GPIO0、2、3、5)、其余的是使用电阻器的 PU/PD。

PDN 引脚连接到 FPGA 的1.8V IO 引脚

请忽略所附原理图中可见的其他振荡器、因为它们与 LMK03328设计无关。 ANS 还请对原理图保密。

此致、
Vijethae2e.ti.com/.../LMK03328.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Vijetha、
    感谢您与我们联系。 我们将审查您的原理图、并在复活节假期周二之前向您提供反馈。 我建议您将 TICSpro 中的默认状态作为起点、然后根据应用的需要更改配置。
    顺便说一下、这是一个公共论坛。 如需与 TI 共享机密信息、请使用 clock_support@list.ti.com。
    感谢您的耐心等待。
    此致
    Puneet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我附加了 Codeloader 文件以及导出的寄存器数据。

    原理图看起来正常。

    确保 GPIO0被驱动为高电平以启用输出;否则、将 GPIO0驱动为低电平将在输出时钟被静音的情况下使输出分频器保持同步状态。

    要进行编程、您可以写入所有寄存器并切换 RESETN_SW 位(1 -> 0)以使用您的设置复位器件。

    Alan

    e2e.ti.com/.../LMK03328_5F00_iWave_5F00_25M_2D00_ref_5F00_200M_2D00_lvds.mac

    e2e.ti.com/.../LMK03328_5F00_iWave_5F00_25M_2D00_ref_5F00_200M_2D00_lvds_2D00_hex_2D00_reg_2D00_export.txt

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

    尊敬的 Alan:

    这是一种多板机箱设计。 我们将使用超过12个用于各种不同频率合成的 LMK03328模块。
    有些输出是固定的、但有些输出会随着设计的成熟而发生变化。
    我觉得我们不能在我们的要求发生变化时反复向您询问 Codeloader 文件。 因此、我们需要冻结一个模板以获得正确的 codeloader 文件、而无需花费大量精力。
    我尝试理解 Codeloader 软件、它看起来并不是很简单、因此有一种简单的方法来进行设置并生成 Codeloader 输出。

    此外、我们还通过 I2C 对时钟发生器 EEPROM 进行编程。

    我总结了使用以下伪代码对时钟发生器模块进行编程的过程、请查看相同内容

    1. PDN 0->1.
    2.按照 Codeloader 值读取/写入块寄存器。
    SRAM 写入
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[6]= 1'B1;//寄存器到 SRAM 的传输
    4. EEPROM 写入
    R144[7:0]= 0xEA;//保护
    R137[0]= 1'B1;// SRAM 到 EEPROM 的传输
    读取 R136;//确保 EEPROM 编程周期已递增
    R 144 = 0x00;
    如果设置为0、则读取 R137[5]//表示 EEPROM 编程成功
    5. RESETN_SW = 1'b0;

    查询:

    一些寄存器具有"已读"位、这在 Codeloader 文件中是需要注意的、或者在写入时我们应该屏蔽每个寄存器-在这种情况下、您可以共享寄存器的屏蔽值(如果可用)。
    例如:reg 12保留了 bit5集、但代码加载程序将值0设置为该寄存器位(0xDF)。 如果软件忽略0xDF 并将其直接写入该寄存器或读取旧值、则屏蔽该位并重写该位。
    我收到了一个只读寄存器列表、并通过另一个链接保留、该列表将直接被忽略。 不写-正确。

    如果 RESETN_SW (1->0)在 EEPROM 写入后或 SRAM 写入后完成、不管怎样它不会复位配置控制器。 此外,在将该位设置为0后,如果该位恢复为1 (0->1)使其复位结束,则该位的最小脉冲宽度应为相同的值。

    此致、

    Vijetha

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

    附加 的只读和保留寄存器列表。

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

    PS:

    GPIO0连接到 FPGA (1.8V 组)、还使用4.99K 欧姆拉低至 GND。
    现在、如果我必须使其变为高电平、我可以将其连接到1.8V 吗? 如果必须将其连接到 VDD_DIG (3.3V)、则必须将其与 FPGA 隔离。 正确答案:
    选项1:将 GPIO0连接到 FPGA (1.8V IO 引脚)+提供高达1.8V 的上拉电阻(VCCO 电压)
    选项2:将 GPIO0与 FPGA 隔离并将 GPIO0上拉至 VDD_DIG (3.3V)

    如果我们看到数据表第14页的表8.2、则电气特性显示 VIH MIN 为1.2V、因此将 GPIO0连接到1.8V 仍将作为逻辑高电平进行仿真。

    2、按照 LMK03328数据表的建议、我们在次级输入上使用了7M25072001晶体。 希望这是一个具有+/-30ppm 稳定性的精密晶体。
    通过使用晶振输入接口、我们可以得出以下结果

    "如果减少晶体的频率误差至关重要、则应使用具有低牵引度的晶体。 如果
    需要频率裕度或频率尖峰、应使用具有高牵引度的晶体"


    我们对任何频率裕量选项都不感兴趣、GPIO 4和5应该连接到什么?您在前面的帖子中附加的寄存器值是否正确
    将匹配相同的选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vijetha、
    请给我几天时间来回顾一下。
    谢谢、
    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alan:

    以上查询列表是否有更新?

    此致、

    Vijetha

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

    1、编程顺序正常。

    R135及更高版本的寄存器是只读、保留或存储器控制寄存器、因此在执行步骤2 (每个 CodeLoader 值阻止寄存器写入)时可以排除它们。  寄存器 R0至 R11是只读的、可以跳过或屏蔽。

    对于步骤2、您可以将从 Codeloader 从 R12导出的寄存器数据写入 R134 (包括 R12)、并应用以下写入掩码:

    • 不应修改可写寄存器中的保留位(应用读-修改-写方法)
    • 对只读寄存器(R13、R16、R18)应用写屏蔽(0xFF =不修改)
    • 对保留寄存器(R26、R48、R87、R106至 R116、R121至 R131)应用写屏蔽(0xFF =不修改)

    2. RESETN_SW 位可以在结束时(步骤5)按您的原样清除(1->0)。  您可以在随后的寄存器写入中设置 RESETN_SW (0->1)。  I2C 接口足够慢、因此您无需担心 RESETN_SW 的最短时间。

    此致、
    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1、是的、VIH 最小值为1.2V、因此 GPIO 兼容1.8V。 选项1或选项2均正常。
    2.将 GPIO4连接至高电平10k、将 GPIO5连接至 GND 10k。 使用从 XTAL 引脚到 SECREF 引脚的短走线长度来大大减少杂散电容。

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

    您好!

    GPIO 中的硬件更改如下所示:

    GPIO0:10K 下拉至 GND

    GPIO1: 10K 下拉至 GND

    GPIO2和 GPIO3:上拉至1.8V 到10K

    GPIO4: 上拉至1.8V 到10K

    GPIO5: 10K 下拉至 GND

    我们将进一步检查并返回结果和观察结果。

    此致、

    Vijetha

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

    尊敬的 Alan:

    我们能够配置时钟发生器的寄存器块并合成新的输出时钟。
    但写入 EEPROM 失败。
    时钟发生器输出合成为默认 EEPROM 内容、如表13所示。 重新启动后。

    请检查行中的注释。

    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。

    SRAM 写入
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[6]= 1'B1;//寄存器到 SRAM 的传输

    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[0]= 1'B1;// SRAM 到 EEPROM 的传输
    读取 R136;//确保 EEPROM 编程周期已递增
    R 144 = 0x00;// EEPROM 保护
    如果设置为0、则读取 R137[5]//表示 EEPROM 编程成功

    -- R136的值为0x01,表示 EEPROM 已配置一次。 但即使 EEPROM 被多次写入、它也保持不变。 论坛中有人指出、它在复位后会增加。 但即使在下电上电后、该寄存器也保持不变。
    --读取 R137[5]被设定为1表示 EEPROM 写入不成功。

    5. RESETN_SW = 1'b0;

    查询:

    1.是否所有 LMK03328器件都支持 EEPROM 编程。
    2.是否有任何时序要保持在上述序列中。 我在任何2个寄存器写入之间保持了1ms 的延迟、在 EEPROM 写入之后大约保持了1ms 的延迟(数据表提到了230ms)。
    如何继续写入 EEPROM。

    此致、

    Vijetha

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

    我们能够配置时钟发生器的寄存器块并合成新的输出时钟。
    但写入 EEPROM 失败。
    时钟发生器输出合成为默认 EEPROM 内容、如表13所示。 重新启动后。
    请检查行中的注释。

    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。

    SRAM 写入
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[6]= 1'B1;//寄存器到 SRAM 的传输

    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[0]= 1'B1;// SRAM 到 EEPROM 的传输
    读为 R136; //确保 EEPROM 编程周期已递增
    R 144 = 0x00; // EEPROM 保护
    读取 R137[5] //如果设置为0,则表示 EEPROM 编程成功

    -- R136的值为0x01,表示 EEPROM 已配置一次。 但即使 EEPROM 被多次写入、它也保持不变。 论坛中有人指出、它在复位后会增加。 但即使在下电上电后、该寄存器也保持不变。
    --读取 R137[5]被设定为1表示 EEPROM 写入不成功。

    5. RESETN_SW = 1'b0;

    查询:

    1.是否所有 LMK03328器件都支持 EEPROM 编程。
    2.是否有任何时序要保持在上述序列中。 我在任何2个寄存器写入之间保持了1ms 的延迟、在 EEPROM 写入之后大约保持了1ms 的延迟(数据表提到了230ms)。
    如何继续写入 EEPROM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、所有 LMK03328器件都支持 EEPROM 编程。

    以下是针对编程序列的一些建议修改(红色):

    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。
    --确保 R12[2]= 1'B1 (始终启用内部数字系统时钟)


    SRAM 写入  
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[7:0]= 0x50;//寄存器到 SRAM 的传输、自动 CRC
    读取 R137;//确保 R137读取0x10 (位6被自清零)以确认 SRAM 传输完成,然后再继续


    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[7:0]= 0x11;// SRAM 到 EEPROM 的传输、自动 CRC
    至少等待300ms。
    读取 R137;//确保 R137读取0x10 (位1被自清零、位5被清零)以确认 EEPROM 程序成功完成。
    R144 = 0x00;// EEPROM 保护

    5. NVM 提交--仅在成功进行 EEPROM 编程后执行此步骤(即 R137在步骤4中读取0x10)
    R137[7:0]= 0x18;// 将 NVM 内容传输到寄存器(目的是刷新 R136中的 NVMCNT 值)
    读取 R136;//确保 EEPROM 程序计数递增(该寄存器仅通过 NVM 提交、下电上电或切换 PDN 引脚更新、而不是通过软复位更新)。

    6。RESETN_SW = 1'b0;(如果 PLL 已经被锁定、则无需软复位、但如果 PLL 未被锁定、则可执行软复位以重新启动 VCO 校准)。

    希望这对您有所帮助。

    此致、
    Alan

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

    我自己使用 Vijetha 处理 FPGA 编程序列。
    请按内联方式查找以下观察结果

    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。
    --确保 R12[2]= 1'B1 (始终启用内部数字系统时钟)

    正如预期的那样-我们正在正确写入

    SRAM 写入  
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[7:0]= 0x50;//寄存器到 SRAM 的传输、自动 CRC
    读取 R137;//确保 R137读取0x10 (位6被自清零)以确认 SRAM 传输完成,然后再继续

    正如预期的那样,R 137读取0x10 -- SRAM 传输成功

    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[7:0]= 0x11;// SRAM 到 EEPROM 的传输、自动 CRC
    至少等待300ms。
    读取 R137;//确保 R137读取0x10 (位1被自清零、位5被清零)以确认 EEPROM 程序成功完成。

    错误:R137读取0X11 -在调试模式下、60秒后读取寄存器。 仍然设置了零位。 即 EEPROM 编程失败。
    注意:我认为在您的上述评论中、您是指位0和4、而不是位1和5。

    R144 = 0x00;// EEPROM 保护

    5. NVM 提交--仅在成功进行 EEPROM 编程后执行此步骤(即 R137在步骤4中读取0x10)
    R137[7:0]= 0x18;// 将 NVM 内容传输到寄存器(目的是刷新 R136中的 NVMCNT 值)
    读取 R136;//确保 EEPROM 程序计数递增(该寄存器仅通过 NVM 提交、下电上电或切换 PDN 引脚更新、而不是通过软复位更新)。

    6。RESETN_SW = 1'b0;(如果 PLL 已经被锁定、则无需软复位、但如果 PLL 未被锁定、则可执行软复位以重新启动 VCO 校准)。

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

    这是使用 Vijetha 对 FPGA 编程序列进行回复的过程。
    请查看以下观察结果


    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。
    --确保 R12[2]= 1'B1 (始终启用内部数字系统时钟)
    正如预期的那样-我们正在正确写入

    SRAM 写入  
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[7:0]= 0x50;//寄存器到 SRAM 的传输、自动 CRC
    读取 R137;//确保 R137读取0x10 (位6被自清零)以确认 SRAM 传输完成,然后再继续
    正如预期的那样,R 137读取0x10 -- SRAM 传输成功

    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[7:0]= 0x11;// SRAM 到 EEPROM 的传输、自动 CRC
    至少等待300ms。
    读取 R137;//确保 R137读取0x10 (位1被自清零、位5被清零)以确认 EEPROM 程序成功完成。
    错误:R137读取0X11 -在调试模式下60秒后读取。 仍然第0位被置位。 即 EEPROM 编程失败。
    注:我希望您在上面的评论中说的是位0和4、而不是位1和5。

    R144 = 0x00;// EEPROM 保护

    5. NVM 提交--仅在成功进行 EEPROM 编程后执行此步骤(即 R137在步骤4中读取0x10)
    R137[7:0]= 0x18;// 将 NVM 内容传输到寄存器(目的是刷新 R136中的 NVMCNT 值)
    读取 R136;//确保 EEPROM 程序计数递增(该寄存器仅通过 NVM 提交、下电上电或切换 PDN 引脚更新、而不是通过软复位更新)。

    6。RESETN_SW = 1'b0;(如果 PLL 已经被锁定、则无需软复位、但如果 PLL 未被锁定、则可执行软复位以重新启动 VCO 校准)。

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

    尊敬的 Alan:

    请查看以下观察结果


    1. PDN 0->1.

    2.按照 Codeloader 值读取/写入块寄存器。
    --我们能够写入这些寄存器集,输出时钟根据新值合成。
    --确保 R12[2]= 1'B1 (始终启用内部数字系统时钟)
    正如预期的那样-我们正在正确写入

    SRAM 写入  
    R145[3:0]= 0x0;//设置为 PAGE 0
    R137[7:0]= 0x50;//寄存器到 SRAM 的传输、自动 CRC
    读取 R137;//确保 R137读取0x10 (位6被自清零)以确认 SRAM 传输完成,然后再继续
    正如预期的那样,R 137读取0x10 -- SRAM 传输成功

    4. EEPROM 写入
    R144[7:0]= 0xEA;// EEPROM 保护
    R137[7:0]= 0x11;// SRAM 到 EEPROM 的传输、自动 CRC
    至少等待300ms。
    读取 R137;//确保 R137读取0x10 (位1被自清零、位5被清零)以确认 EEPROM 程序成功完成。

    错误:R137读取0X11 -在调试模式下60秒后读取。 仍然第0位被置位。 即 EEPROM 编程失败。
    注:我希望您在上面的评论中说的是位0和4、而不是位1和5。

    R144 = 0x00;// EEPROM 保护

    5. NVM 提交--仅在成功进行 EEPROM 编程后执行此步骤(即 R137在步骤4中读取0x10)
    R137[7:0]= 0x18;// 将 NVM 内容传输到寄存器(目的是刷新 R136中的 NVMCNT 值)
    读取 R136;//确保 EEPROM 程序计数递增(该寄存器仅通过 NVM 提交、下电上电或切换 PDN 引脚更新、而不是通过软复位更新)。

    6。RESETN_SW = 1'b0;(如果 PLL 已经被锁定、则无需软复位、但如果 PLL 未被锁定、则可执行软复位以重新启动 VCO 校准)。

    此致、
    Chedthan

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

    尊敬的 Alan:

    感谢您帮助我们找出问题的根源。 我将为读者添加解决方案。

    第4步中出现错误- EEPROM 写入
    由于这些事务是原子事务、在步骤4中、不应在2次写入之间进行任何事务、但正如我们在对寄存器137执行读-修改-写操作时所做的那样、该寄存器在 R144和 R137的2个写入周期之间增加了一个额外的读取周期。

    R144[7:0]= 0xEA;// EEPROM 保护
    R137[7:0]= 0x11;// SRAM 到 EEPROM 的传输、自动 CRC

    此致、
    Chedthan