1. Retimer与Redriver概述

各位硬件工程师朋友,大家好。今天咱们来聊聊高速串行链路里两个绕不开的器件——Retimer和Redriver。

说实话,我刚入行那会儿,也经常把这两个东西搞混。有一次项目赶进度,我随手选了个Redriver,结果链路跑不起来,折腾了两天才发现是信号质量的问题。从那以后,我对这两个家伙的定位就特别上心了。

什么是Retimer?

Retimer,中文叫“重定时器”。它干的事情,说白了就是——把进来的信号重新“洗”一遍,再发出去

怎么洗的呢?它内部有个时钟数据恢复(CDR)电路,先把输入信号里的时钟提取出来,然后用这个干净的时钟重新采样数据,最后再发出去。这样一来,信号里的抖动(jitter)就被大大消除了。

Retimer的核心能力:

  • 恢复时钟,消除随机抖动
  • 重新生成数据,改善眼图
  • 支持协议层功能(如PCIe的链路训练)

我个人的习惯是,如果链路长度超过30英寸,或者中间有连接器、线缆,我基本会优先考虑Retimer。因为它能从根本上解决信号质量问题,而不是“凑合着用”。

什么是Redriver?

Redriver,中文叫“重驱动器”。它做的事情就简单多了——把进来的信号放大一下,再发出去

它没有CDR电路,也不做时钟恢复。它只是把信号的幅度抬一抬,或者做一些简单的均衡(EQ),让信号能传得更远一点。说白了,它就是个“信号放大器”。

Redriver的核心能力:

  • 补偿传输损耗
  • 改善信号幅度
  • 低延迟(因为没有CDR)

嗯,这里要注意:Redriver不处理抖动。它只是把信号放大,但抖动也跟着放大了。所以如果信号本身抖动就很大,用Redriver反而可能让情况更糟。

两者在高速串行链路中的角色定位

咱们用一张图来直观理解一下:

Retimer vs Redriver 角色定位 发送端 传输损耗 Redriver 仅放大信号 仍有抖动 接收端 路径一:Redriver方案 路径二:Retimer方案 发送端 Retimer CDR+重新生成 干净信号 接收端 对比 Redriver: 低延迟 低成本 不消除抖动 Retimer: 高延迟 消除抖动 支持协议

从这张图可以看得很清楚:

  • 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的内部架构,看看它到底是怎么把信号“洗”干净的。


专注资料整理