建议软件驱动程序遵循下列步骤按顺序正确执行核初始化。
- 初始化设计的其他元素以使包括
ts_clk
和tx/rx_phy_clk*
在内的时钟存在并保持稳定。为这些时钟域释放复位,例如,ts_rst
或tx/rx_phy_rst*
。 - 配置
TOD_CONFIG
寄存器:- 在“Timer”(定时器)模式或“Timer Syncer”(定时器同步器)模式下,设置位 [0] 以启用系统定时器。
- 如果要使用外部 ToD 总线(1PPS 同步和可选串行秒输入),则请将位 [1] 设置为 1。
- 请将模式位字段 [3:2] 设置为与系统中使用的目标同步方法相匹配的设置。例如,如果系统使用连接到外部 ToD 总线(1PPS 输入和秒值串行输入)的外部器件,那么模式字段应设置为 0x1。
- 最后,启用“Port Timer”(端口定时器)使能位字段 [19:4] 的相应的位(设置为 1)即可启用端口 TX 定时器和 RX 定时器。
- 如果系统定时器的初始值将由软件通过寄存器编程来设置(外部 ToD 总线接口的替代方法),那么请将相应的初始值写入软件加载寄存器,例如,
TOD_SW_SEC_0/1
和TOD_SW_NS, TOD_SW_CTIME_0/1
。并通过写入TOD_SEC_SYS_OFFSET_0/1
和TOD_NS_SYS_OFFSET_0
寄存器来配置要加载的任何静态偏移。 - 如果在第 2 步中更新了软件寄存器,那么向
TOD_SW_LOAD[1:0]
的相应位写入 1 即可触发系统定时器以加载软件值。 - 对端口 TX/RX 定时器进行编程。这包括对周期值以及相应值的所有必要的静态偏移进行编程,方法是写入端口定时器的寄存器:TX<M>_PERIOD_0/1、RX<M>_PERIOD_0/1 和 TX<M>/RX<M>_SYS_OFFSET。
- 将输入 CORE_CONFIGURATION 配置为“1”并提供系统定时器时钟 RESYNC_CLK_PERIOD(以 ps 为单位)来启用混合同步器模块。
针对设计中存在的所有端口 (M) 继续执行步骤 4。