我正在调试使用 LMK04828B 的定制 PC 板。 我尝试使用动态数字延迟逻辑将输出时钟一次延迟一个 VCO 周期。 我将系统配置为0延迟模式、具有250MHz 参考时钟、500MHz VCXO、3000MHz PLL2 VCO 频率和125MHz 输出频率(24分频)。 DCLKout6用于0延迟模式的内部反馈、并从动态数字延迟中禁用。 启用了多个其他时钟以实现动态数字延迟。 PLL1输入分频器配置为 5MHz PFD 频率。 PLL 可以锁定并生成输出时钟、而不会出现任何问题。
当尝试一次调整一个输出时钟相位 VCO 时钟时、大约25%的时间相位变化远大于一个 VCO 时钟、并且看起来是随机的 VCO 时钟数。 有时、相位根本不会改变。 我已添加了未记录的 DCLKoutX_DDLYD_CNTH 和 DCLKoutX_DDLYD_CNTL 寄存器设置、并确保 CLKIN_OVERRIDE = 0和 DCLKoutX_DDLY_PD = 0、如先前对动态延迟问题的回答中所述。
板载 FPGA 写入 LMK04828B 的配置如下所示、从初始复位开始、到重复进行的寄存器写入结束、该写入本应一个时钟步进相位。 寄存器按照所示的顺序写入。 对于调试、PLL[x142]<= x01写入操作是为了响应消抖按钮的按压操作、结果会在示波器上观察到。
如何确保当我请求单步延迟时、它不会延迟一些随机的步长?
初始化/配置:
PLL[x000]<= x80
PLL[x100]<= x78
PLL[X101]<= XCD
PLL[x102]<= XCD
PLL[x106]<= X71
PLL[x107]<= x05
PLL[X108]<= x78
PLL[X109]<= XCD
PLL[x10A]<= XCD
PLL[x10E]<= X71
PLL[x010]<= xF0
PLL[X110]<= x78
PLL[x111]<= XCD
PLL[X112]<= XCD
PLL[x116]<= X71
PLL[x117]<= x05
PLL[x118]<= x78
PLL[x119]<= xCC
PLL[x11E]<= X71
PLL[x11F]<= x00
PLL[X120]<= x78
PLL[X121]<= XCD
PLL[x122]<= XCD
PLL[x126]<= X71
PLL[x127]<= x05
PLL[X128]<= x78
PLL[x129]<= XCD
PLL[x12A]<= XCD
PLL[x12E]<= X71
PLL[x12F]<= x00
PLL[X130]<= x78
PLL[x131]<= XCD
PLL[x132]<= XCD
PLL[x136]<= X71
PLL[X137]<= x05
PLL[x138]<= x20
PLL[x13F]<= x09
PLL[x140]<= x00
PLL[x141]<= X57
PLL[x143]<= x19
PLL[x144]<= x08
PLL[X145]<= x7f
PLL[x146]<= X3A
PLL[x147]<= X3A
PLL[x148]<= x02
PLL[X149]<= x02
PLL[X150]<= x00
PLL[x154]<= x32
PLL[x156]<= x02
PLL[x158]<= x02
PLL[x15A]<= x19
PLL[x15B]<= x15
PLL[x15F]<= x0B
PLL[X161]<= x04
PLL[x162]<= x90
PLL[X171]<= XAA
PLL[x172]<= x02
PLL[x17C]<= x15
PLL[x17D]<= X33
PLL[X168]<= x06
PLL[x16E]<= X13
PLL[x173]<= x00
PLL[x143]<= X13
PLL[X139]<= x02
重复到步骤阶段:
PLL[x142]<= x01
