CDR时钟数据恢复

PCIe CDR(Clock Data Recovery-时钟数据恢复)解析

一、CDR核心定位

PCIe属于无随路时钟的高速串行SerDes总线:链路里只有差分数据线,没有单独走线传输发送端时钟;收发双方仅各自本地持有100MHz REFCLK参考晶振,CDR就是接收端的专用硬件电路,直接从收到的串行数据跳变边沿里,实时提取、锁定发送端的时钟相位与频率,实现收发精准同步,是PCIe物理层最核心的模块之一。

对比HDMI ACR:HDMI有独立TMDS时钟线+N/CTS参数算时钟;CDR完全不靠专线时钟、不靠明文参数,纯从数据码流本身恢复时钟。

二、PCIe CDR的前置基础:本地REFCLK的作用

很多人会误解“CDR不需要时钟”,纠正关键点:

  1. 收发两端各自板上有100MHz差分REFCLK(HCSL电平),这个时钟只在本地芯片内部使用,不会通过PCIe线缆/走线传给对端
  2. 发送端:用REFCLK输入PLL倍频出高速串行速率(Gen3:100MHz×80=8GT/s),生成串行数据流;
  3. 接收端:本地REFCLK给CDR电路提供工作基准频率,CDR在此基准上微调相位/频率,跟踪发送端真实时钟,不是凭空产生时钟。

三、CDR内部核心组成(硬件电路模块)

典型PCIe SerDes CDR由5部分闭环构成:

1. 边沿检测模块

持续采样 incoming 差分串行数据,捕捉数据0/1跳变的边沿时刻,提取相位误差信息;

2. 相位检测器(PD)

对比「本地振荡时钟相位」和「数据边沿相位」,输出差值电压:

  • 本地时钟超前数据边沿 → 输出负误差;
  • 本地时钟滞后数据边沿 → 输出正误差;

3. 环路滤波器(LF,低通滤波)

滤除信号里的高频噪声、随机抖动,输出平滑的控制电压给下一级,避免环路频繁误调整;

4. 压控振荡器(VCO)

根据滤波后的电压微调自身输出时钟的相位和频率,输出和发送端时钟实时对齐的恢复时钟

5. 相位插值器/分频器

把VCO高频时钟分频到数据采样频率,输出给接收端采样器,用最优相位去抓取每一位数据(眼图中心采样,误码率最低)。

整体是闭环负反馈系统:不断对比相位→修正本地时钟→对齐发送端时钟,持续动态锁定。

四、CDR工作的前提条件:编码约束(PCIe 8b/10b、128b/130b)

CDR不能识别长时间无跳变的直流电平,所以PCIe编码专门做了约束:

  1. Gen1/Gen2用8b/10b编码:每10bit码流强制保证足够多0/1跳变,不会出现连续很多位0或1,给CDR提供充足边沿用于锁定;
  2. Gen3及以上用128b/130b编码:同样做跳变密度约束;

若码流长时间无跳变,CDR丢失边沿参考,环路失锁,链路直接报错恢复训练。

五、三种PCIe时钟架构下CDR的不同工作模式

1. CC公共时钟架构(独显最常用)

RC主机、EP显卡共用同源100MHz REFCLK,两端基准频率几乎一致;
CDR只做微小相位跟踪补偿,几乎不用大范围调整频率,环路压力最小、稳定性最好,这也是标准PC独显只兼容CC模式的核心原因。

2. SRNS独立参考无扩频

两端各自独立晶振,总频差最大600ppm;
CDR既要跟踪相位,还要持续小幅微调频率抵消晶振频差,同时依靠发送端插入/删除SKP有序集缓冲微小速率差,辅助CDR稳定锁定。

3. SRIS独立参考独立扩频(Gen4+)

两端REFCLK各自开SSC扩频(±0.5%速率波动),频差波动范围极大;
要求CDR环路带宽适配扩频速率,快速动态跟踪频率波动,仅高端嵌入式/线缆场景使用,消费级显卡不兼容。

六、CDR的两大核心能力(解决实际传输痛点)

1. 补偿传输链路抖动

PCIe走线、接插件、AC耦合电容都会引入随机抖动、周期性抖动,CDR实时跟随数据边沿偏移,始终在眼图最中心采样,大幅降低误码率;

2. 抵消收发两端晶振频差

即使两端REFCLK有ppm级频率偏差,CDR通过VCO频率微调长期跟踪对齐;频差超出CDR跟踪范围时,链路进入Recovery恢复状态重训练协商速率。

七、CDR

  1. 时钟来源
    CDR:时钟信息100%嵌入串行数据边沿,无跨链路时钟专线;

  2. 同步机制
    CDR:硬件闭环实时动态相位跟踪,持续自适应调整;

  3. 服务范围
    CDR:PCIe全链路所有数据、配置、控制信号的收发同步基础;

  4. 频差补偿方式
    CDR靠环路微调VCO频率+SKP有序集辅助;

  5. 抗抖动特性
    CDR天生适配高速链路复杂抖动环境;

  6. CDR环路带宽是关键参数:带宽太高易被噪声干扰失锁,带宽太低跟踪不上扩频/大抖动,PCIe各代协议严格规定了CDR环路带宽范围;

  7. 接收端成功恢复的时钟,不仅用于采样数据,也用于本地解码、解扰、协议层时序对齐,是整个PCIe接收通路的时序基准。

CDR如何使用恢复时钟获取串行数据

先纠正一个常见字面误解:

PCIe CDR 并没有从数据流里解析出一个独立的、物理的时钟信号导线
“恢复时钟(recovered clock)”本质:接收端本地产生、经过CDR环路动态调准相位的采样时钟,直接供给采样触发器去抓取串行数据比特。
在这里插入图片描述

整体硬件链路(PI‑CDR,Gen3+)

串行差分数据 Dp/Dn
     ↓
CTLE模拟均衡,补偿信道损耗
     ↓
┌─────────────────────────────────────┐
│ DFF(Main)  ←─【恢复时钟‑Main相位】◄──┐  ← PI相位插值器输出,这就是recovered clock
│ DFF(Early) ←─【恢复时钟‑Early相位】◄──┤
│ DFF(Late)  ←─【恢复时钟‑Late相位】◄──┘
└───────┬─────────────┬───────────────┘
        │             │
  Main输出比特     Early/Late输出只给鉴相PD
        │
   解串器 Deserializer(串转并)
        │
   弹性Buffer → 128b/130b译码

三组时钟来自同一个PI,只是相位互相偏移;只有Main的DFF输出真正业务数据;Early/Late只做相位误差检测,不输出有效数据。

步骤拆解:恢复时钟采集数据完整过程

1. 本地生成原始高频时钟

RX的PLL/VCO,基于板载100MHz参考晶振倍频,生成接近符号速率的多相时钟。
这个原始VCO时钟相位是自由运行的,还没有对齐发送端数据流,不能直接采样数据。

2. CDR环路不断校准采样时钟相位(得到“恢复时钟”)

  1. Early/Main/Late三个DFF,用当前PI输出时钟同时采样输入串行流;
  2. PD鉴相器对比三组采样结果,得到相位误差:Early / On‑Time / Late
  3. 环路滤波器(P+I)计算PI控制字;
  4. 相位插值器PI整体旋转整套采样时钟的相位,把Main采样时刻挪向眼图中心(比特UI中间,远离跳变边沿)

经过环路闭环校准之后,这一套PI输出时钟,就叫做恢复时钟 recovered clock
⚠️VCO本身振荡相位不变;只是PI改变送给采样DFF的时钟相位。

3. 使用恢复时钟捕获数据比特

D触发器(DFF)规则:时钟上升沿(或下降沿)时刻,锁存D输入端的电平,输出Q

  • 串行数据D端一直在0/1翻转;跳变边沿是不稳定区域,不能采样
  • 眼图中间一段窗口,电平稳定,是安全采样点;
  • CDR的目标:让恢复时钟Main沿,精确落在UI的眼图中心
  • Main‑DFF在恢复时钟边沿瞬间,锁存此刻数据线上的电平:得到比特 0 或者 1。

这就是“用恢复时钟获取数据”的物理行为:
不是拿一个提取出来的外部时钟,而是用调好了相位的本地时钟,在正确瞬间对串行数据做锁存采样。

4. 频偏下持续正确采样(SRIS场景重点)

收发晶振存在ppm级频偏:本地VCO和发送端符号速率不完全相等。
物理现象:
输入数据流相对本地VCO时钟会缓慢滑动,Main采样点会慢慢向比特边沿漂移。

  • I(积分)通路持续缓慢调整PI相位,抵消这个缓慢滑动;
  • 一旦采样窗口靠近边沿,P通路介入快速拉回眼中心;
  • 恢复时钟的采样相位动态跟随数据流滑动,保证Main始终踩在眼中间,持续采到正确比特。

形象比喻:
数据流是传送带(发送端速率);本地VCO是电机(接收端固有速率,转速略有差异);
CDR不改变电机转速,但是不停微调采样拍照时刻,让“拍照(Main时钟沿)”始终拍传送带物品的中间,而不是接缝(跳变沿)。

5. 采样之后:时钟域分离,弹性缓冲介入

Main‑DFF输出的比特,属于恢复时钟域(相位跟随输入数据流,平均速率受发送端影响)。
而芯片内部数字逻辑跑在本地参考时钟域(固定来自板载晶振)。

因为SRIS频偏,两个时钟域存在微小速率差,比特会慢慢多出来/缺失。

  • CDR只保证每一个比特采样值正确
  • 弹性缓冲Elastic Buffer + SKP有序集:做插入/删除SKP字符,消化速率差,完成跨时钟域,把数据交给上层链路层。

两个极易混淆的误区

误区1:CDR从数据里“提取出一个时钟信号”,再用这个时钟采样

❌错误。
✅真相:没有提取出物理时钟线。全部时钟源头都是RX本地VCO/PLL;CDR只修正采样时钟的相位,寻找最佳采样时刻。“恢复时钟”是逻辑概念,指经过相位闭环校准后的本地采样时钟。

误区2:Bit‑Lock锁定,代表本地VCO频率等于发送端波特率

❌错误,尤其SRIS模式。
✅真相:VCO可以和发送端存在几千ppm频偏;依靠PI持续旋转相位补偿相位累积,Main采样点相对数据保持位置正确,VCO本身频率不需要对齐。

对比2‑sample 和3‑sample对获取数据的影响

  • 2‑sample BB‑PD:Main依然负责采样数据;但存在极限环振荡,Main恢复时钟相位来回小幅抖动,眼裕量被消耗;
  • 3‑sample BB‑PD:增加Early/Late采样点仅用于鉴相;Main采样数据通路完全不变;只是鉴相器可以输出On‑Time,抑制恢复时钟本身的相位抖动,采样更稳定。

极简时序例子(1UI)

UI边界(跳变沿)                    UI边界(跳变沿)
     ↓                              ↓
     |        眼图中间               |
     |  Early   Main    Late        |
─────●───────●────────●─────────────
            ↑
        恢复时钟Main边沿在这里触发DFF锁存,读取正确比特

PCIe Scrambling 扰码(加扰/解扰)

PCIe Gen3/Gen4/Gen5/Gen6 强制开启扰码;Gen1/Gen2可选关闭。

注意:PCIe物理层是 128b/130b编码 + 自同步扰码(Self‑synchronous Scrambler),是EMI、DC平衡、保证足够跳变沿给CDR**。

-## 为什么一定要扰码(Scrambling)
如果没有扰码:业务数据很容易出现长连0、长连1(连续很多bit不变)

  1. 缺少跳变沿 → CDR鉴相器PD拿不到相位误差信息,CDR容易失锁;
  2. 出现大量连续相同电平,直流不平衡(DC wander),交流耦合AC‑couple通道电容会充放电,基线漂移,眼图变差;
  3. 重复周期性数据会产生尖锐EMI辐射尖峰,干扰系统。

扰码把原始数据做伪随机打散:

  • 打破长0长1,保证频繁电平跳变,喂给CDR足够边沿;
  • 改善DC平衡;
  • 把频谱摊平,压低EMI尖峰;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值