PCIe CDR(Clock Data Recovery-时钟数据恢复)解析
一、CDR核心定位
PCIe属于无随路时钟的高速串行SerDes总线 :链路里只有差分数据线,没有单独走线传输发送端时钟 ;收发双方仅各自本地持有100MHz REFCLK参考晶振,CDR就是接收端的专用硬件电路,直接从收到的串行数据跳变边沿里,实时提取、锁定发送端的时钟相位与频率,实现收发精准同步,是PCIe物理层最核心的模块之一。
对比HDMI ACR:HDMI有独立TMDS时钟线+N/CTS参数算时钟;CDR完全不靠专线时钟、不靠明文参数,纯从数据码流本身恢复时钟。
二、PCIe CDR的前置基础:本地REFCLK的作用
很多人会误解"CDR不需要时钟",纠正关键点:
- 收发两端各自板上有100MHz差分REFCLK(HCSL电平) ,这个时钟只在本地芯片内部使用,不会通过PCIe线缆/走线传给对端;
- 发送端:用REFCLK输入PLL倍频出高速串行速率(Gen3:100MHz×80=8GT/s),生成串行数据流;
- 接收端:本地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编码专门做了约束:
- Gen1/Gen2用8b/10b编码:每10bit码流强制保证足够多0/1跳变,不会出现连续很多位0或1,给CDR提供充足边沿用于锁定;
- 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
-
时钟来源
CDR:时钟信息100%嵌入串行数据边沿,无跨链路时钟专线;
-
同步机制
CDR:硬件闭环实时动态相位跟踪,持续自适应调整;
;
-
服务范围
CDR:PCIe全链路所有数据、配置、控制信号的收发同步基础;
-
频差补偿方式
CDR靠环路微调VCO频率+SKP有序集辅助;
-
抗抖动特性
CDR天生适配高速链路复杂抖动环境;
-
CDR环路带宽是关键参数:带宽太高易被噪声干扰失锁,带宽太低跟踪不上扩频/大抖动,PCIe各代协议严格规定了CDR环路带宽范围;
-
接收端成功恢复的时钟,不仅用于采样数据,也用于本地解码、解扰、协议层时序对齐,是整个PCIe接收通路的时序基准。