深入解析TI CPSW以太网子系统:RGMII配置、流控制与CPTS时间同步

📅 2026/7/21 13:04:22
深入解析TI CPSW以太网子系统:RGMII配置、流控制与CPTS时间同步
1. CPSW以太网子系统架构概览在嵌入式系统尤其是工业控制、汽车电子和高端消费电子领域实现稳定、高效、低延迟的网络通信是核心需求之一。德州仪器TI的CPSWCommon Platform Ethernet Switch通用平台以太网交换子系统便是为满足此类需求而设计的高度集成的多端口以太网解决方案。它不仅仅是一个简单的MAC媒体访问控制器更是一个集成了交换、DMA直接内存访问、时间同步和高级流量管理功能的复杂片上系统。理解CPSW对于设计高性能嵌入式网络应用至关重要。其核心价值在于它将传统上需要多颗芯片才能实现的功能——例如双端口MAC、一个内部交换矩阵、一个DMA引擎以及一个精密的时间戳单元——集成到单一IP核中极大地简化了硬件设计降低了系统复杂性和功耗同时通过硬件加速提升了数据吞吐量和实时性。CPSW的典型架构包含一个CPPICommon Port Programming Interface主机端口和两个独立的以太网MAC端口通常标记为Port 1和Port 2。CPPI端口负责与系统主处理器如ARM Cortex-A系列进行高效的数据交换通过DMA方式将数据包搬移到系统内存极大减轻了CPU负担。两个以太网端口则通过标准的MII、RMII或RGMII接口连接外部物理层PHY芯片实现与外部网络的连接。这种设计使得单个嵌入式SoC能够同时充当网络终端设备和简易交换机例如在工业网关中一个端口连接上层网络另一个端口连接下层设备并实现数据交换和协议转换。除了基本的数据通路CPSW还集成了几个关键子模块ALEAddress Lookup Engine地址查找引擎用于实现二层交换和学习功能统计模块用于监控网络性能以及CPTSCommon Platform Time Sync通用平台时间同步模块为IEEE 1588PTP等高精度时间同步协议提供硬件支持。本文将聚焦于其中三个最为关键且互相关联的深度技术细节RGMII接口的配置与工作模式、基于IEEE 802.3X的流控制机制及其实现以及CPTS时间同步模块的工作原理与事件处理。这些内容是确保CPSW在网络应用中达到设计性能指标的基础。2. RGMII接口深度解析与实战配置RGMIIReduced Gigabit Media Independent Interface是当前千兆以太网MAC与PHY之间最主流的接口标准之一。它在保持与MII、GMII兼容性的同时通过采用DDR双倍数据速率技术和减少信号线数量实现了在较低频率下传输千兆数据有效降低了PCB布局的复杂度和信号完整性要求。对于CPSW这类集成度高的子系统正确理解和配置RGMII是硬件和底层驱动开发的第一步。2.1 RGMII信号定义与电气特性一个完整的RGMII接口包含以下关键信号组理解每一根线的职责是硬件设计的基础TXD[3:0] (Transmit Data): 4位发送数据线。在千兆模式下在时钟的上升沿和下降沿各传输4位数据从而实现每个时钟周期传输8位1字节。在10/100M模式下仅使用低半字节TXD[3:0]的低4位但为了减少信号切换功耗CPRGMI模块会在两个边沿都发送相同的低半字节数据。TX_CTL (Transmit Control): 发送控制线。这条线功能复合在时钟上升沿指示TXD数据有效类似GMII的TX_EN在时钟下降沿指示发送错误类似GMII的TX_ERR。在CPSW中由于CPGMAC不产生MTXERR信号任何发送错误如下溢会通过错误的CRC来指示因此TX_CTL的下降沿通常始终为低未断言。TX_CLK (Transmit Clock): 发送参考时钟由MAC侧产生。其频率随速率变化125 MHz1000 Mbps、25 MHz100 Mbps、2.5 MHz10 Mbps。这个时钟是数据和控制信号的同步源。RXD[3:0] (Receive Data): 4位接收数据线。同样采用DDR技术在接收时钟的上升沿和下降沿由PHY向MAC提供数据。RX_CTL (Receive Control): 接收控制线。在时钟上升沿指示RXD数据有效RX_DV在下降沿指示接收错误RX_ERR。RX_CLK (Receive Clock): 接收参考时钟由PHY侧产生并提供给MAC。频率与TX_CLK对应也根据链路速率变化。此外MDIOManagement Data Input/Output和MDCManagement Data Clock是独立的管理接口用于配置和读取PHY芯片的内部寄存器如设置工作模式10/100/1000M、全/半双工、读取链路状态、中断使能等。这是一个低速的串行接口至关重要但通常不参与高速数据路径。注意PCB布局要点RGMII的时钟频率高达125MHz且采用DDR方式对信号完整性要求较高。在PCB设计时必须将TXD、TX_CTL与TX_CLK作为一组RXD、RX_CTL与RX_CLK作为另一组进行严格的等长布线通常要求长度匹配在±50 mil以内并确保有完整的参考地平面。MDIO/MDC走线则可相对宽松。2.2 内部延迟Internal Delay模式的选择与配置RGMII规范定义数据信号TXD/RXD与控制信号TX_CTL/RX_CTL需要相对于时钟边沿有特定的建立和保持时间。为了简化PCB设计RGMII v2.0允许在MAC或PHY内部集成延迟电路将数据和控制信号延迟约1.5~2.0 ns从而在PCB上实现时钟与数据线的同步传输即不需要在PCB上刻意绕线制造延迟。CPSW的CPRGMI模块提供了可选的内部发送延迟。配置内部延迟的关键寄存器是GMII_SEL属于控制模块而非CPSW寄存器域。其中RGMII0_ID_MODE和RGMII1_ID_MODE位分别对应Port 1和Port 2决定了是否启用内部延迟。当RGMIIx_ID_MODE 0内部延迟被包含Included。这意味着CPRGMI模块会在TX_CLK路径上增加一个延迟使得输出的TXD和TX_CTL信号相对于TX_CLK的边沿被延迟。此时PCB布线应使时钟线与数据线等长。当RGMIIx_ID_MODE 1内部延迟被排除Excluded。CPRGMI模块不增加延迟。此时必须在PCB设计上让TX_CLK走线比TXD/TX_CTL走线长约1.5~2英寸具体值需参考PHY芯片手册和PCB板材的传播延迟以在物理上实现所需的延迟。如何选择这取决于你使用的PHY芯片。你需要查阅PHY的数据手册如果PHY芯片声明它“支持RGMII IDInternal Delay模式”或“在RX侧包含了延迟”那么为了匹配CPSW的MAC侧发送也应包含延迟。通常将CPSW的RGMIIx_ID_MODE设为0并确保PCB上时钟与数据线等长。如果PHY芯片不支持内部延迟或者其数据手册要求PCB上时钟线更长那么应将CPSW的RGMIIx_ID_MODE设为1并严格按照要求进行PCB延时布线。实操心得调试第一步很多RGMII链路不起来的首要原因就是延迟模式配置错误或PCB等长处理不当。上电初始化后首先通过示波器或逻辑分析仪测量TX_CLK与任意一根TXD信号。观察在TX_CLK的上升沿TXD数据是否稳定眼图张开。如果数据跳变沿紧贴时钟沿很可能就是延迟问题。此时尝试在软件中切换RGMIIx_ID_MODE的设置如果硬件支持看链路是否能建立。2.3 链路协商带内In-Band模式与强制Forced模式CPSW的RGMII接口支持两种链路状态获取模式由SLn_MACCONTROL寄存器中的EXT_EN位控制它映射到RGMII_RX_INBAND输入信号。带内模式In-Band Mode当EXT_EN 1时启用。在此模式下CPSW通过解析RGMII数据流中特定的“带内”状态信息来自动获取链路速度10/100/1000M和双工模式。这是最常用且推荐的方因为它允许MAC与PHY通过自动协商Auto-Negotiation来动态确定最佳链路参数。PHY会在空闲时发送特定的脉冲序列来告知MAC当前链路状态。强制模式Forced Mode当EXT_EN 0时启用。在此模式下CPSW忽略RGMII数据流中的任何带内状态信息。链路状态Link Status被强制置为有效高而链路速度和双工模式则由RGMII_GIG_IN和RGMII_FULLDUPLEX_IN这两个硬件输入引脚或对应的寄存器配置映射的状态来强制指定。RGMII_GIG_IN断言表示千兆模式RGMII_SPEED 10否则为百兆模式RGMII_SPEED 01。注意强制模式下不支持10M模式。双工模式则由RGMII_FULLDUPLEX_IN指定。模式选择建议在绝大多数应用中应使用带内模式。让PHY和远端设备通过自动协商决定速率和双工可以保证最大的兼容性避免因两端配置不匹配导致的半双工/全双工不匹配问题这将导致严重的性能下降和丢包。强制模式仅在一些特殊场景下使用例如连接一个不支持自动协商的特定设备或者在进行某些底层诊断和测试时。2.4 RGMII接口初始化与链路建立流程以下是驱动层面初始化RGMII接口并建立链路的一般步骤这比单纯看信号定义更有实操价值硬件复位与电源稳定确保SoC和PHY芯片的电源、复位信号正常。通常需要先解除PHY的复位并等待其内部PLL稳定毫秒级延时。配置控制模块Control Module通过SoC的控制模块寄存器如GMII_SEL设置RGMIIx_ID_MODE位选择正确的内部延迟模式。这一步必须在使能CPSW模块之前完成。配置CPSW的MAC控制寄存器对于目标端口如Port 1配置其SL1_MACCONTROL寄存器。设置EXT_EN 1选择带内模式。根据需求配置全双工FULLDUPLEX、流控制使能TX_FLOW_EN/RX_FLOW_EN等。初始阶段流控制可以先禁用。通过MDIO配置PHY这是关键一步。通过CPSW的MDIO模块访问PHY的寄存器。可选软复位PHY向PHY的控制寄存器通常为0写入复位位并等待复位完成。设置自动协商配置PHY的自动协商广告寄存器如Reg 4声明本端支持的能力如10/100/1000M全双工、暂停帧能力等。重启自动协商向PHY控制寄存器写入命令开始自动协商过程。轮询链路状态定期读取PHY的状态寄存器如Reg 1检查Link Up位是否置位。同时可以读取协商结果寄存器获取确定的速率和双工模式。验证CPSW侧链路状态PHY链路建立后CPSW应能通过带内信息获取到状态。读取CPSW的相关状态寄存器如SL1_STATUS确认LINK位为1并检查SPEED和FULLDUPLEX字段是否与PHY报告的一致。处理链路中断在实际运行中需要处理链路断开重连的情况。通常通过PHY的中断或轮询CPSW状态寄存器来实现。当检测到链路断开时驱动应重新触发自动协商流程。这个流程确保了从硬件配置、软件初始化到链路建立的完整通路。任何一个环节的疏漏都可能导致“物理链路已通但数据不通”的诡异问题。3. 流控制机制从原理到CPSW实现在网络通信中当接收方的处理速度跟不上发送方的发送速度时就会发生缓冲区溢出导致数据包被丢弃。流控制Flow Control就是防止这种情况发生的机制。在以太网中尤其是在全双工模式下IEEE 802.3X定义的暂停帧Pause Frame是标准的流控制方法。CPSW对此提供了完整的硬件支持。3.1 流控制的基本概念与必要性想象一下一个高速生产线发送方和一个包装工位接收方。如果包装工位暂时堵塞例如下游系统繁忙而生产线还在不断输送产品产品就会堆积并最终掉落丢包。流控制就像是包装工位向生产线发送一个“暂停”信号“请暂停发送10秒钟”。生产线收到后暂停等待包装工位清理积压然后再恢复生产。这样避免了产品丢失。在以太网中这个“暂停信号”就是一个特殊的MAC控制帧——暂停帧。它包含一个“暂停时间”字段单位是“暂停量子”512比特时间。发送暂停帧的一方请求对方停止发送数据帧但控制帧如暂停帧本身仍可发送指定的时间。CPSW的流控制分为两个方向接收流控制Rx Flow Control和发送流控制Tx Flow Control并且针对CPPI端口和以太网端口有不同的逻辑。3.2 CPPI端口流控制Port 0CPPI端口是CPSW与主机内存交换数据的通道。其流控制主要针对发送方向即数据从主机内存进入交换机的方向对应CPPI的TX路径。使能通过设置CPSW_FLOW_CONTROL寄存器中的P0_FLOW_EN位来使能。该位在复位后默认为使能因为主机发起的流量通常具有高优先级不应被丢弃。触发条件当CPPI发送路径的目标FIFO通常是交换机内部的公共缓冲区或对应以太网端口的发送FIFO即将满时硬件会自动触发流控制。这会暂停CPPI DMA从主机内存读取新的数据包描述符和数据。作用防止主机以过高的速率向交换机注入数据导致交换机内部缓冲区溢出从而避免由交换机侧丢包。这是一种背压机制将拥塞压力反馈给数据源主机驱动。3.3 以太网端口流控制Port 1 2以太网端口的流控制更为复杂涉及与外部网络设备的交互分为接收流控制和发送流控制。3.3.1 接收流控制Rx Flow Control接收流控制用于控制从外部网络进入交换机的数据流。当交换机某个端口的接收处理能力不足时例如目标FIFO快满了它需要通知对端设备“请暂停发送”。使能通过设置对应端口的SLn_MACCONTROL寄存器中的RX_FLOW_EN位。注意复位后此功能默认是禁用的。触发条件当端口的逻辑接收FIFO使用量达到预设阈值时硬件会断言RX_FLOW_TRIGGER信号。工作机制根据双工模式不同全双工模式FULLDUPLEX1CPSW会向对端设备发送一个IEEE 802.3X暂停帧。这个帧的目的地址是特殊的组播地址01-80-C2-00-00-01长度/类型字段为0x8808操作码为0x0001并携带一个暂停时间通常为最大值0xFFFF约33秒。对端标准以太网设备收到此帧后应停止发送数据帧指定的时间。半双工模式FULLDUPLEX0由于半双工下CSMA/CD机制本身就有冲突检测CPSW采用基于冲突的流控制。当流控制触发时对于任何接收到的帧CPSW会在其开始接收后不久大约在源地址开始接收时主动产生一个冲突发送特定的阻塞序列0xC3重复12次迫使发送方回退并重发。这本质上是一种“制造冲突”来减缓对方发送速率的方法。重要配置项文档明确指出当使能一个端口的接收流控制时必须调整该端口关联的FIFO块分配。默认的RX分配3个块需增加以容纳流控制“耗尽期”runout的数据包即触发流控制后线路上还在传输的帧。相应地需要减少TX块的分配。如果不调整可能导致缓冲区分配不足影响性能甚至功能。3.3.2 发送流控制Tx Flow Control发送流控制用于响应从外部网络接收到的暂停帧控制从交换机向外部网络发送的数据流。使能条件必须同时满足两个条件才生效FULLDUPLEX1全双工模式且TX_FLOW_EN1。工作机制当端口收到一个合法的暂停帧目的地址为01-80-C2-00-00-01或本端MAC地址长度64~RX_MAXLEN字节无错误操作码为0x0001它会解析其中的暂停时间值并加载到内部的发送暂停计时器中。在计时器归零之前该端口将不会开始发送任何新的数据帧。但请注意正在传输的帧会完成。端口仍然可以发送暂停帧用于发起接收流控制。暂停帧请求只是“礼貌的请求”如果对端设备不遵守数据仍可能发送过来此时如果本端RX FIFO满则会丢包。暂停帧处理细节如果在一个暂停时段内收到新的有效暂停帧且新帧的暂停时间为0则立即取消暂停。如果新帧的暂停时间非零则立即用新时间替换旧计时器。如果新帧的目的地址不是保留组播地址或本端单播地址则当前暂停计时器会立即到期。如果TX_FLOW_EN被清零暂停计时器也会立即到期。3.4 流控制配置实战与排错在实际驱动开发中配置流控制需要谨慎不当的配置可能导致网络性能下降甚至通信中断。典型配置步骤确定需求是否需要流控制在数据中心或存储网络等高吞吐、低丢包场景下通常需要。在轻负载或实时控制网络如EtherCAT中可能禁用以避免不必要的延迟。配置FIFO如果决定启用接收流控制RX_FLOW_EN务必参考芯片数据手册重新计算并配置端口RX和TX的FIFO块分配寄存器如CPSW_Pn_RX_BLKS等为RX分配更多缓冲区。设置MAC控制寄存器配置SLn_MACCONTROL寄存器。设置FULLDUPLEX通常为1启用全双工。设置RX_FLOW_EN如果需要本端口通知对端暂停。设置TX_FLOW_EN如果需要本端口响应对端的暂停请求。可选配置流控制触发阈值通过CPSW_FLOW_THRESH等寄存器可以微调触发流控制的FIFO水位线以适应不同的流量模式。常见问题与排查问题网络吞吐量极低且伴随大量延迟。排查检查是否误开启了流控制且对端设备不支持或未启用流控制。如果本端不断发送暂停帧RX_FLOW_EN使能且FIFO阈值设置过小而对端忽略则通信正常但效率低。如果本端因收到暂停帧而停止发送TX_FLOW_EN使能但对端从未发送过暂停帧则可能是收到了错误的暂停帧如恶意的组播流量。可以尝试在驱动中暂时禁用流控制RX_FLOW_EN0, TX_FLOW_EN0看性能是否恢复。问题启用流控制后出现偶发性丢包。排查首先确认FIFO块分配是否已按文档要求调整。默认的RX分配可能太小无法容纳流控制触发后线路上剩余的“飞行中”的数据包导致溢出丢包。增加RX分配通常能解决。问题如何验证流控制是否工作发送暂停帧可以编写测试程序在使能RX_FLOW_EN后人为制造端口拥塞例如快速向该端口发送大量数据同时用网络抓包工具如Wireshark监听该端口应该能捕获到目的地址为01:80:c2:00:00:01的暂停帧。响应暂停帧可以从另一台支持流控制的设备如一台PC在其网卡属性中启用“流控制”向CPSW端口发送暂停帧同时监测CPSW端口的发送统计应该能看到在暂停期间发送帧计数停止增长。流控制是一个强大的工具但需要根据具体的网络环境和应用需求进行精细的调优。盲目启用或使用默认配置可能适得其反。4. CPTS时间同步模块深度剖析在工业自动化、电信基站、金融交易等对时间同步有苛刻要求的领域IEEE 1588 Precision Time Protocol (PTP) 协议是事实标准。CPSW集成的CPTS模块正是为硬件辅助的PTP协议实现而设计它能够为发送和接收的每一个数据包打上高精度的时间戳极大提升了时钟同步的精度。4.1 CPTS架构与时钟源CPTS的核心是一个由RCLK驱动的32位时间戳计数器。RCLK的频率和稳定性直接决定了时间戳的精度。如图9-8所示RCLK可以从多个PLL时钟源中选择这提供了灵活性。一个关键约束是当CPSW工作在RGMII千兆模式时RCLK必须精确配置为250 MHz。这是因为时间戳计数器需要与数据路径的时钟域协调工作。250 MHz的时钟意味着时间戳的精度是4纳秒1/250e6这对于微秒级甚至亚微秒级的同步需求已经足够。CPTS模块监听所有端口的发送和接收数据路径。当任何一个端口有数据包开始或结束传输时CPTS会捕获当前时间戳计数器的值并与该数据包关联。同时CPTS硬件会实时解码每个数据包判断它是否是PTP事件报文如Sync、Delay_Req等。如果是则生成一个“以太网事件”记录并将时间戳和事件信息一起压入一个深度为16的事件FIFO中供主机CPU读取处理。此外软件也可以通过写寄存器来触发“时间戳推送事件”或者硬件通过外部引脚HWx_TS_PUSH触发事件这些事件也会进入FIFO。4.2 CPTS初始化与时间戳管理正确的初始化是CPTS工作的前提步骤如下复位CPTS模块通过写CPTS_CONTROL寄存器的复位位确保模块处于已知状态。禁用CPTS清除CPTS_CONTROL寄存器的CPTS_EN位。配置时钟源在控制模块Control Module的RMII_RFTCLK_SEL寄存器中写入CPTS_RFT_CLK值选择正确的RCLK源。务必确认此时钟频率符合要求特别是RGMII千兆模式下的250MHz。使能CPTS设置CPTS_CONTROL寄存器的CPTS_EN位。此时32位时间戳计数器开始从0递增。可选使能中断如果采用中断方式而非轮询方式处理事件FIFO需要设置CPTS_INT_ENABLE寄存器的TS_PEND_EN位。当事件FIFO非空时会产生中断。时间戳计数器只有32位在250MHz下大约每17.17秒2^32 / 250e6就会溢出归零。对于需要长时间运行的应用32位显然不够。因此软件必须维护一个更高位的“软件计数器”。CPTS模块通过生成“计数器溢出事件”和“计数器半溢出事件”来辅助软件完成这个扩展。4.3 事件FIFO与事件类型处理事件FIFO是CPTS与主机软件交互的核心。所有事件都是64位值通过两次32位读操作先读CPTS_EVENT_LOW再读CPTS_EVENT_HIGH取出。64位值中包含了事件类型、时间戳值、端口号、报文类型等丰富信息。事件类型详解时间戳推送事件Event Code 1由软件写TS_PUSH位触发。用于软件主动获取当前的硬件时间戳值。注意软件必须等待前一个推送事件被读取后才能触发下一个否则会导致FIFO溢出或数据覆盖。时间戳计数器溢出事件Event Code 2当32位硬件计数器从0xFFFF_FFFF翻转到0x0000_0000时产生。软件收到此事件后必须将其维护的“软件计数器”即高位部分加1。时间戳计数器半出事件Event Code 3当32位硬件计数器从0x7FFF_FFFF递增到0x8000_0000时产生。这个事件主要用于解决事件错位问题。以太网接收事件Event Code 4当CPTS识别到一个接收到的数据包是PTP事件报文时产生。事件内容中包含该报文被识别时的时间戳。以太网发送事件Event Code 5当CPTS识别到一个将要发送的数据包是PTP事件报文时产生。事件内容中包含该报文被提交发送时的时间戳。4.4 事件错位问题与软件矫正算法这是CPTS应用中最精妙也最容易出错的部分。由于硬件捕获时间戳和将事件放入FIFO是两个可能存在微小延迟的步骤在计数器溢出边界附近可能会发生“事件错位”。错位场景如图9-9所示硬件时间戳计数器值为0xFFFF_FFF0时一个PTP报文到达CPTS捕获了时间戳T1 0xFFFF_FFF0。紧接着在时间戳变为0x0000_0000的瞬间计数器溢出事件被生成。由于内部逻辑或总线延迟溢出事件时间0x0000_0000先于以太网事件时间0xFFFF_FFF0被压入FIFO。软件从FIFO中先读出溢出事件将软件计数器加1。然后读出以太网事件得到时间戳0xFFFF_FFF0。如果软件简单地组合软件计数器硬件时间戳会得到错误的时间(新软件计数器 0xFFFF_FFF0)这实际上代表了溢出之后很久的一个未来时间而真实时间应该是(旧软件计数器 0xFFFF_FFF0)。矫正算法 CPTS通过提供“半溢出事件”来帮助软件矫正。软件需要维护一个状态机核心逻辑如下在收到一个“溢出事件”后直到收到下一个“半溢出事件”之前这段时间称为“矫正窗口”。在“矫正窗口”内对于每一个收到的“以太网事件”检查其硬件时间戳的最高位bit 31如果bit 31 0时间戳在0x0000_0000到0x7FFF_FFFF之间说明该事件确实发生在溢出之后时间计算为(当前软件计数器 硬件时间戳)。如果bit 31 1时间戳在0x8000_0000到0xFFFF_FFFF之间说明发生了错位该事件实际发生在溢出之前。正确的时间计算应为(当前软件计数器 - 1 硬件时间戳)。即需要将软件计数器回退一次。在收到“半溢出事件”后“矫正窗口”关闭。之后的所有事件都按正常规则处理bit 31总是1但此时它代表的是下半段正常时间。实现这个矫正算法是编写高精度PTP协议栈的关键一步。忽略它会导致在计数器溢出时发生巨大的时间跳变严重破坏时钟同步。4.5 基于CPTS的PTP协议栈实现要点利用CPSW的CPTS模块实现IEEE 1588 PTP协议可以遵循以下架构硬件时间戳捕获配置CPTS并启用中断。在驱动中为每个网络数据包至少是PTP报文关联一个时间戳存储区域。中断服务程序ISR当事件FIFO非空中断触发时循环读取所有事件。根据事件类型进行处理溢出/半溢出事件更新软件计数器状态机。以太网发送事件将时间戳记录到对应数据包的控制结构中。以太网接收事件将时间戳记录到对应数据包的控制结构中。协议栈集成在协议栈处理PTP报文时从驱动提供的数据结构中获得精确的发送或接收时间戳t1, t2, t3, t4用于计算路径延迟和时钟偏移。时钟调整根据PTP算法计算出的时钟偏差通过调整CPTS时间戳加载寄存器CPTS_TS_LOAD_VAL或更常见的是调整系统PLL的时钟补偿来逐步校正本地时钟。通过将时间戳捕获下放到硬件并利用CPTS的事件机制可以消除操作系统调度、中断延迟、软件处理开销带来的不确定性将时钟同步精度从软件实现的毫秒级提升到硬件辅助的亚微秒级满足最严苛的工业实时网络需求。