工具/软件:
您好:
我正在尝试将 LMK05318B 配置为使用两个替代基准运行、即 PRIREF 为 10MHz、SECREF 为 125MHz。
GUI 工具正确确定 TDC 为 5MHz、因此 PRIREF 应除以 R=2、SECREF 应被 R=25 整除;反馈分频器为 2500/4/5 = 125。
如果 I SUPPLY 位于 SECREF 125MHz 上并禁用每个基准输入限定功能、DLL 将按预期锁定、因此分频器配置应正确。
我正在尝试启用基准输入监控功能、以检测有效基准何时实际存在。
振幅监控功能似乎有效、但不足以确定所提供的基准是否具有正确的频率。
因此、我尝试同时启用早期/后期功能和频率检测功能、在 SECREF 上测试 125MHz 基准: 均无效。
GUI 工具计算的早期/后期函数寄存器 PRIREF_MISSCLK_DIV=00008A 和 PRIREF_EEARTH_CLK_DIV=000070(用于 10MHz 基准)。
和 SECREF_MISSCLK_DIV=00000D 和 SECREF_EEARLY CLK_DIV=000007(用于 125MHz 基准)。
鉴于文档中没有任何说明、我正在执行一些改造工程以尝试了解检测的工作原理:
据我所知、在 625MHz (VCO1 除以 4 的 2500MHz) 下运行的计数器对基准上升沿之间的时钟周期进行计数。
对于 PRIREF (5MHz)、周期计数为 625/5 = 125 (0x7D)、恰好位于 GUI 工具计算的值 0x70 和 0x8A 的中间。
这些值可能是正确的、但我没有 10MHz 参考来进行检查。
对于 SECREF (125MHz)、周期计数为 625/125 = 5 (0x05)、这超出了 GUI 工具计算的可接受范围 (0x07 - 0x0D)。
如果我将寄存器值从 0x07/0x0D 修改为 0x03/0x07、那么较早/较晚的检测器会通过测试、但考虑到使用的频率较高且获得的值较低、
测量精度很差。 鉴于 GUI 计算的值恰好是预期(和工作)值的两倍、
我想可能有某种乘法器、它可用于将由 VCO1 获得的内部时钟加倍/相乘、以用于计算时间间隔
之间的差值。
我已经尝试将 SECREF_WINDOW_DET_DBLR_EN 更改为 1(寄存器 0xC9)但无效。
我尝试让频率检测正常工作。
GUI 工具计算得出的 PRIREF_PPM_MIN = SECREF_PPM_MIN = 0x0064 (100)、并且 PRIREF_PPM_MAX = SECREF_PPM_MAX = 0x006E (110)。
PRIREF_PPMDIV =SECREF_PPMDIV = 16(寄存器 0xD8 值为 0xF)。
PRIREF_CNTSTRT = 0x00001E85、PRIREF_HOLD_CNTSTRT = 0x000F4280、而 SECREF_CNTSTRT = 0x00017D79、SECREF_HOLD_CNTSTRT = 0x000F4248。
使用这些数字时、SECREF 125MHz 基准始终会失败检测。
鉴于文档中没有说明、我尝试了解频率检测的工作原理。
我假设可以使用 SECREF_HOLD_CNTSTRT 来确定时间间隔、表示为内部时钟周期数除以 SECREF_PPMDIV。
在观察时间间隔内、基准周期数被计数并除以 SECREF_CNTSTRT。
然后将结果与 SECREF_PPM_MIN /SECREF_PPM_MAX 定义的范围进行比较。
无论如何更改 SECREF_PPM_MIN /SECREF_PPM_MAX 值、检测都不起作用。
您能否清楚地解释一下应如何计算早期/后期和频率监控器的寄存器值?
谢谢
Andrea