直接可用的调整方法是使用“覆盖”接口对 system_timer
执行直接更新。在此过程中,用户逻辑按固定时间间隔提供其当前定时器值。逐端口输入 D_ptp_systemtimer_N
用于提供主时钟值。转换 D_ptp_st_sync_N
会触发覆盖。这两个信号均锁存在当日时间主时钟 ts_D_clk_N
上。
覆盖机制非常有效。使用 64 ns 的覆盖时间间隔和 timer_increment
默认设置即可支持 DCMAC Subsystem 维持目标准确性,即使时钟 PPM 为 ±200 也是如此。
在覆盖进程中,可使用
ctl_D_st_offset_N
输入对 D_ptp_systemtimer_N
值应用固定偏移。这样即可允许系统承担任意系统时延(例如,由于重新采样延迟而导致的时延)要求。它还提供了一种移动参考平面的方法,“参考平面”即数据路径中时间戳出现的时间点。 注释: 默认情况下,偏移应设为时钟周期的 4.75 倍。
如果当日时间主时钟域 ts_D_clk_N
和 D_ptp_st_sync_N
信号相对于本地时钟处于异步状态,那么可能会在错误的时钟周期内对新的系统定时器值进行重定时和采样,导致准确性下降。为避免发生此问题,嵌入式 DDR 检相器会自动调整提供的 system_timer
值,以便明确是在时钟上升沿还是下降沿对新的定时器值进行采样。这就是定时器模块框图中所显示的相位调整功能。
如需提升准确性,用户逻辑可在启动时覆盖系统定时器,然后按需持续监控 D_ptp_systemtimer_N_out
对系统定时器进行的频率和相位调整,以便精确匹配主定时器。通过使用此方法即可显著提升准确性。