第二章:SerDes核心架构——PCS层与PMA层详解、CDR原理、串行器与解串器结构

好,咱们直接切入正题。SerDes这玩意儿,说白了就是一把“数据梳子”。你把一堆并行的慢速数据塞进去,它给你梳成一根线上的高速串行流;到了对端,再给你还原回来。听起来简单?嗯,里面的门道可不少。

我个人习惯把SerDes的架构分成两大块来理解:PCS层(物理编码子层)和PMA层(物理介质接入层)。你可以把PCS想象成“翻译官”,负责把数据整理成适合高速传输的格式;PMA则是“运动员”,负责真正的物理信号收发。这两层配合不好,项目就得翻车。

PCS 层 8B/10B 编码/解码 对齐 & 加扰 通道绑定 时钟补偿 PMA 层 串行器 (Serializer) 解串器 (Deserializer) 时钟数据恢复 (CDR) TX/RX 模拟前端 并行数据 并行数据 串行差分信号

2.1 PCS层:数据的“翻译官”

PCS层处理的是数字逻辑域的事情。它不关心电压高低,只关心0和1。它的核心任务,就是把你的并行数据“包装”成适合在高速链路上传输的格式。

2.1.1 8B/10B编码

这是PCS层最经典的编码方式。为什么需要它?你想想看,如果一串数据全是0,接收端怎么知道什么时候开始、什么时候结束?8B/10B编码把每8位数据映射成10位码字,保证了足够的跳变沿。说白了,就是强制让数据“动起来”。

核心作用: 保证DC平衡(直流平衡),提供足够的时钟信息,便于接收端恢复时钟。

我在项目中遇到过一个问题:某次调试时,链路偶尔会丢包。查了半天,发现是8B/10B编码后的码字中,连续相同位的长度超标了。嗯,后来换了个编码表就解决了。这种坑,你不实际调一次,光看文档是学不到的。

2.1.2 对齐与加扰

对齐,就是让接收端知道“码字的边界在哪里”。通常靠发送特定的逗号字符(K码)来实现。加扰呢?是为了避免数据中出现重复模式,导致频谱能量集中。我个人习惯在加扰器后面再加一个解扰器,这样能有效降低EMI。

避坑指南: 我曾经在加扰多项式选择上吃过亏。如果多项式阶数太低,加扰效果不好;太高了,硬件资源又扛不住。一般选16阶或23阶的PRBS多项式,比较稳妥。

2.2 PMA层:物理世界的“运动员”

PMA层处理的是模拟信号。它负责把PCS层送来的并行数据,变成高速串行比特流,再通过差分对发送出去。反过来,接收端把微弱的差分信号放大、恢复时钟、再变成并行数据。

2.2.1 串行器与解串器结构

串行器(Serializer)的核心,就是一个高速移位寄存器。PCS层送来的N位并行数据,在高速时钟驱动下,一位一位地移出去。解串器(Deserializer)则相反,它把串行数据一位一位收进来,拼成N位并行数据。

这里有个关键点:时钟域转换。PCS层用的是低速并行时钟,PMA层用的是高速串行时钟。这两个时钟必须严格同步,否则数据就乱了。我见过不少新手,直接把两个时钟域的数据硬连,结果跑起来全是毛刺。

// 串行器简化逻辑(Verilog风格)
always @(posedge clk_serial) begin
    if (load_en) begin
        shift_reg <= parallel_data;  // 加载并行数据
    end else begin
        shift_reg <= {shift_reg[0], shift_reg[1:WIDTH-1]}; // 移位输出
    end
end
assign serial_out = shift_reg[0];
注意: 实际芯片中的串行器不是这么简单的移位寄存器。它用了树形结构或MUX树来降低功耗和延迟。但理解原理,从这个小模型开始就够了。

2.3 时钟数据恢复(CDR)原理

CDR是整个SerDes里最精妙的部分,也是调试中最容易出问题的地方。它的任务,就是从串行数据流中提取出时钟信号,并用这个时钟去采样数据。

为什么需要CDR?因为发送端和接收端没有独立的时钟线。数据里本身就嵌着时钟信息。CDR要做的,就是把这个时钟“挖”出来。

2.3.1 CDR的三种架构

架构类型 原理 优缺点
锁相环型(PLL-based) 用PLL锁定数据边沿 抖动性能好,但锁定时间长
延迟锁定环型(DLL-based) 用延迟线调整采样相位 锁定快,但抖动抑制差
过采样型(Oversampling) 用多相时钟采样,投票决定 实现简单,但功耗高

我个人最常用的是PLL型CDR。虽然锁定时间稍长,但抖动性能好。在10Gbps以上的链路中,抖动是头号杀手。你想想看,一个UI(单位间隔)才100ps,稍微抖一下,采样点就偏了。

2.3.2 CDR的锁定过程

CDR锁定分为两步:频率锁定相位锁定。频率锁定阶段,CDR先把自己的振荡频率调整到接近数据速率。相位锁定阶段,它再精细调整采样点位置,让采样点落在数据眼的正中央。

关键指标: CDR的环路带宽。带宽太宽,会引入高频噪声;太窄,又跟不上数据速率的变化。一般建议环路带宽是数据速率的1/1000到1/500。

我记得有一次调试,链路在高温下频繁失锁。查了半天,发现是CDR的环路滤波器电容温度特性不好。换了个C0G材质的电容,问题就解决了。嗯,这种细节,原理图上是看不出来的。

2.4 实战中的PCS与PMA交互

PCS和PMA不是孤立的。它们之间有一组控制信号,比如:

  • TX/RX_CLK:并行时钟,由PMA产生,PCS使用
  • TX/RX_DATA:并行数据总线
  • TX/RX_CTRL:控制信号,标识数据是普通数据还是控制码
  • RX_PMA_RDY:PMA层准备好信号

调试时,我习惯先看PMA层的状态。如果PMA没锁定,PCS层再折腾也没用。反过来,如果PMA锁定了但数据还是错的,那问题大概率出在PCS层的编码或对齐上。

调试小技巧: 我曾经用示波器看PMA输出的差分信号,发现眼图很干净,但数据就是不对。后来用逻辑分析仪抓了PCS层的并行数据,才发现是8B/10B解码表配置错了。所以,分层调试,事半功倍。

2.5 本章小结

SerDes的核心架构,说白了就是PCS做“翻译”,PMA做“搬运”。CDR是PMA的灵魂,串行器/解串器是PMA的骨架。理解这些,你就能看懂大部分SerDes芯片的数据手册了。

嗯,下一章我们会深入PMA的模拟电路细节,包括差分信号、预加重、均衡等。但今天先把架构吃透,地基打牢了,后面才盖得起高楼。


专注资料整理