2. SerDes核心架构:PCS层与PMA层划分,TX/RX通路基本模块介绍
做SerDes验证这些年,我见过不少新人一上来就盯着协议文档猛看,结果越看越晕。其实说白了,SerDes的核心架构就两大块:PCS层和PMA层。这两层分工非常明确,就像工厂里的流水线——PCS负责“包装”数据,PMA负责“运输”数据。今天咱们就把这两层拆开揉碎了讲清楚。
2.1 PCS层与PMA层:谁该干什么?
先问个问题:为什么要把SerDes分成两层?
我个人习惯这样理解——PCS(物理编码子层)是数字逻辑的活儿,负责编解码、对齐、加扰这些“脑力劳动”;PMA(物理介质接入层)是模拟电路的活儿,负责串并转换、时钟恢复、驱动这些“体力劳动”。
我在项目中遇到过好几次这样的情况:验证环境里PCS的仿真跑得飞快,一到PMA就卡住。为什么?因为PMA涉及模拟行为,仿真速度慢得让人抓狂。所以后来我们做验证时,通常会把PCS和PMA分开验证,最后再联调。
核心划分原则:
- PCS层:处理并行数据,工作频率较低,但逻辑复杂
- PMA层:处理串行数据,工作频率极高,但功能相对固定
你想想看,PCS层跑在几百兆赫兹,PMA层跑在几十吉赫兹。如果混在一起验证,时间尺度差了两个数量级,调试起来简直要命。
2.2 TX通路:数据是怎么发出去的?
TX通路,说白了就是把并行数据变成串行数据,再怼到线上去。咱们从上往下捋一遍。
2.2.1 PCS TX:数据包装车间
PCS TX的输入通常是来自MAC层的并行数据,比如32位或64位宽。它要做几件事:
- 8B/10B或64B/66B编码:把数据变成直流平衡的码流。嗯,这里要注意,编码不是随便加的,它保证了信号在传输过程中不会出现长串的0或1,否则时钟恢复会出问题。
- 加扰(Scrambling):把数据打乱,避免频谱能量集中。我记得有一次调试,发现EMI超标,最后定位到是加扰多项式没配对。
- 对齐标记插入:在数据流里插入特殊的对齐字符,方便接收端找到边界。
我的经验:验证PCS TX时,最容易被忽略的是“编码违例”场景。比如故意给8B/10B编码器输入非法数据,看它会不会报错。很多芯片流片回来才发现这个坑。
2.2.2 PMA TX:信号发射器
PMA TX拿到PCS送来的并行数据后,做两件事:
- 并串转换:用高速时钟把并行数据一位一位地串行输出
- 预加重/去加重:补偿传输线的损耗,让信号在远端还能被正确识别
这里有个关键点:PMA TX的时钟是PLL产生的,频率极高。我建议验证时一定要检查PLL的锁定时间和抖动指标,这两个参数直接决定了芯片能不能正常工作。
2.3 RX通路:数据是怎么收进来的?
RX通路比TX复杂得多。为什么?因为TX是自己发数据,一切可控;RX是从线上把被噪声污染的信号恢复出来,难度大了一个数量级。
2.3.1 PMA RX:信号还原车间
PMA RX的输入是来自传输线的微弱模拟信号。它要做:
- 均衡(Equalization):补偿高频损耗,把眼图睁开。CTLE和DFE是两种常用方案。
- 时钟数据恢复(CDR):从数据流里提取出时钟,然后用这个时钟去采样数据。CDR是SerDes的灵魂模块,没有它,一切都白搭。
- 串并转换:把高速串行数据转回并行数据,送给PCS。
避坑指南:我曾经在验证CDR时犯过一个低级错误——只测了理想输入条件下的锁定时间,没测有抖动的情况。结果芯片回来后,在真实链路上CDR频繁失锁。后来我学乖了,验证CDR一定要加抖动注入,而且抖动幅度要覆盖协议规范的上限。
2.3.2 PCS RX:数据解码车间
PCS RX拿到PMA送来的并行数据后,做反向操作:
- 对齐标记检测:找到数据流的边界
- 解码:把8B/10B或64B/66B编码还原成原始数据
- 解扰:恢复加扰前的数据
- 弹性缓冲:处理PCS时钟和PMA时钟之间的频率差异
弹性缓冲是个容易出问题的地方。两个时钟域之间哪怕有几十ppm的频率差,时间长了也会导致缓冲区溢出或下溢。我建议验证时一定要做“时钟频率拉偏”测试,把PCS时钟和PMA时钟的频率差调到极限值,看弹性缓冲能不能扛住。
2.4 整体架构图
下面这张图是我自己画的,把TX/RX通路的核心模块串起来了。你看一眼就能明白数据是怎么流动的。
2.5 验证要点总结
最后,我把这些年做SerDes验证踩过的坑和心得整理成一张表,你直接拿去用:
| 模块 | 验证重点 | 常见陷阱 |
|---|---|---|
| PCS TX | 编码正确性、加扰多项式、对齐标记插入 | 编码违例场景遗漏 |
| PMA TX | PLL锁定时间、抖动指标、预加重幅度 | 只测理想条件,忽略PVT变化 |
| PMA RX | CDR锁定范围、均衡器收敛速度 | 不加抖动注入,CDR失锁测不到 |
| PCS RX | 弹性缓冲深度、对齐检测容错 | 时钟频率拉偏测试不充分 |
我的建议:做SerDes验证,一定要先理解“数据流”。你闭上眼睛能想象出数据从MAC层出发,经过PCS编码、PMA串化、传输线、PMA恢复、PCS解码,最后回到MAC层的完整路径。每一步的延迟、带宽、错误处理机制都要心里有数。这样写出来的验证用例才有针对性。
嗯,PCS和PMA的划分就讲到这里。下一节咱们会深入PCS层的核心模块——8B/10B编码器,看看它到底是怎么工作的,以及验证时有哪些坑等着你。
公众号:蓝海资料掘金营,微信deep3321