做芯片或FPGA相关项目的朋友,一定躲不开SerDes这个话题。不管你是负责系统架构、数字逻辑、模拟版图,还是做硬件测试,总会在一份接口手册或一次需求对齐时遇到“SerDes IP”这个词。很多新人刚接手这类项目,拿到一份几百页的SerDes规格书常常一头雾水:眼图模板怎么看、CDR是什么、PMA和PCS各管哪一段、要不要选带均衡的版本……这篇文章就把这些最基础、最绕不开的概念理一遍。我会用做项目时最常用的说法和判断逻辑来拆解,覆盖SerDes IP是什么、内部大体结构、一条链路从发送到接收到底经历了什么,以及真正做选型和调试时该盯住哪几个关键点。不管是刚开始接触高速接口的验证工程师,还是准备把高速串行链路集成进系统板的硬件工程师,这篇都能给你一个相对完整的框架。
我最早接触SerDes是从一块FPGA开发板开始的,当时要跑一个高速数据回传的Demo,板子自带SerDes接口,但我其实并不清楚刚发出去的并行数据是怎么变成一对差分信号、又是怎么在收端完整恢复的。后来陆续做了好几个和高速串行接口相关的项目,踩过不少坑,才把这里面的逻辑串起来。这篇文章就是以一个从业者的视角,聊聊我觉得新人最该先搞清楚的那几个SerDes IP核心概念。
1. 为什么现在都在谈SerDes:从并行总线到高速串行
1.1 并行传输的瓶颈在哪里
早年芯片之间传数据,最直接的想法就是多拉几根线,比如32位数据总线加时钟、加控制信号,一齐翻转、一齐采样。这种并行接口在较低速率下很好用,PCB布线也不算太难。但当速率往上提,问题就接踵而至:几十根线要保证相互之间等长,不然信号在不同时间到达接收端,采样窗口就对不齐;并行总线里的时钟要精确分配到每个接收端,高速下时钟偏移就会吃掉大部分时序裕量;更麻烦的是几十根信号同时翻转时,电源和地平面上的同步开关噪声会被瞬间放大,眼图质量肉眼可见地变差。
举个实际例子,曾经有一版系统板,尝试做32位并行DDR接口跑到几百兆赫兹,结果只要跑高温老化测试,就偶尔传错一个字节。排查到最后发现,帧同步头老是丢在特定数据模式上——本质就是某个信号线的过冲影响了相邻线的判断,而且那块板的回流路径设计也不够讲究。那之后我就特别能理解,为什么行业宁可牺牲一点延迟也要转到高速串行——并行接口在速率和功耗上的天花板太明显了。
1.2 串行传输用什么换取了优势
并行把噩梦甩给了PCB布线和同步时序,串行则把问题集中在了一对差分线上。SerDes的核心思路就是把本来并行发出的数据,在发送端按位拆开,通过一对或者几对差分信号高速送出去,接收端再把这些比特恢复并重新拼成并行数据。这样做最直接的好处就是引脚数量急剧下降。比如一个本来要上百引脚的并行接口,换了SerDes之后可能十几对差分就够了,这在小封装、多通道系统里是巨大的优势。
当然,串行传输有代价,最大的代价是接收端必须自己从数据里恢复采样时钟,也就是所谓CDR,还要处理长走线带来的高频损耗。为了缓解这些损耗,发送端要加均衡、接收端要加均衡,这些都是后话。所以与其说SerDes是对并行总线的全面替代,不如说是“把工程问题集中到一个点上解决”的方案——而那一个点,恰恰可以从IP层面做得非常极致。
1.3 SerDes IP是怎么来的
对于大多数系统公司而言,很少有人真从晶体管级去设计高速收发器。串行传输涉及的模拟前端、锁相环、时钟恢复、均衡算法,每一块都需要长时间工艺迭代和硅片验证。于是就有了“IP化”:把经过验证的SerDes做成可复用的模块,以硬核或软核方式授权给下游芯片和FPGA用户。老做FPGA的人都知道,芯片手册里那一组高速收发器,就是集成了厂商的SerDes IP,对外提供协议无关的物理层能力;而做ASIC时,则往往直接选某家IP厂商的SerDes,软核配参数,硬核直接布局到特定位置。
这种IP化对行业最大的改变,是让不具备高速模拟设计能力的团队也能造出带高速接口的芯片,也让系统级项目可以从算法和应用层面去创新,而不是被物理层细节绑死。但反过来,也因为SerDes以IP黑盒形式出现,很多使用者遇到问题时往往只能对着寄存器调试,反而更需要对基础概念有清醒认识。
2. SerDes的核心模块构成:从CDR到均衡器
2.1 总体框架:PCS和PMA各管哪一段
如果翻开任何一款SerDes IP的用户指南,大概率会看到两个高频缩写:PCS(物理编码子层)和PMA(物理介质接入子层)。这两个词听起来很高大上,拆开看其实很清晰。PCS偏“数字逻辑”,负责编码、解码、扰码、对齐、字节打包等数据层面的处理;PMA则偏“模拟硬核”,负责高速串行数据的收发模拟前端、锁相环、时钟数据恢复。有些IP文档里还会细分出PMA再往上叫“PMD”之类,但大致上PCS在靠近逻辑侧,PMA在靠近引脚侧。
调试的时候,这个划分非常有用。比如链路出现误码,第一步就先确认PMA端的信号质量,再看PCS端有没有对齐和编码错误。如果把二者混在一起排查,往往会绕远路。我见过一个项目,误码率一直降不下来,一开始怀疑数字逻辑修了很多天,后来用示波器测PMA输出眼图,发现上升沿有严重过冲,原来是某组电源滤波没做好——这就是典型的把PCS和PMA问题混为一谈了。
2.2 发送端:并行转串行与预加重
发送端的核心动作是并行转串行,同时做好驱动和信号整形。低速并行数据进入PMA后,经过并转串逻辑,变成高速比特流。这个过程中,发送端还需要一个高速时钟,通常由片内PLL基于外部参考时钟产生。很多IP的发送端会在输出驱动电路上做预加重或者去加重处理,目的是补偿信道的高频损耗。
预加重的本质其实是在发射端人为调整不同比特序列下的摆幅。当你连续发多个相同的比特时,降低一点幅度,而在发生跳变的那个比特上加大幅度,这样接收端看到的高频分量相对增强,配合接收端均衡器就能拿到更干净的眼图。对于板级走线比较长的场景,发送端必须打开一定级别的均衡,否则接收端再厉害也救不回来。
2.3 接收端:核心是CDR
接收端最核心的模块是CDR,也就是从数据流里恢复采样时钟。串行数据没有独立的时钟线,接收端只能利用数据本身的跳变沿来“跟踪”时钟。CDR内部一般由一个鉴相器、一个环路滤波器和一个可控振荡器组成闭环,数据跳变沿不断纠正本地采样时钟的相位,使之稳定锁定在数据眼图中心附近。
实际调试时,CDR的锁定裕量非常关键。如果数据边缘抖动严重,CDR会很难稳定在最佳采样点;如果上游参考时钟频偏太大,CDR的相位跟踪也容易失锁。所以要评估一个SerDes通道的好坏,不光看幅度、看眼高,还要看抖动和CDR追踪能力。有的IP调试工具里会有CDR锁定状态和相位裕量寄存器,这些参数值得重点记录。
2.4 接收端的均衡器:CTLE与DFE
均衡器是SerDes接收端的另一大核心,因为我们常面对的信道不是理想导线,而是有趋肤效应和介质损耗的传输线。信号经过长距离传输,高频分量衰减得很厉害,码间干扰就会加重。接收端均衡器的作用就是“补偿”信道,把信号恢复成接近原始的样子。
最常见的两种均衡结构是线性均衡器CTLE和判决反馈均衡器DFE。CTLE相当于一个模拟高通滤波器,对高频做增益提升;DFE则是利用之前判决出来的比特,对当前比特的干扰进行反馈消除。很多IP接收端会把CTLE和DFE配合使用:CTLE先把大趋势拉平,DFE再抠细节。调试时,如果发现长尾干扰比较重,DFE抽头数往往比CTLE的峰值增益更管用。当然,均衡参数不能盲目调大,DFE调节过头可能会放大噪声,反而让误码率上升。
3. 一个SerDes链路从头到尾的工作流程
3.1 从并行数据到差分线上的比特流
要真正理解SerDes,最好走一遍全链路。假设发送端逻辑要发出一个32位并行数据字。在PCS层,这个数据字先根据协议做编码,比如常见的8B/10B编码,把8位数据变成10位码字,这样做可以保证数据流里有足够多的跳变沿,也方便接收端做DC平衡。编码之后的数据还会经过扰码器打散频谱,避免出现长串连0或连1。然后这些并行码字进入PMA,被并转串逻辑按位取出,最后由发送驱动器和预加重电路送上差分引脚。
如果这时候用示波器接在发送端出来的一端看,会看到很小的差分信号,摆幅通常只有几百毫伏。很多人第一眼会怀疑这是不是信号太弱了。其实这正是高速串行链路的特点——低摆幅、高速率、差分方式,靠的是整体链路、端接和接收端放大恢复,而不是单靠大幅度信号。
3.2 信道传输过程中信号会发生什么
差分对在PCB上从发送芯片走到接收芯片,会经历高频损耗、反射、串扰。损耗主要来自铜箔的趋肤效应和板材的介质损耗,频率越高衰减越严重。反射则源于阻抗不连续,比如过孔换了参考层、连接器阻抗不匹配,甚至一只端接电阻的排布位置都会带来反射。串扰则是相邻信号之间的能量耦合,尤其在高密度板卡里,通道间距不够时很容易出现。
这也是为什么高速设计非常强调叠层、走线阻抗和过孔回流。做系统集成时,如果SerDes通道不稳定,第一怀疑对象往往就是PCB走线,而不是IP本身。我曾经调试一个高密度背板项目,某个通道的误码率总是比别人高好几个数量级,最后发现原因很简单:那对差分线旁边有一条控制信号的走线,高频串扰刚好落在SerDes接收频段内。重新调整布线后,问题彻底消失。
3.3 接收端如何恢复原始数据
接收端引脚收到微弱且受损的差分信号后,先经过模拟前端做放大,再通过CTLE和DFE进行均衡,然后送入CDR。CDR锁定后,按恢复出的时钟不断采样得到一串比特。之后这些比特通过解串逻辑还原成并行数据,进入PCS层做对齐、解码、去扰码,最终恢复出发送端发出的并行数据字。
所谓“链路建连成功”,其实就是这条双向通路里的发送、传输、接收都能在误码率指标内正常工作。在调试一个真实链路时,我习惯先在PMA层看信号质量,再做PCS层的数据比对。只要PMA眼图合格,PCS逻辑基本不会有太大问题;反过来,如果PCS层老是对齐失败,但PMA眼图看起来没问题,那就要回到时钟和协议配置上去查原因。
4. 工程实战:IP选型与关键参数决策
4.1 先定协议还是先定速率
做SerDes相关项目时,我遇到最多的问题就是“到底该选哪家的IP”。一个很常见的误区是先纠结品牌,再去定指标。实际上第一步永远是定协议和数据速率。你打算跑以太网、PCIe、JESD204B还是自定义协议?不同协议不仅定义物理层参数,还决定PCS层的编码方式和链路训练机制。比如以太网常常用64B/66B编码,PCIe在较高数据速率下有专门的加扰和链路训练,它们对CDR、均衡和时钟精度的要求各不相同。
数据速率也决定了很多物理层细节。做10G等级的系统,通常CTLE加简单的DFE就够了;一旦跑到50G甚至更高,各种高阶均衡、PAM4调制、前向纠错都得安排上。这里我拿某模拟项目X举例:需求是传输8路ADC数据到后端FPGA,每路速率不到1G。当时评估了几种方案,直接用低速LVDS还得布很多对线,引入协议开销又大。后来决定使用一对或多对SerDes以自定义协议跑,速率压在2G左右每通道,IP选型就轻量得多,功耗也低,整体系统成本下降很明显。
4.2 通道数怎么定
通道数由总吞吐量和单通道速率共同决定。假设系统需要20Gbps的有效吞吐,如果用单通道10G,则两个通道加上协议开销基本够用;如果用单通道5G,那就需要更多通道,否则速率不足。但通道数不是越多越好,每一对SerDes通道都对应引脚、功耗和PCB面积。而且多通道之间的串扰和电源噪声会随密度上升,BER(误码率)测试时经常能看出来。
很多SerDes IP支持通道绑定或链路聚合,可以把多个通道集中起来当一个大带宽通道用。但这会引入通道间对齐问题,PCS层必须做偏斜补偿。实际项目里,如果单通道速率能覆盖需求,尽量别为了省一个通道去搞复杂的绑定,那是给自己增加调试成本。
4.3 功耗和面积是硬约束
SerDes IP的功耗通常和速率、通道数、均衡处理复杂度强相关。功耗估算别只看手册里的静态值,一定要结合具体速率档位和均衡模式,看最差情况下的数值。散热设计时,多通道高速SerDes可能占据整个芯片功耗的四分之一甚至更多,这在系统里必须提前算进热预算。
面积方面,硬IP一般按“每个通道占多大多大”来算。如果是ASIC项目,还要注意SerDes放置的位置,因为它需要靠近封装引脚、需要特定的电源区和模拟隔离区。很多新手拿到IP文档之后只管逻辑集成,到了布局布线阶段才发现PMA的位置放不下或者和数字逻辑冲突了,返工成本非常大。所以选型和面积评估一定要尽早做。
4.4 参考时钟怎么选
SerDes的参考时钟是整个发送和接收时钟Synth的源头,对抖动特性极为敏感。一般来说,需要选择低抖动、频率准确的参考时钟源。常见做法是给SerDes一个独立的干净时钟源,避免和系统里别的时钟混在一起。某个项目里,参考时钟来自板上一个质量一般的锁相环输出,结果在误码测试时发现抖动偏大,最后不得不单独加了一颗高精度晶振,误码指标才恢复正常。
参考时钟的频率像SerDes的“心跳基准”。具体选什么频率要看IP手册和所跑的协议,有的IP可以接受几个不同频点,自动做倍频。比如某IP支持从25MHz到156.25MHz多种参考频率,选哪种更影响系统时钟树设计。我的经验是,能用整数倍频关系尽量别用小数倍频,小数PLL一旦没配好,杂散往往很难处理。
4.5 选软核还是硬核
软核和硬核的区别体现在授权方式、使用限制和验证难度上。硬核是经过硅验证的固定布局版本,性能和功耗已经确定,做集成时近似当黑盒用,风险相对低,但灵活性有限;软核则是更偏RTL的可配置实现,灵活度高,但模拟部分往往还得依赖某种硬核或者仿真模型,实际性能需要自己验证。
对于大多数系统公司,高速SerDes基本都是选硬核,因为模拟部分太难自己保证性能。FPGA里的SerDes就是这种模式,外面给出一堆寄存器配置,但底层是固定电路。即便是硬核,也需要仔细读文档里的上电时序、复位序列和初始化要求,这方面踩坑概率反而比较高。
5. 常见疑难杂症与排查技巧实录
5.1 误码率测试总是压不下去
这是最典型的SerDes问题,出现场景往往是一整块板子,几个通道,有一个或者几个通道的BER就是达不到指标。排查思路我一般分三步。第一步检查物理层:用示波器测量接收端引脚处的眼图,确认幅度、上升时间和眼宽是否在合理范围;如果波形很糟,优先看PCB走线、过孔和连接器。第二步看均衡配置:试着调整CTLE或DFE的档位,观察BER是否有明显变化,很多情况下是均衡参数没设到位,或者设太高放大了噪声。第三步查参考时钟和电源:用频谱分析仪看参考时钟附近有没有杂散,电源纹波是否过大——一个看起来极小的电源纹波都可能通过CDR调制到数据上。
5.2 CDR失锁或频繁重锁
CDR失锁的典型表现是接收端完全收不到有效数据,或者链路时好时坏。先别急着怀疑IP本身,看看上游数据源是否稳定——比如上游发送端的参考时钟抖动过大、数据流中跳变沿过少、数据速率偏差超限,都可能导致CDR无法锁定。不少SerDes IP提供CDR锁定检测寄存器,调试时可以不断读取锁定状态,同时用示波器观察数据边沿抖动。如果抖动来源是电源,解决方式往往是增加电源滤波,甚至调整电源层叠结构。
还有一个容易被忽略的点:复位顺序。有些IP要求CDR必须在特定复位时序之后才能开始锁定,如果软件复位序列不标准,CDR状态机可能永远进不了锁定状态。
5.3 协议建不了链时怎么查
如果SerDes只是跑自定义回环,收发都通,但一上行协议就建不了链,问题多半在PCS层配置或协议所需的链路训练过程。比如PCIe的LTSSM有严格状态转移要求,配置错误或参考时钟偏差到一定程度都会导致卡在某个状态。调试时可以抓取PCS层错误计数器和训练状态寄存器,观察它到底卡在哪个环节。
以太网类协议更要留意自动协商和对端能力,有些时候链路对端的均衡能力和本地不匹配,也会造成建链失败。这时候即使是物理层通过,协议层也可能反复重启。我的惯用方法是,先用手动固定模式把链路速率定死,排除自动协商干扰,再用内部回环验证PCS逻辑,最后再放到真实对端去联调。
5.4 通道间偏斜和一致性问题
多通道系统中,各通道走线长度不可能完全一致,PCS层需要对齐通道。出现数据乱序或者通道间错位时,重点看IP是否提供了对齐标记机制,比如有序集合或特殊字符,这些标记就是用来做通道对齐的。调试时,如果发现对齐经常失败,往往不是逻辑问题,而是某个通道物理信号质量太差,导致对齐标记不能被识别。
多通道的一致性还涉及每通道的均衡参数。即使是同一批次SerDes,通道间工艺偏差和布线差异也会导致最佳均衡参数不完全相同。有些IP支持每通道独立配置,建议在批量测试后记录各通道的最优参数,再做统一固化,这样可以显著提升量产后的稳定性和一致性。
5.5 信号完整性测试的注意事项
测试SerDes信号质量,眼图是绕不开的。使用示波器测试时有几点经验:探头尽量短,避免额外负载造成失真;测试点尽量靠近芯片引脚,避免走线效应让波形更差;示波器带宽至少是数据速率的三倍以上,否则高频分量测不出来。条件允许的话,使用芯片内部的回环测试功能,配合软件工具读取均衡后的眼图信息,往往比示波器测量更接近真实接收端视角。
还有一个隐藏问题:示波器探头和测试夹具本身可能引入反射,测到的眼图比实际更差。很多芯片都有内置的PRBS发生器,可以从发送端发出标准测试码型,再在接收端统计误码,这种做法配合外部示波器,能把“芯片实际接收能力”和“外部信号质量”分开评估,定位问题就快很多。
6. 一些实战心得与补充提示
6.1 不要把SerDes当成普通IO来用
很多项目的坑,都是从“先弄通硬件、再去了解SerDes”开始的。SerDes和普通GPIO、并行接口最大的不同在于,它从设计之初就需要考虑阻抗、回流、通道损耗和电源完整性。随便拿普通IO去接高速差分信号,很容易出现信号质量问题的隐患。硬件设计时,差分走线通常需要精确控制阻抗,过孔要尽量少,且要预留足够的地回流过孔,电源去耦也要格外用心。在原理图阶段就把这些问题规划好,后面调试会省下大量时间。
6.2 文档里哪些内容最值得精读
SerDes IP手册动辄几百上千页,没必要全读,但有几个部分必须精读。一是上电和复位时序,搞不清这一步,后面跑起来可能一直行为异常;二是寄存器映射里和链路测试、环回、误码统计相关的部分;三是参考时钟的频率和抖动要求,这是很多系统规划容易忽略的硬指标。把这些吃透,基本就能应付大多数应用场景。
6.3 内部回环测试到底怎么用
内部回环是验证链路和排查问题的利器。所谓近端回环,就是发送端数据经过一小段内部路径直接回到接收端,不经过外部引脚;远端回环则是数据到达对端芯片后,通过它内部路径再回来。近端回环保证PCS/PMA逻辑功能正常,远端回环保证整条链路和对面芯片的收发通道都正常。调试时,先跑近端回环,再跑远端回环,一旦某一步不通过,就能很快把问题收敛到具体模块。
不过回环测试也有局限,它绕过了外部PCB通道,不能完全代替真实信号质量的测试。所以该用的场景要用,但测完回环之后依然要做底层误码测试和眼图评估,不能因为回环全通就认为整条链路都妥了。
6.4 量产测试与一致性保障
任何SerDes设计都要考虑量产可测性。测试项一般包括每个通道的误码率、参考时钟频率精度、通道间一致性和电源电流值。为了保证量产稳定性,设计阶段就要预留测试点和配置接口,有些IP支持通过边界扫描或专用测试模式来做快速验证。量产中如果发现某一片的SerDes通道无法锁定或者误码超标,优先检查焊接质量、板材加工异常和时钟晶体,如果都正常再考虑IP配置参数是否被固化错了。
根据我的经验,很多量产问题在样机阶段根本暴露不出来,原因就在于样机阶段人工调参干预太多。尽早用测试脚本统一跑一批板卡,记录每个通道的最佳参数范围,再用这个数据反推设计裕量,能明显降低量产后返工的风险。
SerDes IP这个东西,表面看是芯片设计里的一个模块,实际上牵扯到协议、信号完整性、电源、时钟、PCB工艺和软件驱动,任何一个环节出问题都会让最终系统表现打折。回头再看那些基础概念,PCS和PMA的划分、CDR的原理、均衡器的作用,其实都是为了一件事:让高速比特流在真实物理信道上尽可能可靠地传输。搞懂了这些,再看任何SerDes手册或者调试日志,心中会有清晰得多的地图。希望这篇浅谈能对刚开始接触SerDes的朋友有点实际帮助。