第二章:SerDes核心架构——发送端、接收端与通道

大家好,我是老周。今天咱们聊聊SerDes的核心架构。说白了,就是把高速数据从芯片A搬到芯片B的那套系统。我做了十几年高速接口设计,每次跟新人聊这个,我都会说:你先把发送端、接收端和通道这三块搞明白,后面的事就好办了。

2.1 发送端:Serializer与PLL

发送端负责两件事:串行化和时钟生成。嗯,这里要注意,这两个功能是绑在一起的。

2.1.1 Serializer(串行器)

Serializer的作用很简单——把并行的N位数据转成1位串行流。比如你有个32位宽的数据总线,时钟频率是100MHz,Serializer会把它变成3.2Gbps的串行数据。

我个人习惯把Serializer想象成一个「数据漏斗」。并行数据从宽口进去,串行数据从窄口出来。这个漏斗的「流速」由PLL提供的时钟决定。

关键点:Serializer的位宽和速率决定了SerDes的总体吞吐量。公式很简单:
总速率 = 并行位宽 × 并行时钟频率

我在项目中遇到过一个问题:Serializer的时序裕量不够。当时用的是28nm工艺,3.2Gbps的速率,结果发现串行器的最后一级触发器setup time总是不满足。后来怎么解决的?嗯,加了一级流水线,把关键路径拆开了。

2.1.2 PLL(锁相环)

PLL是发送端的「心脏」。它负责生成高频时钟,驱动Serializer工作。你想想看,如果没有PLL,你怎么从100MHz的参考时钟得到3.2GHz的串行时钟?

PLL的核心结构包括:

  • 鉴频鉴相器(PFD):比较参考时钟和反馈时钟的相位差
  • 电荷泵(CP):把相位差转换成电流
  • 环路滤波器(LF):滤除高频噪声
  • 压控振荡器(VCO):产生高频时钟
  • 分频器(Divider):把高频时钟分频后反馈回去

避坑指南:我曾经在PLL的环路带宽选择上吃过亏。带宽太宽,抖动大;带宽太窄,锁定时间长。一般建议环路带宽取参考时钟频率的1/10到1/20。

PLL的输出抖动直接影响SerDes的眼图质量。我记得有一次调试,眼图总是闭合的,查了半天发现是PLL的电源噪声太大。后来加了LDO单独供电,问题就解决了。

2.2 接收端:CDR与De-serializer

接收端是SerDes的「大脑」。它要从串行数据流中恢复出时钟和数据,然后并行化输出。

2.2.1 CDR(时钟数据恢复)

CDR是SerDes设计中最难的部分。为什么?因为发送端和接收端没有独立的时钟线,接收端必须从数据流中「提取」时钟。

CDR的工作原理:

  1. 检测数据信号的跳变沿
  2. 用本地VCO产生一个与数据速率同步的时钟
  3. 用这个时钟对数据进行重采样

说白了,CDR就是一个「时钟跟踪器」。它要保证采样时钟的相位始终对准数据眼图的中心。

注意:CDR的锁定时间很重要。如果锁定时间太长,系统上电后要等很久才能开始通信。我见过一个项目,CDR锁定时间需要500μs,结果客户要求100μs以内,最后只能重新设计环路参数。

CDR的架构主要有两种:

  • 基于PLL的CDR:结构简单,但锁定范围窄
  • 基于相位插值器的CDR:锁定范围宽,但功耗大

我个人更倾向于用相位插值器架构。虽然功耗大一点,但灵活性好。你想想看,如果数据速率从1Gbps变到10Gbps,基于PLL的CDR可能就锁不住了,但相位插值器架构只需要调整分频比就行。

2.2.2 De-serializer(解串器)

De-serializer是Serializer的逆过程。它把1位串行数据流转回N位并行数据。这里有个关键点:De-serializer需要知道数据的「字边界」在哪里。

举个例子:如果发送端发送的是32位并行数据,接收端怎么知道第1位是哪个?这就需要字对齐机制。通常的做法是在数据流中插入特定的对齐码(比如K码),接收端检测到对齐码后就知道了字边界。

经验之谈:我建议在De-serializer后面加一个FIFO,用来处理跨时钟域的问题。因为CDR恢复的时钟和系统时钟是异步的,不加FIFO的话,数据很容易丢失。

2.3 通道(Channel)

通道是连接发送端和接收端的物理介质。可以是PCB走线、同轴电缆、光纤等。通道的质量决定了SerDes能跑多快、多远。

2.3.1 通道的损耗特性

通道的主要损耗来源:

  • 趋肤效应:高频电流集中在导体表面,等效电阻增大
  • 介质损耗:PCB板材的介电损耗随频率升高而增大
  • 反射:阻抗不连续导致的信号反射

我记得有一次做10Gbps的SerDes设计,通道长度只有20cm,但眼图就是打不开。后来用TDR(时域反射计)一测,发现过孔处的阻抗只有40Ω,而设计要求是50Ω。这就是反射导致的。

避坑指南:我曾经在通道设计上犯过一个低级错误——忽略了连接器的损耗。PCB走线设计得很好,但连接器选型不对,结果高频分量全被衰减了。从那以后,我每次做通道仿真都会把连接器模型加进去。

2.3.2 均衡技术

既然通道有损耗,那就要想办法补偿。常用的均衡技术包括:

  • 发送端均衡(FFE):在发送端预加重高频分量
  • 接收端均衡(CTLE/DFE):在接收端放大高频分量或消除码间干扰

你想想看,通道就像一个低通滤波器,高频分量被衰减了。FFE就是在发送端把高频分量提前放大,让信号经过通道后高低频分量差不多。CTLE则是在接收端做一个高通滤波器,把高频分量补回来。

关键点:均衡器的阶数决定了补偿能力。阶数越高,补偿效果越好,但功耗和复杂度也越大。一般10Gbps以下的SerDes用3-5阶就够了,25Gbps以上可能需要10阶以上。

2.4 核心架构总览

好了,咱们把三个部分串起来看。下面这张图展示了SerDes的核心架构:

SerDes核心架构框图 发送端 并行数据输入 N位 @ 100MHz Serializer 串行化 PLL 时钟生成 串行数据 通道 PCB走线/电缆 损耗特性 均衡补偿 FFE/CTLE/DFE 阻抗匹配 50Ω/100Ω 衰减信号 接收端 CDR 时钟数据恢复 De-serializer 解串行化 并行数据输出 N位 @ 100MHz 图:SerDes发送端 → 通道 → 接收端 核心架构

从图中可以看到,数据从发送端的并行输入开始,经过Serializer变成串行数据,再通过PLL生成的时钟驱动发送出去。串行数据经过通道的衰减和畸变后,到达接收端。接收端的CDR从数据中恢复出时钟,然后用这个时钟对数据进行重采样,最后通过De-serializer转回并行数据。

嗯,这就是SerDes的核心架构。说白了,就是「并→串→传→收→串→并」这么个过程。但每个环节都有很多坑,后面几章咱们会一个一个地讲。

总结一下:

  • 发送端:Serializer负责串行化,PLL负责生成高频时钟
  • 接收端:CDR负责从数据中恢复时钟,De-serializer负责解串行化
  • 通道:物理介质,有损耗,需要均衡补偿

这三个部分缺一不可。任何一个环节出问题,整个链路就废了。

可可精品资料库