定时器寄存器映射 - 4.1 简体中文

10G/25G High Speed Ethernet Subsystem 产品指南 (PG210)

Document ID
PG210
Release Date
2023-05-10
Version
4.1 简体中文
表 1. 定时器寄存器映射
偏移 寄存器名称 访问 描述
0x0000 TOD_CONFIG RW

主配置

[0] - 启用系统定时器

该字段为“0”会禁用系统定时器 IP

[1] - 启用外部 ToD 总线

写入“1”即可启用 ToD 总线信号。“overwrite mode”(覆盖模式)字段可用于进一步定义信号的使用方式

仅当生成的核具有外部 ToD 总线接口支持时,此模式才存在

[3:2] - Overwrite Mode:

  • 0x0 - 当发生来自外部 ToD 总线的 1-PPS 事件时,不覆盖系统定时器计数器
  • 0x1 - 当发生来自外部 ToD 总线的 1-PPS 事件时,以外部 ToD 总线秒数输入来覆盖系统定时器计数器
  • 0x2 - 当发生来自外部 ToD 总线的 1-PPS 事件时,以软件 TOD_SW_SEC_0/1 寄存器中存储的值覆盖系统定时器计数器
  • 0x3 - 保留

仅当生成的核具有外部 ToD 总线接口支持时,以上模式才存在

[4] - 启用 Sys_timer 自动刷新。写入 1 即可启用 System Timer 块以最新 ToD 和 CTIME(如已启用)值来自动刷新端口定时器的功能

[5] - 在外部 1PPS 上启用定时器快照

[15:6] - 保留

[16 到 31] - 启用端口 TX 和 RX 定时器

  • [16] = 启用端口 0 TX 和 RX
  • [17] = 启用端口 1 TX 和 RX
  • [18] = 启用端口 2 TX 和 RX
  • [19] = 启用端口 3 TX 和 RX
  • [20] = 启用端口 4 TX 和 RX
  • [21] = 启用端口 5 TX 和 RX
  • [22] = 启用端口 6 TX 和 RX
  • [23] = 启用端口 7 TX 和 RX
  • [24] = 启用端口 8 TX 和 RX
  • [25] = 启用端口 9 TX 和 RX
  • [26] = 启用端口 10 TX 和 RX
  • [27] = 启用端口 11 TX 和 RX
  • [28] = 启用端口 12 TX 和 RX
  • [29] = 启用端口 13 TX 和 RX
  • [30] = 启用端口 14 TX 和 RX
  • [31] = 启用端口 15 TX 和 RX

端口数上限取决于核生成时启用的端口数。

0x0004 TOD_SNAPSHOT RW1T

[0] - 对所有定时器生成快照

写入 1'b1 将对所有计数器(系统、外部 ToD 总线和所有已启用的端口)生成快照

[31:1] - 保留

0x0008 TOD_INTR_ENABLE RW

中断使能寄存器

[0] - 1-PPS 中断(主 RTC 秒字段)

[15:1] - 保留

[16] - 1-PPS 中断(外部 1pps 输入)

[31:17] - 保留

0x000C TOD_INTR_STATUS RW1C

中断清除寄存器

[0] - 1-PPS 中断(主 RTC 秒字段)

[15:1] - 保留

[16] - 1-PPS 中断(外部 1pps 输入)

[31:17] - 保留

0x0010 TOD_SW_SEC_0 RW [31:0] - 覆盖主定时器的秒字段位 [31:0]
0x0014 TOD_SW_SEC_1 RW

[15:0] - 覆盖主定时器的秒字段位 [47:32]

[31:16] - 保留

0x0018 TOD_SW_NS RW

[29:0] - 覆盖主定时器的秒字段位

[31:30] - 保留

0x001C TOD_SW_LOAD RW1T

[0] - 写入“1”即可初始化大量系统定时器的 ToD 值(来自 TOD_SW_SEC_0/1、TOD_SW_NS 和 TOD_SW_CTIME_0/1 寄存器)

[1] - 写入“1”即可初始化大量系统定时器的 ToD 偏移值(来自 TOD_SEC_SYS_OFFSET_0/1 和 TOD_NS_SYS_OFFSET_0 寄存器)

注释: 偏移是由逻辑在系统定时器输出到端口定时器前添加的。因此,系统定时器 ToD 回读不反映偏移。

[31:2] - 保留

0x0020 TOD_SW_CTIME_0 RW [31:0] - 覆盖主定时器的 CF 字段位 [31:0]
0x0024 TOD_SW_CTIME_1 RW

[30:0] - 覆盖主定时器的秒字段位 [63:32]

[31] - 保留

0x0028 TOD_SEC_SYS_OFFSET_0 RW

{TOD_SEC_SYS_OFFSET_1[15:0], TOD_SEC_SYS_OFFSET_0[31:0]} - 表示系统定时器 48b 秒字段有符号偏移值

TOD_NS_SYS_OFFSET_0[29:0] - 表示系统定时器 30b 纳秒字段有符号偏移值

针对 TOD_SEC_SYS_OFFSET,有符号位解释如下

如果 [47] = 1'b1,则从系统定时器减去

如果 [47] = 1'b0,则与系统定时器相加

需在寄存器 0x001C 上应用触发器位 [1]

0x002C TOD_SEC_SYS_OFFSET_1 RW
0x0030 TOD_NS_SYS_OFFSET_0 RW
0x0100 TOD_SYS_SEC_0 RO [31:0] - 生成系统定时器的秒字段 [31:0] 的快照
0x0104 TOD_SYS_SEC_1 RO

[15:0] - 生成系统定时器的秒字段 [47:32] 的快照

[31:16] - 保留

0x0108 TOD_SYS_NS RO

[29:0] - 生成系统定时器的纳秒字段 [29:0] 的快照

[31:30] - 保留

0x010C TOD_SYS_OFFSET RW

[31:0] - 有符号偏移,将在外部 ToD 总线上发生 1PPS 事件时,应用于从外部 ToD 总线加载的秒值,并添加到 0 纳秒字段。

有符号值以 2-16 ns 来表示

仅当生成的核具有外部 ToD 总线支持时,此模式才存在

0x0110 TOD_SYS_CTIME_0 RO [31:0] - 生成系统定时器的 CF 字段 [31:0] 的快照
0x0114 TOD_SYS_CTIME_1 RO

[30:0] - 生成系统定时器的 CF 字段 [63:32] 的快照

[31] - 保留

0x0120 TODBUS_SEC_0 RO 外部 ToD 总线的秒字段 [31:0] 的当前值
0x0124 TODBUS_SEC_1 RO

[15:0] - 外部 ToD 总线的秒字段 [47:32] 的当前值

[31:16] - 保留

0x012C TODBUS_SYS_DIFF RO [31:0] - 对外部 ToD 总线采集的值与系统定时器的内部 ToD 值(以有符号单位 2-16 ns 来表示)进行每秒一次比较
0x0034 TOD_SYS_PERIOD_0 RW 系统定时器 TS 时钟周期,以 2-48 ns 来表示。

例如,3.2 ns 表示为:

TOD_SYS_PERIOD_0[31:0] = 0x3333_3333

TOD_SYS_PERIOD_1[23:0] = 0x0003_3333

TOD_SYS_PERIOD_1[31:24] reserved

写入 TOD_SYS_PERIOD_1 寄存器将把更新后的周期值“落实”到系统定时器内。

0x0038 TOD_SYS_PERIOD_1 RW