收发器延迟补偿(TDC / SSP)

子域: bit-timing

概述

TDC(Transmitter Delay Compensation,收发器延迟补偿) 是 CAN FD/CAN XL 协议控制器在数据相位采用的采样补偿机制:发送节点在每帧测量”TxD 发出 → 收发器驱动 → 总线 → 接收比较器 → 回到 RxD”的实际发送器延迟(transmitter delay),把数据相位的采样推迟到第二采样点(SSP,Secondary Sample Point),以消除物理层延迟对数据相位采样的占用。

机制最早定义于 Bosch CAN FD 规范(2012)第 8.1 节 Transceiver Delay Compensation(“CAN FD nodes shall support an optional transceiver delay compensation mechanism…”),后被 ISO 11898-1:2024 第 7.3.4 节标准化并改为强制性要求。它只用于数据相位;仲裁相位仍用经典采样点。

关键参数与规则(7.3.4)

项目要求来源
支持性支持 FD 帧格式与支持 XL 帧格式的节点必须支持 TDC7.3.4
应使用(should)FD/XL 数据相位位时间 ≤ 1000 ns 时应使用 TDC7.3.4
必须使用(needs)FD/XL 数据相位中 Sync_Seg+Prop_Seg+Phase_Seg1 之和短于 PCS→PMA→PCS 传播延迟时必须使用7.3.4
是否启用可编程;启用时预分频 m 必须为 1 或 27.3.4
补偿能力至少 95 tq.min;仅支持 FD 不支持 XL 的节点可限制为 63 tq.min7.3.4
SSP 位置FD 帧与 XL 帧分别可配置7.3.4
SSP offset 范围FD/XL 数据位时间 1 至 160 tq.min(表 13);仅 FD 节点 1 至 63 tq.min(表 12)表 12/13

为什么必须 TDC:数据相位位时间太短

无发送器延迟补偿时,FD/XL 帧数据相位位速率受限于”发送器最迟在采样点收到自己发送的位,否则检测到位错误”这一约束(7.3.4 原文,与 Bosch 8.1 节措辞一致)。5 Mbit/s 数据位时间仅 200 ns,而典型收发器环回延迟达数百 ns 量级——固定采样点必然失效。

SSP 位置公式

SSP 位置 = 测得发送器延迟(计数器值)+ 配置的 SSP offset
flowchart LR
    A["每帧测量(7.3.4):<br/>FDF→res 隐性→显性边沿<br/>发送输出启动计数器"] --> B["计数器按每个 tq.min 递增"]
    B --> C["接收输入检测到显性 → 停止<br/>计数器值 = 测得发送器延迟"]
    C --> D["SSP 位置 = 测得延迟 + 配置的 SSP offset<br/>(FD/XL 分别可配置,1-160 tq.min)"]
    D --> E["同一帧数据相位:每个位在 SSP 采样<br/>与延迟的发送位比较"]
  • 延迟测量在每个发送帧进行:FD 帧在 FDF→res 位的隐性→显性边沿,XL 帧在 XLF→resXL 位的隐性→显性边沿;发送 res/resXL 位时在发送输出启动计数器,按每个最小时间量子(tq.min)递增,直到接收输入检测到显性信号停止;计数器值即测得发送器延迟,应用于同一帧的数据相位(7.3.4)。
  • 若 SSP 位置值为奇数且数据相位时间量子预分频为 2,可将 SSP 位置值除以 2 并向下取整(7.3.4)。

示例(NOTE,7.3.4)

使用最小配置范围时最新 SSP 为 160+95 = 255 tq.min(SSP offset 160 + 补偿 95);按 tq.min = 6,25 ns(160 MHz)计,可补偿 95 × 6,25 = 593,75 ns 的发送器延迟,SSP offset 可设为 160 × 6,25 = 1000 ns

位错误处理规则(7.3.4)

  • 启用 TDC 时,发送器忽略采样点处检测到的位错误;
  • SSP 处将接收位与(延迟的)发送位比较;若在 SSP 检测到位错误,在随后的采样点对该位错误作出反应(图 30);
  • 数据相位末端那些 SSP 会落入后续仲裁相位的位,禁用其位错误检测(图 35:SSP 序列在数据相位结束处停止;节点也可选择把 SSP 序列继续到数据相位限之外,仅检查本地错误,图 36);
  • 数据相位结束时(首个 CRC 界定符位的采样点)SSP 序列停止。

与 Bosch 规范第 8.1 节的对照

项目Bosch CAN FD 规范 v1.0(2012)8.1 节ISO 11898-1:2024 7.3.4 节
机制性质可选(optional) 机制FD/XL 使能节点必须支持
延迟名称TRV_DELAYtransmitter delay(发送器延迟)
测量边沿每帧 EDL 位 → 保留位 r0 的边沿(发送位边沿与接收位边沿之间)FD 帧 FDF→res 边沿、XL 帧 XLF→resXL 边沿(隐性→显性)
SSP 位置TRV_DELAY + offset(如数据相位半位时间),向下取整到整数个时间量子;可位于发送位结束之后测得发送器延迟 + 配置的 SSP offset(1-160 tq.min,表 13)
位错误反应SSP 检测到位错误 → 下一个采样点反应同左;启用时忽略采样点处的位错误

两条标准的机制同源:Bosch 2012 年首倡的”测量环回延迟、推迟到第二采样点比较”思路,在 ISO 11898-1:2024 中被保留为同一套 SSP 规则,并把”可选”升级为”支持 FD/XL 格式的节点必须支持”(7.3.4)。

数据相位速率与收发器延迟预算(ISO 11898-2:2024)

参数集适用位速率tLoop 最大关键位宽变化参数
参数集 A>1 Mbit/s 至 2 Mbit/s255 ns数值未从全文提取(见速查页注)
参数集 B>2 Mbit/s 至 5 Mbit/s255 nst△Bit(Bus) −45/+10 ns;t△Bit(RXD) −80/+20 ns;t△Rec −45/+15 ns(表 16)
参数集 C本版新引入190 nst△Bit(Bus) −10/+10 ns;t△Bit(RXD) −30/+20 ns;t△Rec −20/+15 ns(表 17);tprop(TXD_BUS) ≤80 ns、tprop(BUS_RXD) ≤110 ns(表 14)

参数集 C 的 190 ns tLoop 上限即”收发器延迟做小”的量化目标:配合 TDC 补偿 95 tq.min 的能力(160 MHz 下 593,75 ns),数据相位才可能跑到 5 Mbit/s 甚至更高。

工作原理

环回路径与延迟测量(sequenceDiagram)

sequenceDiagram
    autonumber
    participant C as 协议控制器
    participant TR as 收发器
    participant BUS as 总线
    Note over C,BUS: 每帧测量:FD 帧 FDF→res 隐性→显性边沿(7.3.4)
    C->>C: 发送输出启动计数器(每 tq.min 递增)
    C->>TR: TxD 发送显性 res 位
    TR->>BUS: 驱动显性电平(经 TXD→总线传播延迟)
    BUS->>TR: 显性信号传播/反射回本节点
    TR->>C: RxD 收到显性 → 计数器停止
    C->>C: 计数器值 = 测得发送器延迟 tDelay
    C->>C: SSP 位置 = tDelay + 配置的 SSP offset
    Note over C,BUS: 数据相位每个位都在 SSP 采样,与延迟的发送位比较

数据相位采样:SSP 对比”固定采样点”

flowchart TD
    A["BRS 位为隐性 → 进入数据相位(自 BRS 位采样点开始)"] --> B["发送器忽略采样点(SP)处检测的位错误"]
    B --> C["在 SSP 处把接收位与(延迟的)发送位比较"]
    C --> D{"SSP 处是否检测到位错误?"}
    D -->|"是"| E["在随后的采样点对该位错误作出反应<br/>并切回名义位时间启动错误帧(图 30)"]
    D -->|"否"| F["继续数据相位;CRC 界定符首位采样点处数据相位结束"]
    F --> G["切回仲裁相位,恢复经典采样点(图 35)"]

TDC 补偿的是延迟的大小;它无法补偿延迟的变化——这正是收发器传播延迟对称性与环回延迟稳定性重要的原因。数据相位末端、SSP 落入仲裁相位的位禁用位错误检测,避免把仲裁相位的合法显性位误判为错误。

发送器延迟超过一个数据位时间的情况(图 34)

标准给出的示例位流 [A 至 K] 中,发送器延迟几乎两个数据位时间长,因此 SSP 被置于从发送器延迟起至位开始后三个数据位时间之间的范围,即输入信号预期已稳定的位置;此时接收位流中的位要与延迟两个数据位时间的发送位流比较:SSPA 处接收位 AR 与延迟发送位 A₂ 比较,以此类推(7.3.4)。SSP 可以位于发送位结束之后。

对设计的意义

  • 对控制器(嵌入式):数据相位 ≥ 2 Mbit/s(位时间 ≤ 500 ns < 1000 ns)时必须使能 TDC,并按收发器数据手册的环回延迟设置 SSP offset;启用 TDC 时预分频 m 必须为 1 或 2;TDC 开关、偏移步长与寄存器名因控制器而异,以控制器数据手册为准。
  • 对收发器(模拟 IC):ISO 11898-2:2024 的参数集 C 环路延迟 tLoop 最大 190 ns(TXD→CAN_H/CAN_L 传播延迟 ≤ 80 ns,CAN_H/CAN_L→RXD ≤ 110 ns,表 17/14);参数集 A/B 的 tLoop 最大 255 ns——收发器把环回延迟做小、做对称、做稳定,控制器才能把 SSP 算准,这是”为什么 CAN FD 收发器需要更低的传播延迟与更好的对称性”的直接原因。
  • 对系统:数据相位位时间 ≤ 1000 ns 时应使用 TDC;若 Sync+Prop+PS1 之和短于 PCS→PMA→PCS 传播延迟则必须使用(7.3.4)。

常见误区

  • 误区一:“TDC 补偿的是采样点本身” —— TDC 补偿的是发送器延迟(环回延迟),采样推迟到 SSP = 测得延迟 + SSP offset;补偿对象是延迟的大小,不是采样时刻的任意后移。
  • 误区二:“TDC 在所有速率下都生效” —— 只在数据相位生效,仲裁相位(仲裁竞争、ACK)仍用经典采样点;且仅当 BRS 位为隐性时用于 FD 帧数据相位(7.3.4)。
  • 误区三:“SSP 位置是固定配置的百分比” —— SSP 位置 = 每帧实测延迟 + 配置 offset,是动态测量 + 静态偏移的组合;SSP offset 才是可配置参数(1-160 tq.min)。
  • 误区四:“延迟测量用 BRS 位边沿” —— 测量边沿是 FD 帧的 FDF→res 位(隐性→显性),不是 BRS 位;测量在每帧进行,结果应用于同一帧的数据相位(7.3.4)。
  • 误区五:“TDC 使能后采样点处的位错误检测照常” —— 恰恰相反:启用 TDC 时发送器忽略采样点处检测的位错误,改在 SSP 处比较、在随后采样点反应(7.3.4)。

参见