1. Retimer与Redriver概述
各位硬件工程师朋友,大家好。今天咱们来聊聊高速串行链路里两个绕不开的器件——Retimer和Redriver。
说实话,我刚入行那会儿,也经常把这两个东西搞混。有一次项目赶进度,我随手选了个Redriver,结果链路跑不起来,折腾了两天才发现是信号质量的问题。从那以后,我对这两个家伙的定位就特别上心了。
什么是Retimer?
Retimer,中文叫“重定时器”。它干的事情,说白了就是——把进来的信号重新“洗”一遍,再发出去。
怎么洗的呢?它内部有个时钟数据恢复(CDR)电路,先把输入信号里的时钟提取出来,然后用这个干净的时钟重新采样数据,最后再发出去。这样一来,信号里的抖动(jitter)就被大大消除了。
Retimer的核心能力:
- 恢复时钟,消除随机抖动
- 重新生成数据,改善眼图
- 支持协议层功能(如PCIe的链路训练)
我个人的习惯是,如果链路长度超过30英寸,或者中间有连接器、线缆,我基本会优先考虑Retimer。因为它能从根本上解决信号质量问题,而不是“凑合着用”。
什么是Redriver?
Redriver,中文叫“重驱动器”。它做的事情就简单多了——把进来的信号放大一下,再发出去。
它没有CDR电路,也不做时钟恢复。它只是把信号的幅度抬一抬,或者做一些简单的均衡(EQ),让信号能传得更远一点。说白了,它就是个“信号放大器”。
Redriver的核心能力:
- 补偿传输损耗
- 改善信号幅度
- 低延迟(因为没有CDR)
嗯,这里要注意:Redriver不处理抖动。它只是把信号放大,但抖动也跟着放大了。所以如果信号本身抖动就很大,用Redriver反而可能让情况更糟。
两者在高速串行链路中的角色定位
咱们用一张图来直观理解一下:
从这张图可以看得很清楚:
- Redriver 就像个“扩音器”,声音大了,但杂音也跟着大了。
- Retimer 就像个“翻译官”,把话重新说一遍,清晰又干净。
什么时候用Redriver?什么时候用Retimer?
我给大家总结几个实际场景:
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 板内短距离(<15英寸) | Redriver | 损耗小,Redriver足够补偿 |
| 板间长距离(>30英寸) | Retimer | 需要消除抖动,保证信号质量 |
| 有连接器/线缆 | Retimer | 连接器会引入阻抗不连续和抖动 |
| 对延迟敏感(如存储) | Redriver | Retimer的CDR会引入几个UI的延迟 |
| PCIe Gen4/Gen5 | Retimer | 协议要求链路训练,Redriver不支持 |
小技巧: 我个人习惯在原理图设计阶段,先留一个Retimer的封装位置。如果调试时发现Redriver不够用,可以直接换上Retimer,不用改板子。这招救过我不少次。
注意: 千万不要以为Redriver和Retimer可以随便互换。有些协议(比如PCIe)明确要求必须用Retimer才能完成链路训练。我曾经见过一个项目,用Redriver替代Retimer,结果链路死活训练不成功,最后只能重新打板。
总结一下
Retimer和Redriver,说白了就是两种不同的信号补偿方案:
- Redriver:简单、便宜、低延迟,但治标不治本。
- Retimer:复杂、贵、有延迟,但能从根本上解决问题。
选哪个,取决于你的链路长度、协议要求、成本预算。没有绝对的好坏,只有合不合适。
好了,这一章就到这里。下一章咱们聊聊Retimer的内部架构,看看它到底是怎么把信号“洗”干净的。